Excursie in Romania
( The Land of choice)
Elev: Baltoi Ion Costel Marius clasa a X-a AColegiul National “Ecaterina Teodoroiu”
Targu-Jiu
Dupa o nunta ca in povesti....
cei 2 indragostiti...
El... Student eminent la Ea... Studenta la Facultatea de
Facultatea de Informatica.... Limbi Straine...
S-au gandit ce sa faca in luna de miere...
Si s-au razgandit...
Dar nu le venea nici o idee buna pentru ambii soti...
Dupa multe framantari, mirelui i-a venit o idee...
Ce ar fi sa mearga intr-o excursie in jurul Romaniei??? Patria
sa, locuri si peisaje minunate, oameni ospitalieri...
Si gandindu-se el, i s-a parut ca
excursia seamana cu ceva... Dar
nu-si amintea cu ce...
“Aaa... Asta seamana cu listele
de la informaticaaaaa... Imi aleg
traseul, vizitez locurile cele mai
apropiate, poate mai adaug ceva
locuri pe care le voi vizita... Sau
voi sterge... Si in final, plecam in
excursie...” s-a gandit mirele.
sotia a fost de acord cu planul lui, mai ales
ca dorea sa invete cate ceva din liste...
Listele circulare dublu inlantuite nu erau
tocmai grele pentru ea...
Nimic mai simplu... El ii explica,
ea invata...Cum ar putea sa isi aleaga
traseul???
...cu ajutorul operatiei de
creare....
Prima data trebuiau declarate bibliotecaunde sunt incluse instructiunile ce vor fifolosite...#include <iostream.h>#include <string.h>si lista...struct{char s[25]; nod*ant, *urm;} *prim, *urm;
void creare(){int i; nod*t; prim=new nod; cin.get>>prim->s; prim->urm=0; prim->ant=0; ultim=prim;for (i=1;i<n;i++)
{t=new nod; cin.get>>t->s; t->urm-0; t->ant=ultim; ultim->urm=t; ultim=t;}ultim->urm=prim; prim->ant=ultim; }
“Daca ne hotaram sa vizitam si
alte orase care nu se afla pe traseu, am putea folosii inserarea...”
void inserare(){char m[20]; nod*t,*p; t=prim;cin.get>>m;if (strcmp(ultim->s,m)==0){p=new nod; cin.get>>p->s;ultim->urm=p; p->ant=ultim;p->urm=prim; ultim=p;}else {while(strcmp(t->s,m)!=0 && t!=prim) t=t->urm; if (t==prim)cout<<“nu exista”; else{p=new nod; cin>>p->s; p->ant-t; p->urm=t->urm; t->urm->ant=p; t->urm=p;} }}
“Sau putem elimina din orasele
de pe lista cu ajutorul functiei de
stergere...”
void stergere(){char m[20]; nod*t;
cin.get>>m; t=prim;
while(strcmp(t->s,m)!=0 &&
t->urm!=prim) t=t-
>urm;if (t->urm==prim)
cout<<“nu exista”;
else {t->ant->urm=t->urm;
t->urm->ant=t->ant;
delete t;}
}
“Va trebui acum sa sortam crescator... “ void sortare()
{nod*i,*j; char t[20]; i=prim;
while(i->urm!=prim)
{j=i->urm;
while(j!=prim)
{if(strcmp(i->s,j-
>s)>0) {strcpy(t,i->s);
strcpy(i->s,j->s);
strcpy(j->s,t);}}
j=j->urm;}
i=i->urm;}
}
“Inainte de a pleca in
excursie, va trebui sa
afisam lista...”void listare(){nod*p;p=prim;do{ cout<<p->s<<“ “; p=p->urm;while(p!=prim);}
“Am terminat de realizat subprogramele... Ce
mai ramane de facut??? Aaa... Programul
principal in care vom apela functiile realizate
anterior... ”
int main(){creare(); listare();inserare(); listare();stergere(); listare();sortare(); listare();}
Dupa cateva sotul i-a explicat intregul algoritm si cum functioneaza acesta, sotia a inceput sa invete... Prima data a scris din nou algoritmul...
#include <iostream.h>#include <string.h>struct{char s[25]; nod*ant, *urm;} *prim, *urm;
void creare(){int i; nod*t; prim=new nod; cin.get>>prim->s; prim->urm=0; prim->ant=0; ultim=prim;for (i=1;i<n;i++) {t=new nod; cin.get>>t->s; t->urm-0; t->ant=ultim; ultim->urm=t; ultim=t;}ultim->urm=prim; prim-
>ant=ultim; }
void listare(){nod*p; p=prim;do{ cout<<p->s<<“ “; p=p->urm;while(p!=prim);}
void inserare(){char m[20]; nod*t,*p; t=prim;cin.get>>m;if (strcmp(ultim->s,m)==0){p=new nod; cin.get>>p->s;ultim->urm=p; p->ant=ultim;p->urm=prim; ultim=p;}else {while(strcmp(t->s,m)!=0 && t!=prim) t=t->urm; if (t==prim)cout<<“nu exista”; else{p=new nod; cin>>p->s; p->ant-t; p->urm=t->urm; t->urm->ant=p; t->urm=p;} }}
void stergere(){char m[20]; nod*t; cin.get>>m; t=prim;while(strcmp(t->s,m)!=0 && t->urm!=prim) t=t->urm;if (t->urm==prim) cout<<“nu exista”; else {t->ant->urm=t->urm; t->urm->ant=t->ant; delete t;}}
void sortare(){nod*i,*j; char t[20]; i=prim;while(i->urm!=prim) {j=i->urm; while(j!=prim) {if(strcmp(i->s,j->s)>0) {strcpy(t,i->s); strcpy(i->s,j->s); strcpy(j->s,t);}} j=j->urm;} i=i->urm;}}
int main(){creare(); listare();inserare(); listare();stergere(); listare();sortare(); listare();}
Dupa ceva timp, sotia a terminat de invatat listele... Sotul,
fericit ca a reusit sa ii arate sotiei ceva din viitoarea lui
meserie, iar sotia era fericita ca a invatat ceva nou...
In timp ce sotia pregatea necesarul pentru excursie,
sotul pregatea noua masina pe care era nerabdator
sa o incerce...
Vacanta placutaaaa!!!