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