Лабораторные работы / лабы / lab_11_отчёт вар 9
.docxФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«ОМСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
Кафедра «Информатика и вычислительная техника»
ОТЧЕТ
по лабораторной работе № 11
«ФАЙЛЫ»
-
Выполнил:
студент группы ИВТ-234 Кукушкина А.А.
______________________________________
(дата, подпись)
Проверил:
ст. пр. доцент Дорошенко М.С.
_____________________________________________________
(дата, подпись)
Омск 2024
Лабораторная работа №11
Тема: Файлы
Вариант 9
Задание 1
Условие задачи:
Выполнить задачу из лабораторной работы 9, считывая исходные данные из одного файла и записывая полученные результаты в другой текстовый файл. Файл с исходными данными должен быть подготовлен предварительно.
Схема алгоритма:
Текст программы:
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
int sum(int* mas)
{
int sum = 0;
for (int i = 0; i < sizeof(mas); i++)
{
sum += mas[i];
}
return sum;
}
int pr(int* mas)
{
vector<int> p;
for (int i = 0; i < sizeof(mas); i++)
{
if (mas[i] != 0) p.push_back(mas[i]);
}
int pr = 1;
for (int i = 0; i < p.size(); i++)
{
pr *= p[i];
}
return pr;
}
void func(int* mas, int* sp, int* pp, int* so, int* po)
{
int masp[sizeof(mas)]{};
int maso[sizeof(mas)]{};
for (int i = 0; i < sizeof(mas); i++)
{
if (mas[i] > 0) masp[i] = mas[i];
else if (mas[i] < 0) maso[i] = mas[i];
}
*sp = sum(masp);
*pp = pr(masp);
*so = sum(maso);
*po = pr(maso);
}
int main()
{
setlocale(LC_ALL, "ru");
int sp, pp, so, po, A[6]{}, B[8]{};
ifstream inputFile("C:\\Users\\Алина Кукушкина\\Desktop\\программирование 2 семестр\\Лабораторная работа №11\\lab_11_1\\файлы lab_11_1\\inputFile.txt");
ofstream outputFile("C:\\Users\\Алина Кукушкина\\Desktop\\программирование 2 семестр\\Лабораторная работа №11\\lab_11_1\\файлы lab_11_1\\outputFile.txt");
if (!inputFile || !outputFile)
{
cerr << "Ошибка открытия файлов!";
return 1;
}
for (int i = 0; i < 6; i++)
{
if (!(inputFile >> A[i]))
{
cerr << "Недостаточно чисел в файле!";
return 1;
}
}
func(A, &sp, &pp, &so, &po);
outputFile << "Сумма положительных элементов массива А = " << sp << endl;
outputFile << "Произведение положительных элементов массива А = " << pp << endl;
outputFile << "Сумма отрицательных элементов массива А = " << so << endl;
outputFile << "Произведение отрицательных элементов массива А = " << po << endl << endl;
for (int j = 0; j < 8; j++)
{
if (!(inputFile >> B[j]))
{
cerr << "Недостаточно чисел в файле!";
return 1;
}
}
func(B, &sp, &pp, &so, &po);
outputFile << "Сумма положительных элементов массива B = " << sp << endl;
outputFile << "Произведение положительных элементов массива B = " << pp << endl;
outputFile << "Сумма отрицательных элементов массива B = " << so << endl;
outputFile << "Произведение отрицательных элементов массива B = " << po << endl;
inputFile.close();
outputFile.close();
cout << "Результаты успешно записаны в файл outputFile!" << endl;
return 0;
}
Результаты выполнения программы, выводы:
Результаты, записанные в файл outputFile совпадают с результатами, полученными в ходе выполнения программы 9_2.
Результат выполнения программы 9_2:
Результат выполнения программы 11_1:
Задание 2
Условие задачи:
В текстовом файле S1 записана последовательность из N*K чисел. Написать программу, формирующую в файле S2 матрицу из N строк по K чисел в каждой строке.
Схема алгоритма:
Текст программы:
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int main()
{
setlocale(LC_ALL, "RUS");
const int N = 3;
const int K = 4;
ifstream inputFile("C:\\Users\\Алина Кукушкина\\Desktop\\программирование 2 семестр\\Лабораторная работа №11\\lab_11_2\\файлы lab_11_2\\S1.txt");
ofstream outputFile("C:\\Users\\Алина Кукушкина\\Desktop\\программирование 2 семестр\\Лабораторная работа №11\\lab_11_2\\файлы lab_11_2\\S2.txt");
if (!inputFile || !outputFile)
{
cerr << "Ошибка открытия файлов!";
return 1;
}
vector<vector<int>> matrix(N, vector<int>(K));
for (int i = 0; i < N; ++i)
{
for (int j = 0; j < K; ++j)
{
if (!(inputFile >> matrix[i][j]))
{
cerr << "Недостаточно чисел в файле S1!";
return 1;
}
}
}
for (int i = 0; i < N; ++i)
{
for (int j = 0; j < K; ++j)
{
outputFile << matrix[i][j] << " ";
}
outputFile << endl;
}
inputFile.close();
outputFile.close();
cout << "Матрица успешно записана в файл S2.txt";
return 0;
}
Результаты выполнения программы, выводы: