Professional Documents
Culture Documents
Шаблон Оформлення КР Обсяг Завдань На Рівень 60
Шаблон Оформлення КР Обсяг Завдань На Рівень 60
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ
«ОДЕСЬКА ЮРИДИЧНА АКАДЕМІЯ»
ФАКУЛЬТЕТ КІБЕРБЕЗПЕКИ ТА ІНФОРМАЦІЙНИХ ТЕХЛОГОЛОГІЙ
КУРСОВА РОБОТА
з дисципліни «Алгоритмізація та програмування»
на тему: «Програмне опрацювання даних у файлах»
_____________________________________
підпис прізвище та ініціали
м. Одеса – 2022 р.
МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ОДЕСЬКА ЮРИДИЧНА АКАДЕМІЯ»
ФАКУЛЬТЕТ КІБЕРБЕЗПЕКИ ТА ІНФОРМАЦІЙНИХ ТЕХНОЛОГІЙ
КАЛЕНДАРНИЙ ПЛАН
№ Завдання Термін виконання
1 Ознайомлення з завданням до курсової роботи. 15.03.2022-20.03.2022
Підготування вхідних файлів
2 Частина 1. Опрацювання матриць 21.03.2021-01.04.2022
3 Частина 2. Опрацювання рядкових даних 04.04.2022-15.04.2022
4 Частина 3. Опрацювання текстових файлів 18.04.2022-29.04.2022
5 Оформлення пояснювальної записки 02.05.2022-13.05.2022
4
ЗМІСТ
Вступ................................................................................................................................5
1 Аналіз засобів та методів розробки.........................................................................7
1.1 Огляд вибраної мови програмування..............................................................7
1.2 Засоби розробки програми...............................................................................7
1.3 Елементи мови С++, які використовувалися при написанні
програмного коду....................................................................................................9
2 Словесний опис алгоритмів для розв’язування задач......................................11
2.1 Опис функції view_file().................................................................................11
2.2 Опис функції create_matrix()..........................................................................12
2.3 Опис функції output_matrix()..........................................................................13
2.4 Опис функції create_vector()...........................................................................14
2.5 Опис функції max().........................................................................................15
2.6 Опис функції letter()........................................................................................17
2.7 Опис функції word_a()....................................................................................18
3 Результати виконання програми..........................................................................20
4 Інструкція з використання програми..................................................................22
Висновки з аналізом досягнутих результатів........................................................24
Список використаних джерел...................................................................................26
Додаток А Програмний код......................................................................................27
Додаток Б Схеми алгоритмів программи..............................................................31
5
ВСТУП
#include <iostream>
#include <stdlib.h>
#include <string.h>
#pragma warning(disable : 4996)
using namespace std;
const int M = 3, N = 5;
// Переглянути файл
void view_file(char* name)
{
char s[100]; FILE* f;
f = fopen(name, "rt"); // Відкрити файл для читання як текстовий
if (f == NULL) { cout << "Cannot open file to veiw\n"; return; }
cout << "\nПерегляд файлу " << name << endl;
while (fgets(s, 100, f))
{ // Зчитувати з файлу послідовно рядки у s, допоки вони є у файлi
s[strlen(s) - 1] = '\0';
puts(s); // Вивести рядок на екран
}
fclose(f);
}
// Заповнити матрицю значеннями з файлу
void create_matrix(double matr[M][N], char* name)
{
FILE* f;
char s[100], * t;
int i = 0, j;
f = fopen(name, "rt"); // Відкрити файл для читання як текстовий
if (f == NULL) { cout << "Cannot open file to veiw\n"; return; }
while (fgets(s, 100, f) > 0)
{
j = 0;
t = strtok(s, " \t");
while (t != NULL)
{
matr[i][j] = atof(t);
t = strtok(NULL, " \t");
j++;
}
i++;
}
fclose(f);
return;
}
// Вивести матрицю на екран та у файл
void output_matrix(double matr[M][N], char* name2)
{
int i, j;
FILE* f2;
f2 = fopen(name2, "wt"); // Створити файл як текстовий
if (f2 == NULL) { cout << "Cannot open file\n"; return; }
printf("\n\nПерегляд матрицi:\n");
fprintf(f2, "Перегляд матрицi:\n");
for (i = 0; i < M; i++)
{
for (j = 0; j < N; j++)
{ // Вивести елемент матриці на екран
cout << matr[i][j] << "\t";
// Записати елемент у файл
29
fprintf(f2, "%7.1f\t", matr[i][j]);
}
cout << endl;
fprintf(f2, "%s", "\n");
}
fclose(f2);
return;
}
// Обчислити елементи вектора як середньоарифметичні значення тих елементів
рядків, абсолютне значення яких не перевищує 10
void create_vector(double matr[M][N], double vekt[N], char* name2)
{
FILE* f2;
f2 = fopen(name2, "at"); // Відкрити файл для читання як текстовий
if (f2 == NULL)
{
cout << "Неможливо вiдкрити файл\n"; return;
}
cout << "\nСтворений вектор:\n";
fprintf(f2, "\nСтворений вектор:\n");
double sum=0;
int i, j, col = 0;
for (int i = 0; i < M; i++) {
for (int j = 0; j < N; j++) {
if (matr[i][j] <= 10 && matr[i][j] >= -10)
{
sum += matr[i][j]; col++;
}
}
if (col != 0)sum /= col;
vekt[i] = sum;
sum = 0;
col = 0;
cout << vekt[i] << "\t"; // Вивести елемент вектора на екран
fprintf(f2, "%7.1f\t", vekt[i]); // та у файл
}
fclose(f2);
}
// Визначити значення максимального значення вимірювання останнього датчика (рядка
матриці)
void max(double matr[M][N], char* name2)
{
FILE* f2;
f2 = fopen(name2, "at"); // Відкрити файл для читання як текстовий
if (f2 == NULL)
{
cout << "Неможливо вiдкрити файл\n"; return;
}
double max;
int i, j;
max = matr[M-1][0];
for (j = 0; j < N; j++)
{
if (matr[M-1][j] > max)
{
max = matr[M-1][j];
}
}
// Виведення результатів обчислень на екран та у файл
cout << "\n\nЗначення максимального значення останнього рядка матрицi=" << max
<< "\n\n";
fprintf(f2, "\n\nЗначення максимального значення останнього рядка матрицi=
%7.1f\n", max);
fclose(f2);
}
30
// Визначити, чи є в рядках літера A (маленька або велика)
void letter(char* name3, char* name2)
{
setlocale(LC_ALL, ".1251");
FILE* f3;
FILE* f2;
char s[100];
f2 = fopen(name2, "at");
if (f2 == NULL)
{
cout << "Неможливо вiдкрити файл\n"; return;
}
f3 = fopen(name3, "rt");
if (f3 == NULL)
{
cout << "Неможливо вiдкрити файл\n"; return;
}
// Вивести слова файлу, які містять щонайменше дві літери ‘[’, та обчислити їхню
кількість.
void word_a(char* name3, char* name2)
{
setlocale(LC_ALL, ".1251");
FILE* f3;
FILE* f2;
char s[100], *t;
f2 = fopen(name2, "at");
if (f2 == NULL)
{
cout << "Невозможно открыть файл\n"; return;
}
f3 = fopen(name3, "rt");
if (f3 == NULL)
{
cout << "Невозможно открыть файл\n"; return;
}
int k = 0, col = 0;
cout << "\nСлова рядка якi мiстять щонаменше двi лiтери X: " << endl;
fprintf(f2, "\nСлова рядка якi мiстять щонаменше двi лiтери X: ");
while (fgets(s, 100, f3))
{
s[strlen(s) - 1] = '\0';
t = strtok(s, " .,;?!-");
while (t != NULL)
{
31
k = 0;
for (int i = 0; i < strlen(t); i++)
if (t[i] == 'x' || t[i] == 'X')
{
k++;
}
if (k >= 2)
{
col++;
puts(t);
fputs(t, f2);
}
t = strtok(NULL, " .,;?!-");
}
}
cout << "\nКiлькiть слiв, що мiстять щонаменше двi лiтери X - " <<col<<endl;
fprintf(f2,"\nКiлькiть слiв, що мiстять щонаменше двi лiтери X - %7.1f", col);
fclose(f2);
fclose(f3);
return;
}
int main()
{
setlocale(0, ".1251");
double A[M][N], B[N];
char s[100];
char name1[] = "F1.txt";
char name2[] = "F2.txt";
char name3[] = "F3.txt";
view_file(name1);
create_matrix(A, name1);
output_matrix(A, name2);
create_vector(A, B, name2); //Обчислити елементи вектора як
середньоарифметичні значення тих елементів рядків, абсолютне значення яких не
перевищує 5.
max(A, name2); // Визначити значення максимального значення вимірювання
другого датчика (рядка матриці).
view_file(name3);
letter(name3,name2); // Визначити, чи є в рядках літера Х (маленька або
велика)
word_a(name3,name2); // Вивести слова файлу, які містять щонайменше дві
літери ‘a’, та обчислити їхню кількість.
view_file(name2);
system("pause");
return 0;
}
32
ДОДАТОК Б
СХЕМИ АЛГОРИТМІВ ПРОГРАММИ
Вхід Вхід
Відкрити файл
Ні
Кінець файлу
Так
Ні
Читати s із Кінець файлу?
файлу
Вивести рядок
s j=0; t=перше слово s
Ні
t не порожнє?
Закрити файл
Так
j++
Закрити файл
Вихід
Відкрити файл
Ні
Кінець файлу?
Так
Закрити файл
Вихід
34
Ні
(col != 0)
Так
sum /= col; vekt[i] = sum;
sum = 0; col=0;
Виведення vekt[i]
Закрити файл
Вихід
Вхід Вхід
Відкрити файл
Відкрити файл
Кінець файлу? Ні
Ні
Кінець файлу
Так
Так
max=matr[M-1][0]
Читати s із
файлу
j=0; j<N; j++
Ні Так
S[i]=’A’ || ‘a’
max=matr[M-1][j]
Так
Слова з A є
Виведення
max
Слів з A немає
Закрити файл
Початок
name=”F1.txt”
name2=”F2.txt
name3=”F3.txt
view_file(name1)
create_matrix(A, name1)
output_matrix(A, name2);
create_vector(A, B, name2)
max(A, name2)
view_file(name3)
letter(name3,name2)
word_a(name3,name2)
view_file(name2)
Кінець