lab6 main

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h> // FILE fopen fclose fprintf, fscanf, printf, scanf
#include <conio.h> // getch
#include <windows.h> // SetConsoleOutputCP, SetConsoleCP
#include "funcs.h" // функции, необходимые для решения задачи
//-------------------------------главная функция программы----------------------------------
void main()
{
SetConsoleOutputCP(1251); // смена кодировки при выводе
FILE *f;
fopen_s(&f, "input.txt", "rt"); // текстовый файл открыть для чтения только
if (!f) { // или if (f ==NULL) {
printf("Error: Ошибка при открытии файла input.txt для чтения\nPress any key");
_getch(); // ожидание нажатия клавиши
return; // выход из функции main
}
int n, m, **matr, *line; // размеры матрицы, матрица, и массив(строка матрицы) входных данных
fscanf(f, "%d", &n); // считать десятичное целое и сохранить по адресу переменной n
//printf("n=%d\n", n); // вывод на экран сообщения “n=”, n и символа конца строки ‘\n’
// ввод и вывод n значений одномерного динамического массива
fscanf(f, "%d", &m); // то же самое для m
//printf("m=%d\n", m);
matr = new int*[n]; // выделяем место для строк
for (int i = 0; i < n; i++)
matr[i] = new int[m]; // выделяем элементы в строках
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
fscanf(f, "%d", &matr[i][j]); // считываем элементы матрицы из файла
line = new int[m]; // место для строки матрицы
for (int i = 0; i < m; i++)
fscanf(f, "%d", &line[i]); //чтение строки
fclose(f); // закрываем файл ввода
FILE *fout; // выходной файл
fopen_s(&fout, "output.txt", "w"); // открываем файл для записи
if (sumOfLine(matr, m, 0) + sumOfLine(matr, m, 1) < sumOfLine(matr, m, n - 2) + sumOfLine(matr, m, n - 1)) { // сравнение суммы первых двух и последних двух строк матрицы
addLineToAllLines(matr, line, n, m); // изменяем матрицу, добавляя строку line ко всем строкам матрицы
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++)
fprintf(fout, "%d ", matr[i][j]); // запись матрицы в файл
fprintf(fout, "\n"); // разделение строк
}
} else {
fprintf(fout, "Матрица не изменилась"); // если матрица не изменяется, выводим сообщение
}
fclose(fout); // закрываем файл вывода
delete[] line; // освобождаем массив
for (int i = 0; i < n; i++)
delete[] matr[i]; // освобождаем строки матрицы
delete[] matr; // освобождаем матрицу
printf("\nDone!");
printf("\nPress any key to exit");
_getch(); // задержка экрана до нажатия любой клавиши
return; //выход из main()
}