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

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

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

Помогите решить, не могу понять, как запихнуть
//Применить в функции
// 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;
}
Выходные данные: 1000000000000000000000000000

Решение задачи: «Формула в функции 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;
}

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

  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
Похожие ответы