Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторная №14

.docx
Скачиваний:
35
Добавлен:
14.12.2018
Размер:
396.03 Кб
Скачать

Одеський національний політехнічний університет

Інститут комп’ютерних систем

Кафедра інформаційних систем

Варіант №1

Лабораторна робота №14

По дисципліні “Алгоритмізація і програмування”

Тема: “ Робота з бінарними файлами на мові програмування С”

Виконав:

Студент гр. АІ-171

Анищенко М.О.

Перевірили:

Глава М.Г.

Одеса 2018

Мета роботи: Набуття практичних навичок у роботі із бінарними файлами даних на мові програмування С.

Завдання: Заводом випускаються N різних вимірювальних приладів, кожний з яких може бути визначений даними з рисунку 14.1.

У процесі виконання роботи створюється перший програмний файл для формування файлу даних з довільним числом записів. Для вибірки з файлу даних створюється інший програмний файл, у якому необхідно передбачити виведення у формі таблиці всіх записів файлу й записів, що відповідають завданню.

Програма здійснює введення-виведення даних, містить функції, що здійснюють вибірку.

Блок-схема:

Код програми:

device.c

typedef struct device

{

char name[20];

char seller[20];

float price;

int number;

} device;

typedef struct item

{

char name[20];

float price;

int garanty;

int device_num;

} item;

lab14input.c

#include<stdio.h>

#include<stdlib.h>

#include"device.h"

int main()

{

FILE *fitem = NULL;

FILE *fdevice = NULL;

fitem = fopen("lab14item.bin", "wb");

fdevice = fopen("lab14device.bin", "wb");

if(fitem == NULL || fdevice == NULL)

{

printf("File error");

return 3;

}

char agr = 'n';

item *current = (item*)malloc(sizeof(item));

device *dev = (device*)malloc(sizeof(device));

do

{

printf("Enter name: ");

scanf("%s", current->name);

printf("Enter price: ");

scanf("%f", &current->price);

printf("Enter garanty(month): ");

scanf("%d", &current->garanty);

printf("Enter purchased devices number");

scanf("%d", &current->device_num);

fwrite(current,sizeof(item), 1, fitem);

for(int i = 0; i < current->device_num; i++)

{

printf("Enter purchased device name: ");

scanf("%s", dev->name);

printf("Enter purchased device seller: ");

scanf("%s", dev->seller);

printf("Enter purchased device price: ");

scanf("%f", &dev->price);

printf("Enter purchased device number: ");

scanf("%d", &dev->number);

fwrite(dev,sizeof(device), 1, fdevice);

}

printf("Do you want to enter one more element?(y/n): ");

scanf("\n%c", &agr);

}while(agr == ‘y’);

free(current);

free(dev);

fclose(fitem);

fclose(fdevice);

return 0;

}

lab14output.c

#include<stdio.h>

#include<stdlib.h>

#include"device.h"

int main()

{

FILE *fitem = NULL;

FILE *fdevice = NULL;

fitem = fopen("lab14item.bin", "rb");

fdevice = fopen("lab14device.bin", "rb");

if(fitem == NULL || fdevice == NULL)

{

printf("File error");

return 3;

}

item *cur = (item*)malloc(sizeof(item));

while (fread(cur, sizeof(item), 1, fitem))

{

printf("Name: %s\n", cur->name);

printf("Price: %f\n", cur->price);

printf("Garanty(month): %d\n\n", cur->garanty);

device *dev = (device*)malloc(sizeof(device));

printf("\n");

for(int i = 0; i < cur->device_num; i++)

{

fread(dev, sizeof(device), 1, fdevice);

printf("Purchased device name: %s\n", dev->name);

printf("Purchased device seller: %s\n", dev->seller);

printf("Purchased device price: %f\n", dev->price);

printf("Enter purchased device number: %d\n\n", dev->number);

}

free(dev);

printf("\n");

}

free(cur);

fclose(fitem);

fclose(fdevice);

printf("All purchased items: \n");

fdevice = fopen("lab14device.bin", "rb");

while(fread(dev, sizeof(device), 1, fdevice))

{

printf("Name: %s\n", dev->name);

printf("Seller: %s\n", dev->seller);

printf("Price: %f\n", dev->price);

printf("Number: %d\n\n", dev->number);

printf("\n");

}

return 0;

}

Приклад виконання:

Назва

Гарантія

Ціна

Додаткові товари

Назва

Ціна

Продавець

Кількість

Oil

12

200

Salt

20

SaltCorp

3

Pepper

4

PepperCorp

4

Beer

1

100

Chips

40

ChipsCorp

10

Соседние файлы в предмете Алгоритмизация и программирование