Формула в функции c указателем - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите решить, не могу понять, как запихнуть
Листинг программы
  1. //Применить в функции
  2. // c = a + b
  3. // char StringSum( char a, char b, char c );
  4. The code:
  5. char StringSum( char a, char b, char c );
  6. int main(int argc, char* argv[])
  7. {
  8. char strNumA[] = "999888777666555444333222111";
  9. char strNumB[] = "111222333444555666777889";
  10. char strResult[255];
  11. char *strRes;
  12. strRes = StringSum ( strNumA, strNumB, strResult );
  13. printf( "%s\n", strRes );
  14. return 0;
  15. }
Выходные данные: 1000000000000000000000000000

Решение задачи: «Формула в функции c указателем»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <string.h>
  4.  
  5. char *StringSum(char *a, char *b, char *c)
  6. {
  7.     int cLen = 254;
  8.     int aLen = strlen(a);
  9.     int bLen = strlen(b);
  10.     memset(c,'0',cLen);
  11.     c[cLen] = '\0';
  12.    
  13.     int i,j;
  14.     for(i = 0;aLen - i - 1 >= 0 && bLen - i - 1 >= 0; i++)
  15.     {
  16.         int tmp = a[aLen - i - 1] + b[bLen - i - 1] + c[cLen - i - 1] - 3*'0';
  17.         c[cLen - i - 1] = tmp % 10 + '0';
  18.         c[cLen - i - 2] = tmp / 10 + '0';
  19.     }  
  20.     for(j = 0; j < i; j++)
  21.         c[j] = c[cLen - i + j - 1];
  22.     c[j] = '\0';
  23.     return c;
  24. }
  25.  
  26. int main()
  27. {
  28.     char strNumA[] = "999888777666555444333222111";
  29.     char strNumB[] = "111222333444555666777889";
  30.     char strResult[255];
  31.     char *strRes;
  32.  
  33.     strRes = StringSum ( strNumA, strNumB, strResult );
  34.  
  35.     printf( "%s\n", strRes);
  36.     getch();
  37.     return 0;
  38. }

Объяснение кода листинга программы

  1. В функции StringSum происходит сложение трех строк: a, b и c.
  2. Переменная cLen инициализируется значением 254, а затем используется для выделения памяти под строку c с помощью функции memset.
  3. Переменные aLen и bLen инициализируются значениями строк a и b соответственно с помощью функции strlen.
  4. Переменная i используется в циклах для обработки символов строк a и b.
  5. Внутри циклов происходит вычисление суммы символов a[i], b[i] и c[i].
  6. Полученная сумма округляется с помощью деления на 10 и записывается в c[i].
  7. Если длина полученной суммы больше i, то оставшиеся символы переносятся в начало строки c с помощью цикла for во время инициализации j.
  8. В конце функции возвращается полученная строка c.
  9. В функции main создаются строки strNumA и strNumB, которые передаются в функцию StringSum вместе со строкой strResult.
  10. Результат работы функции StringSum выводится на экран с помощью функции printf.
  11. Функция getch используется для приостановки выполнения программы до нажатия клавиши.
  12. Программа завершается с возвратом значения 0.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.727 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы