Создание функции в Си. прописал printf, выводит пустоту. почему

Рейтинг: -3Ответов: 1Опубликовано: 20.01.2023

я не доделал эту функцию, но компилируется без ошибок

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>

void proizvedenie(char* a, char* b, char* c);
void revers(char* str);

int main()
{
    char c[105], a[100] = "143", b[100] = "100";
    memset(c, '0', sizeof(char)*104);

    proizvedenie(a, b, c);
    printf("%s", c);

    return 0;
}



  // function revers
void revers(char* str)
{
    int n = strlen(str);
    for (int i = 0, j = n - 1; i < j; i++, j--)
    {
        char ch = str[i];
        str[i] = str[j];
        str[j] = ch;
    }
}   

//function proizvedenie
        void proizvedenie(char* a, char* b, char* c)
        {
            char a1[100], b1[100];
            strcpy(a1,a);
            strcpy(b1, b);
            char s;
            int i, ii, in_mind = 0, z = 0, dl = 0;
            revers(a1);
            revers(b1);
            printf("%s", a1);
    
        //a*b
        char ee[strlen(a1)][215];
        for (i = 0; i < strlen(a); i++)
        for (ii = 0; ii < strlen(b); i++)
        {
             z = (((a1[i] - '0') * (b1[i] - '0')) + in_mind);
            ee[i][214 - i - ii] = z % 10 + '0';
            in_mind = z/10;
        }
        c = "555";
    
        for (i = 0; i < strlen(a); i++)
        printf("%s\n", ee[i]);
    
    }

Ответы

▲ 0Принят

Во-первых, цикл по i закончится, а вложенный в него цикл по ii – нет, из-за этого внешний цикл не дойдёт до проверки значения i и тоже не сможет завершиться. А весь вывод у Вас стоит после этих циклов. Во-вторых, не вижу сдвига частичных произведений, помещающего разряд единиц частичного произведения в туже позицию, где стоит цифра множителя, на которую умножается весь другой множитель. В-третьих, строки растут вправо, а результат арифметической операции должен расти влево. Где это учтено?