Написать функцию для поразрядного умножения длинных целых чисел, представленных строками символов, и тестирующ - C (СИ)
Формулировка задачи:
Задание :"Написать функцию для поразрядного умножения длинных целых чисел, представленных строками символов, и тестирующую программу к ней."
Написать программу разделяя исходный код на 3 файла: в файле main.cpp располагается управляющая функция main, в файле my_lab.cpp (название может отличаться) ― функции в соответствии с заданием (ввод/вывод исходных данных, основная логика задания и т.п.), а в файле my_lab.h ― прототипы функций из my_lab.cpp.
Решение задачи: «Написать функцию для поразрядного умножения длинных целых чисел, представленных строками символов, и тестирующ»
textual
Листинг программы
#include "math_test.h"
int main()
{
char input[n], output[n], input1[n], incr[n] = "1", wspom[n];
for (int i = 0; i < n; i++)
{
input[i] = '\0';
output[i] = '\0';
input1[i] = '\0';
wspom[i] = '\0';
}
puts(" entr number");
while (!zap(input))
puts("repit");
for (int i = 0; i < n; i++)
if (input[i] < '0' || input[i] >'9')
{
for (int g = i; g < n; g++)
input[g] = '\0';
break;
}
if (input[0] == '\0')
{
puts("no first multiplier");
return 0;
}
if (input[0] == '0' && input[1] == '\0')
{
puts("0");
return 0;
}
puts(" entr second multiplier");
while (!zap(input1))
puts(" repit step");
for (int i = 0; i < n; i++)
if (input1[i] < '0' || input1[i] >'9')
{
for (int g = i; g < n; g++)
input1[g] = '\0';
break;
}
if (input1[0] == '\0')
{
puts("no second multiplier");
return 0;
}
if (input1[0] == '0' && input1[1] == '\0')
{
puts("0");
return 0;
}
if (input1[0] == '1' && input1[1] == '\0')
{
puts(input);
return 0;
}
zap(input, output);
zap(incr, wspom);
while (!strcmp(wspom, input1))
{
add(output, input);
add(wspom, incr);
}
puts(output);
return 0;
}
Объяснение кода листинга программы
В этом коде представлена функция для поразрядного умножения длинных целых чисел, представленных строками символов. Список действий:
- Ввод первого множителя:
- Переменная
inputиспользуется для хранения введенного числа. - Переменная
outputиспользуется для промежуточных вычислений. - Переменная
input1используется для хранения второго множителя. - Переменная
incrиспользуется для хранения увеличения второго множителя. - Переменная
wspomиспользуется для хранения промежуточного результата.
- Переменная
- Проверка введенных данных:
- Если первый множитель пустой, выводится сообщение об ошибке и возвращается 0.
- Если второй множитель пустой, выводится сообщение об ошибке и возвращается 0.
- Очистка входных данных:
- Если введенные данные некорректны (содержат символы, которые не являются цифрами), выводится сообщение об ошибке и возвращается 0.
- Вычисление произведения:
- Используется функция
addдля поразрядного умножения чисел. - Используется функция
zapдля очистки промежуточных переменных. - Используется цикл
whileдля повторения вычислений до тех пор, пока второй множитель не изменится. - Результат выводится на экран.
- Используется функция
- Завершение программы:
- Возвращается 0, чтобы указать, что программа успешно завершилась.