Открыть Электронные книги
Категории
Открыть Аудиокниги
Категории
Открыть Журналы
Категории
Открыть Документы
Категории
Республики Молдова
Технический Университет Молдовы
Кафедра «Автоматика и информационные технологии»
Отчет
по лабораторной работе Nr.6-7.
по Структурам Данных и Алгоритмам
Выполнил ст.гр. SI-
Проверила
1
Лабораторная работа Nr.6.
Тема работы: Обработка массива структур и использование файлов на языке Си
Задание:
1. Для заданного массива элементов типа структура (Структура ТОВАР с полями: название,
страна, производитель, артикул, цена.) вывести на экран следующее меню операций:
Мой код:
___________________________________main.cpp_________________________________________
#include "head.h"
int main()
int N;
int choice;
printf ("\nMenu:\n");
2
printf ("1.Dynamic memory allocation for a array of struct;\n");
printf ("12.DeleteMemoryArray;\n");
do
case 1:
MemoryAllocationArray( g, N);
break;
case 2:
3
EnterElementsArray(g, N);
break;
case 3:
WriteFileElementsArray(g, N);
break;
case 4:
ReadFileElementsArray(g, N);
break;
case 5:
PrintScreenElementsArray(g, N);
break;
case 6:
SortElementsArrayByName(g, N);
break;
case 7:
SearchElementsArray(g, N);
break;
case 8:
AddEndElementsArray(g, N);
break;
case 9:
4
EditElementsArray(g, N);
break;
case 10:
InsertElementsArray(g, N);
break;
case 11:
RemoveElementsArray(g, N);
break;
//12 DeleteMemoryArray
case 12:
DeleteMemoryArray(g);
break;
case 13:
return 0;
default:
break;
getch();
return 0;
5
_______________________________head.h______________________________________________
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <limits>
#include <string.h>
#include <conio.h>
#include <time.h>
#include <math.h>
struct good
char name[50];
char country[50];
char manufacturer[50];
int vendorcode;
int price;
};
6
int SortElementsArrayByName(struct good* g, int R);
___________________________________func.cpp__________________________________________
#include "head.h"
int adding=0;
scanf("%d", &R);
g = new good[R];
if ( g == NULL)
exit(1);
else
7
}
int i;
fflush (stdin);
gets(g[i].name);
fflush (stdin);
gets(g[i].country);
fflush (stdin);
gets(g[i].manufacturer);
scanf("%d", &g[i].vendorcode);
scanf("%d", &g[i].price);
return 0;
8
int WriteFileElementsArray(struct good* g, int R)
int i;
FILE *fp;
fp = fopen("goods.txt", "w");
fclose ( fp );
return 0;
int i;
FILE *fp;
fp = fopen("goods.txt", "r");
9
&g[i].name, &g[i].country, &g[i].manufacturer, &g[i].vendorcode, &g[i].price);
fclose ( fp );
return 0;
int i;
printf(" -------------------------------------------------------------------------------------------------------\n");
printf(" -------------------------------------------------------------------------------------------------------\n");
printf(" -------------------------------------------------------------------------------------------------------\n");
return 0;
10
printf("\nEnter the criterium you would like to sort by:\n");
printf("\n1.Sort by name:\n");
printf("\n2.Sort by country:\n");
printf("\n3.Sort by manufacturer:\n");
int i,j;
int criterium;
printf ("\n\n>");
scanf("%d", &criterium);
switch(criterium)
case 1:
for (i=0;i<(R+adding)-1;i++)
temp= g[i];
g[i]=g[j];
g[j]=temp;
11
}
break;
case 2:
for (i=0;i<(R+adding)-1;i++)
temp= g[i];
g[i]=g[j];
g[j]=temp;
break;
case 3:
for (i=0;i<(R+adding)-1;i++)
12
temp= g[i];
g[i]=g[j];
g[j]=temp;
break;
case 4:
for (i=0;i<(R+adding)-1;i++)
temp= g[i];
g[i]=g[j];
g[j]=temp;
break;
case 5:
for (i=0;i<(R+adding)-1;i++)
13
if (g[i].price > g[j].vendorcode)
temp= g[i];
g[i]=g[j];
g[j]=temp;
break;
case 6:
for (i=0;i<(R+adding)-1;i++)
temp= g[i];
g[i]=g[j];
g[j]=temp;
break;
defaul:
break;
14
}
return 0;
char search[50];
int criterium2;
int value;
int result;
printf("\n1.Search by name\n");
printf ("\n\n>");
scanf("%d", &criterium2);
switch (criterium2)
case 1:
fflush(stdin);
gets(search);
15
for (int i=0; i<(R+adding); i++)
if (result==0)
break;
case 2:
fflush(stdin);
gets(search);
if (result==0)
16
}
break;
case 3:
fflush(stdin);
gets(search);
if (result==0)
break;
case 4:
printf ("\nEnter the vendor code of the good you're looking for:\n");
break;
case 5:
if (value==g[i].price)
break;
default:
return 0;
18
{
adding++;
fflush(stdin);
gets(g[adding+1].name);
fflush(stdin);
gets(g[adding+1].country);
fflush(stdin);
gets(g[adding+1].manufacturer);
scanf("%d", &g[adding+1].vendorcode);
19
printf("\n Input good's price:");
scanf("%d", &g[adding+1].price);
return 0;
int index;
printf ("\nEnter the index of the element you would like to edit:\n>");
index--;
printf ("1.Name\n");
printf ("2.Country\n");
printf ("3.Manufacturer\n");
printf ("5.Price\n");
int option;
switch(option)
20
{
case 1:
fflush(stdin);
printf ("Input the name you would like to set instead: \n>");
gets(g[index].name);
break;
case 2:
fflush(stdin);
printf ("Input the country you would like to set instead: \n>");
gets(g[index].country);
break;
case 3:
fflush(stdin);
printf ("Input the manufacturer you would like to set instead: \n>");
gets(g[index].manufacturer);
break;
case 4:
printf ("Input the vendor code you would like to set instead: \n>");
break;
case 5:
printf ("Input the price you would like to set instead: \n>");
break;
21
default:
printf ("\nEnter the index of the element after which you would like to insert an element:\n\n");
int i;
if (i>R)
return 0;
adding++;
g[j]=g[j-1];
22
fflush(stdin);
gets(g[i].name);
fflush(stdin);
gets(g[i].country);
fflush(stdin);
gets(g[i].manufacturer);
scanf("%d", &g[i].vendorcode);
scanf("%d", &g[i].price);
return 0;
23
{
printf ("\nEnter the index of the element you would like to remove:\n\n");
int i;
if (i>R)
return 0;
g[j]=g[j+1];
adding--;
return 0;
//12 DeleteMemoryArray
if( g != NULL)
24
{
delete[] g;
g = NULL;
25
26
27
28
29
Вывод:
В ходе лабораторной работы номер 6-7 “Обработка массива структур и использование файлов на
языке Си” познакомилась с понятием структура и обучилась с ней взаимодействовать. Научилась
создавать динамические массивы структур, и производить различные операции с ними: вставка,
удаление, изменение полей, чтение/запись в файл, изменение полей структуры, поиск по
опредленому полю и сортировку. Свою программу я создавала посредством проекта из 3
файлов(основного, заголовочного и файла с реализацией функций).
30