Как правильно заменить cout, чтобы получилась программа на чистом Си - C (СИ)
Формулировка задачи:
Нужно переписать этот код, чтобы числое Си получилось, помогите, пожалуйста, куча ошибок вылазит..
int big_printer(const big_number a){
big_number d,de,acop,r;
big_copy(a,&acop);
to_big(10,&d);
unsigned int k[10241];
int t;
t=0;
while(big_is_zero(acop)==0){
big_div(acop,d,&r,&de);
k[t]=de.num[0];
big_div(acop,d,&de,&r);
big_copy(de,&acop);
t++;
}
if(a.sign!=1){
cout<<"-";
}
for(int i=t;i>=1;i--){
cout<<k[i-1];
}
cout<<endl;
return 0;
}Добавлено через 3 минуты 18 секунд
сейчас сделала так, но по-моему что-то не то...
int big_printer(const big_number a){
big_number d,de,acop,r;
unsigned int k[10241];
int t, i;
big_copy(a,&acop);
to_big(10,&d);
t=0;
while(big_is_zero(acop)==0){
big_div(acop,d,&r,&de);
k[t]=de.num[0];
big_div(acop,d,&de,&r);
big_copy(de,&acop);
t++;
}
if(a.sign!=1){
printf("-");
}
for(i=t;i>=1;i--){
printf("%d", k[i-1]);
}
return 0;
}Решение задачи: «Как правильно заменить cout, чтобы получилась программа на чистом Си»
textual
Листинг программы
int big_printer(const Big_number a){
Big_number d, de, acop, r;
unsigned int k[10241];
int t;
big_copy(a, &acop); /* должна быть объявлена выше */
to_big(10, &d); /* должна быть объявлена выше */
for (t = 0; !big_is_zero(acop); t++) { /* должна быть объявлена выше */
big_div(acop, d, &r, &de); /* должна быть объявлена выше */
k[t] = de.num[0];
big_div(acop, d, &de, &r);
big_copy(de, &acop);
}
if (a.sign != 1)
putchar('-');
while (--t >= 0)
printf("%d", k[t]);
return 0;
}
Объяснение кода листинга программы
Этот код на языке Си выполняет вычисления с большими числами и выводит результат на консоль. Вот список действий, которые он выполняет:
- Создает переменные
d,de,acop,rиtдля хранения чисел и индексов. - Копирует значение переменной
aв переменнуюacop. - Создает число
dравное 10. - Начинает цикл, который продолжается, пока число
acopне станет равным нулю. - Делит
acopнаdи сохраняет частное в переменнойr, а остаток в переменнойde. - Сохраняет значение
deв массивеkс индексомt. - Делит
acopнаdи сохраняет частное в переменнойde, а остаток в переменнойr. - Копирует значение
deвacop. - Увеличивает значение
tна 1. - Если знак числа
aравен 1, то выводит-, иначе ничего не выводит. - Пока значение
tбольше или равно 0, выводит значение массиваkс индексомt. - Возвращает 0, чтобы указать, что программа успешно завершилась.