Вычислительный эксперимент
Задание
Разработать алгоритм и программу работы со структурой и файлами, в соответствии с индивидуальным заданием.
Вариант задания 9 : база данных компьютерных игр
Программа разрабатывается на языке С++.
Введение
Целью данной лабораторной работы является приобретение навыков работы на программе с++ для разработки различных приложений. В ходе ее выполнения я получу знания по составлению алгоритмов программ, их схем, а так же научусь применять нужные для работы со структурами и файлами, операторы для составления текста программы.
1.Разработка алгоритма
Алгоритм программы вывода элементов из файла и записи их в структуру.
Рисунок 1- Схема программы вывода элементов из файла и записи их в структуру.
Рисунок 1-Продолжение.
Рисунок 1-Продолжение.
Рисунок 1-Продолжение.
Рисунок 1-Продолжение.
Разработка программы
В соответствии с алгоритмом разработана программа. Текст программы представлен на рисунке 2.
#include <conio.h>
#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <fstream>
#include <iomanip>
#include <stdio.h>
#include <ConsoleColor.h>
using namespace std;
struct games
{
char name[30];
int razmer;
int stoimost;
int operativa;
};
int main()
{
FILE * f;
char file[20],q,str[500],mas[200];
ofstream fin;
int a=1,s=0,g=0,h=0,j=0,k,l,sum,n;
games z[50],x[50];
do
{
printf("Vedite imya faila dlya chteniya:");
cin>>file;
f=fopen(file,"rt");
}
while(f==NULL);
printf("\nSoderzhimoe faila: \n");
do
{
q=getc(f);
printf("%c",q);
str[s]=q;
s++;
}
while(q!=33);
fcloseall();
j=0;
for(n=0;n<s;n++)
{
for(n;str[n]!=10 && n<s;n++)
{
if(a==1 && str[n]!=32)
{
g=0;
while(str[n]!=32)
{
q=str[n];
z[j].name[g]=q;
g++;
n++;
}
z[j].name[g]=NULL;
a=2;
Рисунок 2- Текст программы.
}
if(a==2 && str[n]!=32)
{
g=0;
while(str[n]!=32)
{
q=str[n];
mas[g]=q;
g++;
n++;
}
sum=0;
h=1;
do
{
g--;
k=mas[g];
k=char(k);
l=(k-48)*h;
sum=sum+l;
h=h*10;
}
while(g>0);
z[j].razmer=sum;
a=3;
}
if(a==3 && str[n]!=32)
{
while(str[n]!=32)
{
q=str[n];
mas[g]=q;
g++;
n++;
}
sum=0;
h=1;
do
{
g--;
k=mas[g];
k=char(k);
l=(k-48)*h;
sum=sum+l;
h=h*10;
}
while(g>0);
z[j].operativa=sum;
a=4;
}
if(a==4 && str[n]!=32)
{
while(str[n]!=32)
{
q=str[n];
mas[g]=q;
g++;
n++;
}
sum=0;
h=1;
do
{
Рисунок 2-Продолжение.
g--;
k=mas[g];
k=char(k);
l=(k-48)*h;
sum=sum+l;
h=h*10;
}
while(g>0);
z[j].stoimost=sum;
a=5;
}
}
a=1;
j++;
}
cout<<endl<<endl;
cout.width(15);cout<<green<<"Nazvanie";
cout.width(15);cout<<"razmer igry";
cout.width(15);cout<<"min kol/vo DDR";
cout.width(15);cout<<"Stoimost"<<white<<endl;
for(n=0;n<j;n++)
{
cout.width(15);cout<<z[n].name;
cout.width(15);cout<<z[n].razmer;
cout.width(15);cout<<z[n].operativa;
cout.width(15);cout<<z[n].stoimost<<"\n";
}
printf("\nVybor paramrtra sortirovki:");
printf("\n1-po razmery;\n2-po operative;\n3-po tcsene;\n");
cout<<green;
cin>>s;
cout<<white;
if(s==1)
{
for(n=0;n<(j-1);n++)
{
for(a=n+1;a<j;a++)
{
if(z[n].razmer<z[a].razmer)
{
x[1]=z[n];
z[n]=z[a];
z[a]=x[1];
}
}
}
}
if(s==2)
{
for(n=0;n<(j-1);n++)
{
for(a=n+1;a<j;a++)
{
if(z[n].operativa<z[a].operativa)
{
x[1]=z[n];
z[n]=z[a];
z[a]=x[1];
}
}
}
Рисунок 2-Продолжение.
}
if(s==3)
{
for(n=0;n<(j-1);n++)
{
for(a=n+1;a<j;a++)
{
if(z[n].stoimost<z[a].stoimost)
{
x[1]=z[n];
z[n]=z[a];
z[a]=x[1];
}
}
}
}
cout<<endl<<endl;
cout.width(15);cout<<green<<"Nazvanie";
cout.width(15);cout<<"razmer igry";
cout.width(15);cout<<"min kol/vo DDR";
cout.width(15);cout<<"Stoimost"<<endl<<white;
for(n=0;n<j;n++)
{
cout.width(15);cout<<z[n].name;
cout.width(15);cout<<z[n].razmer;
cout.width(15);cout<<z[n].operativa;
cout.width(15);cout<<z[n].stoimost<<"\n";
}
printf("\nVybor paramrtra sortirovki:");
printf("\n1-po razmery;\n2-po operative;\n3-po tcsene;\n");
cout<<green;
cin>>s;
cout<<white;
if(s==1)
{
for(n=0;n<(j-1);n++)
{
for(a=n+1;a<j;a++)
{
if(z[n].razmer<z[a].razmer)
{
x[1]=z[n];
z[n]=z[a];
z[a]=x[1];
}
}
}
}
if(s==2)
{
for(n=0;n<(j-1);n++)
{
for(a=n+1;a<j;a++)
{
if(z[n].operativa<z[a].operativa)
{
x[1]=z[n];
z[n]=z[a];
z[a]=x[1];
}
}
Рисунок 2-Продолжение.
}
}
if(s==3)
{
for(n=0;n<(j-1);n++)
{
for(a=n+1;a<j;a++)
{
if(z[n].stoimost<z[a].stoimost)
{
x[1]=z[n];
z[n]=z[a];
z[a]=x[1];
}
}
}
}
cout<<endl<<endl;
cout.width(15);cout<<green<<"Nazvanie";
cout.width(15);cout<<"razmer igry";
cout.width(15);cout<<"min kol/vo DDR";
cout.width(15);cout<<"Stoimost"<<endl<<white;
for(n=0;n<j;n++)
{
cout.width(15);cout<<z[n].name;
cout.width(15);cout<<z[n].razmer;
cout.width(15);cout<<z[n].operativa;
cout.width(15);cout<<z[n].stoimost<<"\n";
}
}
Рисунок 2-Продолжение.
Вычислительный эксперимент
Пример работы программы представлен на рисунках 3,4.
Вычислительный эксперимент проведен два раза:
Рисунок 3-Результат работы программы сортировки базы данных по цене и оперативной памяти.
Рисунок 4- Результат работы программы сортировки базы данных по цене и размеру.
Заключение
В ходе выполнения лабораторной работы мы получили навыки работы с программой с++. Научились применять функции для работы с файлами. Итогом разработки моего задания является программа которая считывает символы с файла, определяет их и вносит в структуру. А так же сортирует ее и выводит в консоль.
Список литературы
1. Герберт Шилдт: C++: руководство для начинающих. Пер с англ. – М. :
“Вильямс”, 2005. – 672с.