Формула в функции c указателем - C (СИ)
Формулировка задачи:
Помогите решить, не могу понять, как запихнуть
Выходные данные:
1000000000000000000000000000
//Применить в функции
// c = a + b
// char StringSum( char a, char b, char c );
The code:
char StringSum( char a, char b, char c );
int main(int argc, char* argv[])
{
char strNumA[] = "999888777666555444333222111";
char strNumB[] = "111222333444555666777889";
char strResult[255];
char *strRes;
strRes = StringSum ( strNumA, strNumB, strResult );
printf( "%s\n", strRes );
return 0;
}Решение задачи: «Формула в функции c указателем»
textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#include <string.h>
char *StringSum(char *a, char *b, char *c)
{
int cLen = 254;
int aLen = strlen(a);
int bLen = strlen(b);
memset(c,'0',cLen);
c[cLen] = '\0';
int i,j;
for(i = 0;aLen - i - 1 >= 0 && bLen - i - 1 >= 0; i++)
{
int tmp = a[aLen - i - 1] + b[bLen - i - 1] + c[cLen - i - 1] - 3*'0';
c[cLen - i - 1] = tmp % 10 + '0';
c[cLen - i - 2] = tmp / 10 + '0';
}
for(j = 0; j < i; j++)
c[j] = c[cLen - i + j - 1];
c[j] = '\0';
return c;
}
int main()
{
char strNumA[] = "999888777666555444333222111";
char strNumB[] = "111222333444555666777889";
char strResult[255];
char *strRes;
strRes = StringSum ( strNumA, strNumB, strResult );
printf( "%s\n", strRes);
getch();
return 0;
}
Объяснение кода листинга программы
- В функции
StringSumпроисходит сложение трех строк:a,bиc. - Переменная
cLenинициализируется значением 254, а затем используется для выделения памяти под строкуcс помощью функцииmemset. - Переменные
aLenиbLenинициализируются значениями строкaиbсоответственно с помощью функцииstrlen. - Переменная
iиспользуется в циклах для обработки символов строкaиb. - Внутри циклов происходит вычисление суммы символов
a[i],b[i]иc[i]. - Полученная сумма округляется с помощью деления на 10 и записывается в
c[i]. - Если длина полученной суммы больше
i, то оставшиеся символы переносятся в начало строкиcс помощью циклаforво время инициализацииj. - В конце функции возвращается полученная строка
c. - В функции
mainсоздаются строкиstrNumAиstrNumB, которые передаются в функциюStringSumвместе со строкойstrResult. - Результат работы функции
StringSumвыводится на экран с помощью функцииprintf. - Функция
getchиспользуется для приостановки выполнения программы до нажатия клавиши. - Программа завершается с возвратом значения 0.