Вычислительный эксперимент

Задание

Разработать алгоритм и программу работы со структурой и файлами, в соответствии с индивидуальным заданием.

Вариант задания 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с.