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_V1.txt", ios::in);
- int L1 = 0;
- const int N1 = 40;
- int a[N1 + 1];
- if (in1 && !in1.eof()) {
- in1 >> L1;
- }
- else if (in1.eof()) {
- cout << "Пустой файл\n";
- }
- else {
- cout << "Ошибка чтения файла\n";
- }
- if (L1 <= 0 || L1 == NULL) {
- L1 = 0;
- cout << "Известное входное количество значений 0 или пусто, корректировка L1 к 0\n";
- }
- else if (L1 <= N1) {
- //избыточная память
- }
- else {
- L1 = N1;
- cout << "Входное количество значений больше вместимости массива, корректировка L1 к N1\n";
- }
- int n = 0;
- while (!in1.eof() && n < L1) {
- in1 >> a[n];
- n++;
- }
- if (n > N1) {
- cout << "Количество элементов не соответствует размеру массива, ввод только N1 = " << N1 << " элементов" << endl;
- }
- else if (n < N1) {
- cout << "Количество элементов не соответствует размеру массива, ввод только n = " << n << " элементов" << endl;
- }
- /* if (L1 != n) {
- cout << "Входное значение количества элементов не соответствует реальному количеству элементов, корректировка L1 к " << n << endl;
- L1 = n;
- } */
- cout << "a: " << endl;
- for (int i = 0; i < L1; i++) {
- cout << a[i] << " ";
- }
- in1.clear();
- in1.close();
- in1.open("Outup1_V1.txt", ios::out);
- in1 << "Массив a: реально считано " << L1 << " значений:" << endl;
- for (int i = 0; i < L1; i++) {
- in1 << a[i] << " ";
- }
- in1.clear();
- in1.close();
- cout << endl << endl;
- fstream in2;
- in2.open("Input2_V1.txt", ios::in);
- int L2 = 0;
- const int N2 = 40;
- int b[N2 + 1];
- if (in2 && !in2.eof()) {
- in2 >> L2;
- }
- else if (in2.eof()) {
- cout << "Пустой файл\n";
- }
- else {
- cout << "Ошибка чтения файла\n";
- }
- if (L2 <= 0 || L2 == NULL) {
- L2 = 0;
- cout << "Известное входное количество значений 0 или пусто, корректировка L1 к 0\n";
- }
- else if (L2 <= N2) {
- //избыточная память
- }
- else {
- L2 = N2;
- cout << "Входное количество значений больше вместимости массива, корректировка L1 к N1\n";
- }
- n = 0;
- while (!in2.eof() && n < L2) {
- in2 >> b[n];
- n++;
- }
- if (n > N2) {
- cout << "Количество элементов не соответствует размеру массива, ввод только N1 = " << N2 << " элементов" << endl;
- }
- else if (n < N2) {
- cout << "Количество элементов не соответствует размеру массива, ввод только n = " << n << " элементов" << endl;
- }
- /*if (L2 != n) {
- cout << "Входное значение количества элементов не соответствует реальному количеству элементов, корректировка L1 к " << n << endl;
- L2 = n;
- } */
- cout << "b: " << endl;
- for (int i = 0; i < L2; i++) {
- cout << b[i] << " ";
- }
- in2.clear();
- in2.close();
- in2.open("Outup1_V1.txt", ios::out | ios::app);
- in2 << endl << "Массив b: реально считано " << L2 << " значений:" << endl;
- for (int i = 0; i < L2; i++) {
- in2 << b[i] << " ";
- }
- in2.clear();
- in2.close();
- cout << endl << endl;
- const int k = 40;
- int c[k + 1] = { 0 };
- int max = 0;
- if (L1 < L2) {
- max = L2;
- }
- else {
- max = L1;
- }
- if (max > k) {
- max = k;
- }
- //int invi = 0;
- //invi = abs(i - (max + 1));
- for (int i = max - 1; i >= 0; i--) {
- if (L1 < L2) {
- if (i > L1 - 1) {
- c[i + 1] = b[i];
- }
- else {
- c[i] = (a[i] + b[i]) / 10;
- c[i + 1] = (c[i + 1] + a[i] + b[i]) % 10;
- }
- }
- else if (L1 > L2) {
- if (i > L2 - 1) {
- c[i + 1] = a[i];
- }
- else {
- c[i] = (c[i + 1] + a[i] + b[i]) / 10;
- c[i + 1] = (c[i + 1] + a[i] + b[i]) % 10;
- }
- }
- 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;
- }
- }
- int sdvig = k - max;
- if (k > max) {
- for (int i = max; i >= 0; i--) {
- c[i + sdvig] = c[i];
- c[i] = 0;
- }
- }
- in2.open("Outup1_V1.txt", ios::out | ios::app);
- cout << "c: \n";
- for (int i = 0; i < k + 1; i++) {
- cout << c[i] << " ";
- }
- if (in2.is_open()) {
- in2 << endl << "Результат сложения: " << endl;
- for (int i = 0; i < k + 1; i++) {
- in2 << c[i] << " ";
- }
- }
- in2.clear();
- in2.close();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement