C++ programavimo aplinka.

InformatikaLabaratorinisVidutinio ilgio1 392 žodžių7 min. skaitymo

1. Laboratorinio darbo L2 ataskaita.

C++ programavimo aplinka.

Pristatymo data: 1999.03.24

Laboratorinis darbas Nr.1

*********************************************************

Uzduotis L1-51 Programa sudare Nerijus Skruodys, grupe IF 8/4.

destytojas doc. V.Jusas.

Data : 1999.03.24

*********************************************************

Duomenys

*****************************************************************

* terminas * prad. * pab. * pasikartoja * vidurkis *

*****************************************************************

* internetas * 1 * 100 * 20 * 0.00 *

* scriptas * 68 * 1340 * 120 * 0.00 *

* multimedija * 70 * 85 * 100 * 6.00 *

* linuxas * 30 * 200 * 300 * 1.00 *

*****************************************************************

daugiausiai pasikartoja :

linuxas – – – 300

*****************************************************************

Rezultatai

*****************************************************************

* terminas * prad. * pab. * pasikartoja * vidurkis *

*****************************************************************

* multimedija * 70 * 85 * 100 * 6.00 *

* linuxas * 30 * 200 * 300 * 1.00 *

*****************************************************************

daugiausiai pasikartoja :

linuxas – – – 300

*****************************************************************

Šie rezultatai pateikiami tekstiniame faile “rezultatat.rez”.

1.5 Duomenų tipai ir kintamieji.

const max=5, //maksimalus meniu daliu skaicius

xp=0, //pradine lango x koordinate

xg=150, //galine lango x koordinate

h=20, //lango atstumas nuo ekrano virsaus

pl=25, //lango plotis

tarp=5; //tarpai tarp langu

typedef char *eil; //eilute

typedef eil mas[max]; //eiluciu masyvas

typedef struct rod {

char pav[20]; //termino pavadinimas

int prad,pab; //pradinis ir galinis puslapiai

int kartai; //bendras pasikartojimu skaicius

float vid; //pasikartojimu skaicius puslapyje

rod *next; //kitas saraso elementas

} duom;

const mas menu={„apie programa”,”formuoti duomenis”,”tvarkyti duomenis”,

„isvesti lenteles”,”pabaiga” }; //meniu daliu

Pagrindinės programos kintamieji

int GD=9,GM=2,errorcode, //grafiniam rezimui ijungti vatojami kintamieji

kas=1, d=0; //pasirinkta meniu dalis ir padeties vektorius

char sb; //is klaviaturos skaitomas simbolis

duom *term; //terminu dinaminis masyvas

FILE *F; //rezultatu failas

1.6 Programos aprašymas.

Programa skirta atlikti veiksmams su duomenų masyvu. Ji naudoja aštuonias paprogrames: pradzia, pasirinkti, pranesimas, formduom, tvarkyti, rezpr, spausdinti, isvalyti.

Programos modulinė schema :

Paprogramių aprašai :

• void pradzia (void);

funkcija piešia pradinį meniu.

• int pasirinkti(int);

funkcija organizuoja meniu dalies pasirinkimą. Funkcija gražina pasirinktos menu dalies numerį ir į ją paduodame menu dalies ant kurios stovi žymeklis numerį.

• void pranesimas (int);

funkcija išveda į ekraną nurdyto numerio pranesimą

• void formduom (duom *);

funkcija suformuoja dinaminį pradinių duomenų sąrašą.

• void tvarkyti (duom *);

funkcija tvarko dinaminį duomenų sąrašą.

• void rezpr (void);

funkcija spausdina rezultatų faile pradzią.

• void spausdinti (duom *);

funkcija spausdina dinaminį masyvą į failą .

• void isvalyti (duom *);

funkcija pašalina iš atminties dinaminį masyvą.

• void pastumti (duom *);

funkcija dinaminį masyvą pastumia per vieną elementą į kairę.

1.7 Atmintinė vartotojui.

Programa pradinius duomenis ima iš failų “pirmas.dat” bei “antras.dat”, o rezultatus įrašo į failą “rezult.rez”.

1.8 Programos C++ kalba tekstas.

#include

#include

#include

#include

const max=5, //maksimalus meniu daliu skaicius

xp=0, //pradine lango x koordinate

xg=150, //galine lango x koordinate

h=20, //lango atstumas nuo ekrano virsaus

pl=25, //lango plotis

tarp=5; //tarpai tarp langu

typedef char *eil; //eilute

typedef eil mas[max]; //eiluciu masyvas

typedef struct rod {

char pav[20]; //termino pavadinimas

int prad,pab; //pradinis ir galinis puslapiai

int kartai; //bendras pasikartojimu skaicius

float vid; //pasikartojimu skaicius puslapyje

rod *next; //kitas saraso elementas

} duom;

const mas menu={„apie programa”,”formuoti duomenis”,”tvarkyti duomenis”,

„isvesti lenteles”,”pabaiga” }; //meniu daliu pavadinimai

void pranesimas (int); //isveda i ekrana tam tikra pranesima

void pradzia (void); //piesia pradini meniu

int pasirinkti(int); //organizuoja meniu dalies pasirinkima

void formduom (duom *); //suformuoja pradinius duomenis

void tvarkyti (duom *); //tvarko duomenis

void rezpr (void); //rezultatu failo pradzia

void spausdinti (duom *); //spausdina dinamini masyva i faila

void isvalyti (duom *); //isvalo atminti

void pastumti (duom *); //dinamini masyva pastumia vienu elementu i kaire

int main (void) {

int GD=9,GM=2,errorcode, //grafiniam rezimui ijungti vatojami kintamieji

kas=1, d=0; //pasirinkta meniu dalis ir padeties vektorius

char sb; //is klaviaturos skaitomas simbolis

duom *term; //terminu dinaminis masyvas

FILE *F; //rezultatu failas

initgraph(&GD, &GM,”D:\PROG\BC\BGI”);

errorcode = graphresult();

if (errorcode != grOk) /* an error occurred */

{

printf(„Graphics error: %sn”, grapherrormsg(errorcode));

printf(„Press any key to halt:”);

getch();

return(1); /* terminate with an error code */

}

pradzia ();

term=new (duom);

term->next=NULL;

do {

kas=pasirinkti(kas-1)+1;

switch (kas) {

case 1 : pranesimas (1); break;

case 2 : formduom (term); pranesimas (5); d=1; break;

case 3 : if (d) {

tvarkyti(term);

d++;

pranesimas(3);

}

else pranesimas(2); break;

case 4 : if (d) {

if (d==1) {

rezpr();

}

else {

F=fopen(„rezult.rez”,”a”);

fprintf(F,”n Rezultatainn”);

fclose(F);

}

spausdinti(term);

pranesimas(4);

}

else pranesimas(2); break;

}

} while (kas!=max);

isvalyti (term);

closegraph();

return (0);

}

void pradzia (void) {

int i;

char sb;

struct palettetype pal;

setcolor(BROWN);

getpalette(&pal);

setrgbpalette(pal.colors[BROWN], 8*4, 8*4, 8*4);

setfillstyle(1,BROWN);

for (i=0;i0 ) ? (y–) : (y=max-1); break;

case 80: ( ypav,&(term->prad),&(term->pab));

if (!feof(F)) {

term->next=new(duom);

term=term->next;

}

}

term->next=NULL;

fclose(F);

F=fopen(„antras.dat”,”r”);

while (!feof(F)) {

fscanf (F,”%s%i”,e,&sk);

term=p;

while (term!=NULL) {

if (!strcmp(e,term->pav)) {

term->kartai=sk;

term->vid=(term->kartai)/( (term->pab)-(term->prad) );

}

term=term->next;

}

}

fclose(F);

}

int raktas (duom *term) {

return ((term->vid<(term->next)->vid) || ((term->vid==(term->next)->vid) &&

(strcmp((term->next)->pav,term->pav)<0)));

}

void tvarkyti (duom *term) {

duom *p,*sen,kop;

int pak;

p=term;

while (term!=NULL) {

sen=term;

if (term->vid<1) {

pastumti(term);

}

else term=term->next;

}

pak=1; if (term->next==NULL) pak=0;

while (pak) {

pak=0;

term=p;

while (term->next!=NULL) {

if (raktas(term)) {

pak=1;

kop=*term;

strcpy(term->pav,(term->next)->pav);

term->prad=(term->next)->prad;

term->pab=(term->next)->pab;

term->kartai=(term->next)->kartai;

term->vid=(term->next)->vid;

strcpy((term->next)->pav,kop.pav);

(term->next)->prad=kop.prad;

(term->next)->pab=kop.pab;

(term->next)->kartai=kop.kartai;

(term->next)->vid=kop.vid;

}

term=term->next;

}

}

term=p;

}

void pastumti (duom *term) {

duom *sen;

while (term->next!=NULL) {

strcpy(term->pav,(term->next)->pav);

term->prad=(term->next)->prad;

term->pab=(term->next)->pab;

term->kartai=(term->next)->kartai;

term->vid=(term->next)->vid;

sen=term;

term=term->next;

}

delete term;

sen->next=NULL;

}

void rezpr (void) {

FILE *F;

F=fopen(„rezult.rez”,”w”);

fprintf ( F, ” Laboratorinis darbas Nr.1n”);

fprintf ( F, „*********************************************************n”);

fprintf ( F, ” Uzduotis L1-51″);

fprintf ( F, ” Programa sudare Nerijus Skruodys, grupe IF 8/4.n”);

fprintf ( F, ” destytojas doc. V.Jusas.n”);

fprintf ( F, ” Data : 1999.03.24n”);

fprintf ( F, „*********************************************************n”);

fprintf ( F, „n Duomenysnn”);

fclose (F);

}

void spausdinti (duom *term) {

FILE *F;

duom *p;

int ma;

p=term;

F=fopen(„rezult.rez”,”a”);

fprintf(F,”*****************************************************************n”);

fprintf(F,”* terminas * prad. * pab. * pasikartoja * vidurkis *n”);

fprintf(F,”*****************************************************************n”);

while (term!=NULL) {

fprintf(F,”* %-20s * %5i *”,term->pav,term->prad);

fprintf(F,” %5i * %6i *”,term->pab,term->kartai);

fprintf(F,” %8.2f *n”,term->vid);

term=term->next;

}

fprintf(F,”*****************************************************************n”);

term=p;

ma=0;

while (term!=NULL) {

if (term->kartai>ma) ma=term->kartai;

term=term->next;

}

fprintf (F, „daugiausiai pasikartoja : n”);

term=p;

while (term!=NULL) {

if (term->kartai==ma) fprintf (F,”%-20s – – – %6in”,term->pav,term->kartai);

term=term->next;

}

fprintf(F,”*****************************************************************n”);

fclose (F);

}

void isvalyti (duom *term) {

duom *kop;

while (term!=NULL) {

kop=term;

term=term->next;

delete kop;

}

}

1.9 Programos testavimo rezultatai.

Laboratorinis darbas Nr.1

*********************************************************

Uzduotis L1-51 Programa sudare Nerijus Skruodys, grupe IF 8/4.

destytojas doc. V.Jusas.

Data : 1999.03.24

*********************************************************

Duomenys

*****************************************************************

* terminas * prad. * pab. * pasikartoja * vidurkis *

*****************************************************************

* internetas * 1 * 100 * 20 * 0.00 *

* scriptas * 68 * 1340 * 120 * 0.00 *

* multimedija * 70 * 85 * 100 * 6.00 *

* linuxas * 30 * 200 * 300 * 1.00 *

*****************************************************************

daugiausiai pasikartoja :

linuxas – – – 300

*****************************************************************

Rezultatai

*****************************************************************

* terminas * prad. * pab. * pasikartoja * vidurkis *

*****************************************************************

* multimedija * 70 * 85 * 100 * 6.00 *

* linuxas * 30 * 200 * 300 * 1.00 *

*****************************************************************

daugiausiai pasikartoja :

linuxas – – – 300

*****************************************************************

Šie rezultatai pateikiami tekstiniame faile “rezult.rez”.