Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <iostream>
- using namespace std;
- int main()
- {
- setlocale(LC_ALL, "Rus");
- cout << "Выполнил: Тозлован Денис Дмитриевич\n";
- cout << "Группа: 2309\n";
- cout << "Версия: 4.1.1\n";
- cout << "Задание: Рассматривая массивы a[1..n] и b[1..m] как последовательности цифр десятичной записи некоторых неотрицательных чисел, получить c[1..k] – аналогичное представление для суммы этих двух чисел.\n";
- fstream in1;
- in1.open("Input1_V2.txt", ios::in);
- int L1 = 0; //для подсчёта элементов массива
- int x = 0; //для ввода из файла
- if (in1.is_open()) {
- while (in1.peek() != EOF) {
- in1 >> x;
- L1++;
- }
- }
- else {
- cout << "Ошибка чтения файла\n";
- }
- in1.clear();
- in1.close();
- int* a = new int[L1 > 0 ? L1 : 1]{ 0 };
- in1.open("Input1_V2.txt", ios::in);
- if (L1 > 0 && in1.is_open()) {
- x = 0;
- while (in1.peek() != EOF) {
- in1 >> *(a + x);
- x++;
- }
- }
- else if (L1 == 0) {
- cout << "Файл не содержит элементов\n";
- }
- in1.clear();
- in1.close();
- in1.open("Outup1_V2.txt", ios::out);
- in1 << endl << "Массив a: реально считано " << L1 << " значений:" << endl;
- in1 << "L1: " << L1 << endl;
- for (int i = 0; i < L1; i++) {
- in1 << *(a + i) << " ";
- }
- cout << "a: " << endl;
- for (int i = 0; i < L1; i++) {
- cout << *(a + i) << " ";
- }
- in1.clear();
- in1.close();
- cout << endl << endl;
- fstream in2;
- in2.open("Input2_V2.txt", ios::in);
- int L2 = 0;
- x = 0;
- if (in2.is_open()) {
- while (in2.peek() != EOF) {
- in2 >> x;
- L2++;
- }
- }
- else {
- cout << "Ошибка чтения файла\n";
- }
- in2.clear();
- in2.close();
- int* b = new int[L2 > 0 ? L1 : 1];
- in2.open("Input2_V2.txt", ios::in);
- if (L2 > 0 && in2.is_open()) {
- x = 0;
- while (in2.peek() != EOF) {
- in2 >> *(b + x);
- x++;
- }
- }
- else if (L2 == 0) {
- cout << "Файл не содержит элементов\n";
- }
- in2.clear();
- in2.close();
- in2.open("Outup1_V2.txt", ios::out | ios::app);
- in2 << endl << "Массив b: реально считано " << L2 << " значений:" << endl;
- in2 << "L2: " << L2 << endl;
- for (int i = 0; i < L2; i++) {
- in2 << *(b + i) << " ";
- }
- cout << "b: " << endl;
- for (int i = 0; i < L2; i++) {
- cout << *(b + i) << " ";
- }
- in2.clear();
- in2.close();
- cout << endl << endl;
- int* c = new int[L1 > L2 ? L1 + 1 : L2 + 1] { 0 };
- int max = 0;
- if (L1 < L2) {
- max = L2;
- }
- else {
- max = L1;
- }
- for (int i = max - 1; i >= 0; i--) {
- if (L1 < L2) {
- if (i > L1) {
- *(c + i + 1) = *(b + i);
- }
- else if (L1 != 0) {
- *(c + i) = (*(c + i + 1) + *(a + i) + *(b + i)) / 10;
- *(c + i + 1) = (*(c + i + 1) + *(a + i) + *(b + i)) % 10;
- }
- else {
- *(c + i + 1) = *(b + i);
- }
- }
- else if (L1 > L2) {
- if (i > L2) {
- *(c + i + 1) = *(a + i);
- }
- else if (L2 != 0) {
- *(c + i) = (*(c + i + 1) + *(a + i) + *(b + i)) / 10;
- *(c + i + 1) = (*(c + i + 1) + *(a + i) + *(b + i)) % 10;
- }
- else {
- *(c + i + 1) = *(a + i);
- }
- }
- else if (L1 = L2) {
- *(c + i) = (*(c + i + 1) + *(a + i) + *(b + i)) / 10;
- *(c + i + 1) = (*(c + i + 1) + *(a + i) + *(b + i)) % 10;
- }
- }
- in2.open("Outup1_V2.txt", ios::out | ios::app);
- cout << "c: \n";
- for (int i = 0; i < max + 1; i++) {
- cout << *(c + i) << " ";
- }
- if (in2.is_open()) {
- in2 << endl << "Результат сложения: " << endl;
- for (int i = 0; i < max + 1; i++) {
- in2 << *(c + i) << " ";
- }
- }
- delete[] a, b, c;
- in2.clear();
- in2.close();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement