Формула в функции 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д