Арифметические действия (длинная арифметика) - C (СИ)
Формулировка задачи:
Хай програмеры!!!!
кто может помогите мне с таким заданием:
Написать программу, которая выполняет указанные арифметические действия над двумя целыми неотрицательными числами, которые заданы в виде массива символов. Массив имеет следующее определение:
действия: деление, умножение, сложение и вычитание (выбор выполняемого действия осуществляет пользователь)
#define NLen 77 typedef char NumberType[NLen];
Решение задачи: «Арифметические действия (длинная арифметика)»
textual
Листинг программы
#include <iostream.h>
#include <Windows.h>
#include <iomanip>
#include <math.h>
#define NLen 77
typedef char NumberType[NLen];
int a, b, i;
NumberType c_a, c_b;
char c;
int main()
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
vvod1:
cout<<"Введите первое число\n";
cin>>c_a;
if(strlen(c_a)>77)
{
cout<<"Число должно быть не более 77 цифр\n";
goto vvod1;
}
vvod2:
cout<<"Введите второе число\n";
cin>>c_b;
if(strlen(c_b)>77)
{
cout<<"Число должно быть не более 77 цифр\n";
goto vvod2;
}
a=b=0;
for(i=0; i<strlen(c_a); i++)
{
a=a*10+(int)c_a[i]-48;
}
for(i=0; i<strlen(c_b); i++)
{
b=b*10+(int)c_b[i]-48;
}
cout<<"Введите знак '+', '-', '*' или '/'"<<endl;
cin>>c;
switch(c)
{
case '+':
a+=b;
break;
case '-':
a-=b;
break;
case '*':
a*=b;
break;
case '/':
a/=b;
break;
default:
cout<<"Нераспознанный знак арифметического действия"<<endl;
break;
}
cout<<"Результат: "<<a<<endl;
if(a>=pow(10,77))
cout<<"Результат более 77 цифр"<<endl;
system("pause");
return 0;
}
Объяснение кода листинга программы
- Ввод первых двух чисел, введенных пользователем, с помощью функции
cin. - Проверка длины введенных чисел с помощью функции
strlen. - Если длина числа больше 77 символов, программа выводит сообщение об ошибке и возвращает пользователя к шагу 1.
- Ввод знака арифметического действия с помощью функции
cin. - Использование оператора
switchдля выполнения выбранного арифметического действия. - Вывод результата с помощью функции
cout. - Проверка, является ли результат больше 77 цифр, с помощью функции
powи оператора сравнения>=. - Вывод сообщения, если результат больше 77 цифр, с помощью функции
cout. - Ожидание нажатия клавиши пользователем с помощью функции
system. - Возврат значения 0, чтобы указать, что программа успешно завершилась.