Получить сумму двух длинных натуральных чисел. Каждое число представлено стеком (информационная часть элементов стека - одна цифра числа ). Результат представлен односвязным линейным списком, информационная часть его элементов аналогична информационной части элемента стека.
На языке программирования С++
(кодом сразу пожалуйста)
Другие языки программирования и технологии
Помогите написать код для программы...
#include <iostream>
#include <forward_list>
#include <ctime>
using namespace std;
void CreateStack(forward_list <char> &S)
{
char dmin = 1;
int n = rand() % 61 + 10;
for (int i = 0; i < n; i++)
{
char d = rand() % (10 - dmin) + dmin;
cout << static_cast <int> (d);
S.push_front(d);
dmin = 0;
}
cout << endl;
}
void Add(forward_list <char> &S1, forward_list <char> &S2, forward_list <char> &L)
{
char sum = 0;
while (!S1.empty() || !S2.empty())
{
char a = 0, b = 0;
if (!S1.empty())
{
a = *S1.begin();
S1.pop_front();
}
if (!S2.empty())
{
b = *S2.begin();
S2.pop_front();
}
sum += a + b;
L.push_front(sum % 10);
sum /= 10;
}
if (sum)
L.push_front(sum);
}
void WriteList(forward_list <char> &L)
{
for (forward_list <char> ::const_iterator i = L.begin(); i != L.end(); ++i)
cout << static_cast <int> (*i);
}
int _tmain(int argc, _TCHAR* argv[])
{
srand(static_cast <unsigned> (time(NULL)));
forward_list <char> Stack1, Stack2, List;
setlocale(LC_CTYPE, "Russian");
cout << "Первое слагаемое: " << endl;
CreateStack(Stack1);
cout << "Второе слагаемое: " << endl;
CreateStack(Stack2);
Add(Stack1, Stack2, List);
cout << "Сумма: " << endl;
WriteList(List);
List.clear();
cin.get();
return 0;
}
#include <forward_list>
#include <ctime>
using namespace std;
void CreateStack(forward_list <char> &S)
{
char dmin = 1;
int n = rand() % 61 + 10;
for (int i = 0; i < n; i++)
{
char d = rand() % (10 - dmin) + dmin;
cout << static_cast <int> (d);
S.push_front(d);
dmin = 0;
}
cout << endl;
}
void Add(forward_list <char> &S1, forward_list <char> &S2, forward_list <char> &L)
{
char sum = 0;
while (!S1.empty() || !S2.empty())
{
char a = 0, b = 0;
if (!S1.empty())
{
a = *S1.begin();
S1.pop_front();
}
if (!S2.empty())
{
b = *S2.begin();
S2.pop_front();
}
sum += a + b;
L.push_front(sum % 10);
sum /= 10;
}
if (sum)
L.push_front(sum);
}
void WriteList(forward_list <char> &L)
{
for (forward_list <char> ::const_iterator i = L.begin(); i != L.end(); ++i)
cout << static_cast <int> (*i);
}
int _tmain(int argc, _TCHAR* argv[])
{
srand(static_cast <unsigned> (time(NULL)));
forward_list <char> Stack1, Stack2, List;
setlocale(LC_CTYPE, "Russian");
cout << "Первое слагаемое: " << endl;
CreateStack(Stack1);
cout << "Второе слагаемое: " << endl;
CreateStack(Stack2);
Add(Stack1, Stack2, List);
cout << "Сумма: " << endl;
WriteList(List);
List.clear();
cin.get();
return 0;
}
Дописал бы цену - получил бы ответ.
А на халяву бездельникам помогать неинтересно.
А на халяву бездельникам помогать неинтересно.
Похожие вопросы
- Помогите написать код на C++
- Помогите написать в QBasic программу-фильтр! У МЕНЯ ЗАЧЕТ!!!
- Помогите написать код на C++
- Помогите написать алгоритм и программу на фортране
- Помогите написать код на C++
- Надо написать код в программе делфи
- Помогите написать код =)
- Как удалить нулевые элементы из массива C++. Помогите написать код для того чтобы из массива удалить все нулевые элементы
- Помогите написать код на с++
- Помогите написать код для VBA