Professional Documents
Culture Documents
OAP Ki 104 Moroz Lab8
OAP Ki 104 Moroz Lab8
ІКТА
кафедра ЕОМ
ЗВІТ
до лабораторних робіт з курсу: «Основи алгоритмізації та
програмування»
ЛАБОРАТОРНА РОБОТА №8 РОЗВ'ЯЗУВАННЯ НА МОВІ С ЗАДАЧ, ЯКІ
ВИКОРИСТОВУЮТЬ СТРУКТУРИ І ФАЙЛИ
Виконав:
ст. гр. КІ-104
Мороз М.Т.
.
Прийняв:
Асистент каф.
ЕОМ Гузинець
Н.В.
Львів 2023
Мета роботи:
• познайомитися з структурами у мові програмування С;
• познайомитися з засобами файлового вводу та виводу в мові програмування С.
Теоретичний вступ:
Структури в мові C
Структура в мові C - це об’єднання кількох об’єктів, можливо, різного типу під одним
ім’ям1. Ці об’єкти можуть бути змінними, масивами, покажчиками та іншими
структурами1. Структури дозволяють трактувати групу зв’язаних між собою об’єктів
не як множину окремих елементів, а як єдине ціле1.
Цей код оголошує структуру date, яка містить три поля: day, month і year1.
Бінарні файли дозволяють читати або записувати блоки пам’яті, і вони є особливо
корисними, коли вам потрібно працювати з такими структурами даних, як масиви або
структури4.
Розв’язок:
блок-схема алгоритму буде мати вигляд:
Код програми:
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
*destination = '\0';
return start;
}
struct Product {
char name[50];
int year;
int count;
char maker[50];
double price;
Product(const char name[], int year, int count, const char maker[], double price) {
myStrcpy(this->name, name);
this->year = year;
this->count = count;
myStrcpy(this->maker, maker);
this->price = price;
}
Product() {
name[0] = '\0';
year = 0;
count = 0;
maker[0] = '\0';
price = 0.0;
}
void printP() {
printf("Name: %s\n", name);
printf("Year: %d\n", year);
printf("Count: %d\n", count);
printf("Maker: %s\n", maker);
printf("Price: %.2lf\n", price);
}
void WriteFile(FILE* f) {
fprintf(f, "%s\n", name);
fprintf(f, "%d\n", year);
fprintf(f, "%d\n", count);
fprintf(f, "%s\n", maker);
fprintf(f, "%.2lf\n", price);
}
void WriteBinare(FILE* f) {
fwrite(&name, sizeof(name), 1, f);
fwrite(&year, sizeof(year), 1, f);
fwrite(&count, sizeof(count), 1, f);
fwrite(&maker, sizeof(maker), 1, f);
fwrite(&price, sizeof(price), 1, f);
}
void ReadFile(FILE* f) {
fgets(name, sizeof(name), f);
name[strlen(name) - 1] = '\0';
};
void WriteProducts(Product p[], int size, FILE* f) {
for (int i = 0; i < size; i++) {
p[i].WriteFile(f);
}
}
void WriteBinare(FILE* f, Product p[], int size) {
for (int i = 0; i < size; i++) {
fwrite(&p[i].name, sizeof(p[i].name), 1, f);
fwrite(&p[i].year, sizeof(p[i].year), 1, f);
fwrite(&p[i].count, sizeof(p[i].count), 1, f);
fwrite(&p[i].maker, sizeof(p[i].maker), 1, f);
fwrite(&p[i].price, sizeof(p[i].price), 1, f);
}
}
Product p[] = { {"Product1", 2023, 10, "Maker1", 19.99}, {"Product2", 2013, 14,
"Maker2", 46.79}, {"Product3", 2016, 79, "Maker3", 89.34} };
const int size = sizeof(p) / sizeof(p[0]);
WriteProducts(p, size, f1);
fclose(f1);
Product p1[size];
FILE* f2;
f2 = fopen("prods.txt", "r");
ReadProducts(p1, size, f2);
expiredGoods(p1, size);
fclose(f2);
FILE* f_bin;
f_bin = fopen("prods.bin", "wb");
WriteBinare(f_bin, p, size);
fclose(f_bin);
return 0;
}
Демонстрація: