Documente Academic
Documente Profesional
Documente Cultură
Raport
Lucrare de laborator Nr.2,3
Chiinau 2017
Lucrarea de laborator nr. 2-3
Varianta 8
Mersul lucrrii:
Element* next;};
Functia: Main()
caseDeSchimb *a=NULL; /*element pentru sortare/interschimbare*/
caseDeSchimb *b=NULL; /*element pentru sortare/interschimbare*/
caseDeSchimb *head2=NULL; /*element cap pentru divizare*/
char a1[100]; /*string 1 pentru interschimbare*/
char b1[100]; /*string 2 pentru interschimbare*/
char srch[100]; /*string pentru cautare*/
char savef[100]; /*string pentru salvare*/
char loadf[100]; /*string pentru incarcare*/
int n; /*numarul de elemente in lista*/
int m = 1; /*ciclu infinit meniu principal*/
int com1; /*indice pentru meniu pricipal*/
int mod; /*indice pentru modificare*/
int id_devide; /*indice pentru devizare*/
int id_before; /*indice pentru adaugare inaintea indicelui*/
int id_after; /*indice pentru adaugare dupa indice*/
int id_delete; /*indice pentru stergere a elemenentului*/
Functia: int create(int n);
n- variabila locala de tip integer, numarul de elemente a listei simplu inlantuite
c variabila locala de tip pointer la strucura
p- variabila locala de tip pointer la strucura
Fisierul lab23.h
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
Fisierul lab2_3.c
int main()
{
// MARK: Declararea variabilelor
// MARK: Meniul
while(1)
{
while(m)
{
m=0;
system("clear");
printf("--------------------------------Creare-----------------------\n" );
printf("1.Crearea listei si introducerea datelor manual\n" );
printf("2.Crearea listei si introduucerea datelor din fisier\n\n");
printf("-------------------Functiile De: Prelucrare----------------\n");
printf("3.--------------------------Afisarea listei----------------------\n");
printf("4.--------Sortarea listei dupa BaniiInLeiRamasi---------\n");
printf("5.----------------Modificarea unui element---------------\n");
printf("6.----------------Interschimbarea elementelor------------\n");
printf("7.--------------------Cautarea unui element---------------\n");
printf("8.-----------Devizarea elementelor in doua liste---------\n");
printf("9.--------------Unirea a doua liste cu elemente--------\n\n");
printf("------------Functiile De: Adaugare \&&\ Stergere-------\n");
printf("10.--------Adaugarea elementuui inaintea indicelui---\n");
printf("11.---------Adaugarea elementului dupa indice---------\n");
printf("12.----------Adaugarea elementului la sfirsitul listei----\n");
printf("13.-----------------Stergea unui element-----------------\n\n");
printf("------------Functiile De: Salvare \&&\ Iesire-----------\n");
printf("14.---------------------Salvarea in fisier----------------------\n");
printf("15.---------------------Salvare si Iesire-----------------------\n");
printf("---------------------------------------------------- \n");
printf("\nDati comanda\n>");
scanf("%d",&com1);
switch(com1)
{
case 1:
system("cls");
if(head)
{
printf("Memoria este deja alocata\n");
system("pause");
m=1;
break;
}
system("cls");
printf("Dati numarul de elemente in lista\n>");
scanf("%d",&n);
create(n);
read_f();
if(head)
{
system("cls");
printf("Lista a fost creata cu succes!\a\n");
system("pause");
m=1;
break;
}
case 2:
system("cls");
if(head)
{
printf("Memoria este deja alocata\n");
system("pause");
m=1;
break;
}
printf("Dati numele fisierului\n>");
fflush(stdin);
gets(loadf);
strcat(loadf,".txt");
load(loadf);
printf("\aIntroducerea a fost efectuata cu succes!\n");
m = 1;
system("pause");
break;
case 3:
system("cls");
if(!head)
{
printf("Lista nu exista!\a\n");
m=1;
system("pause");
break;
}
showF(head);
system("pause");
m=1;
break;
case 4:
system("cls");
if(!head)
{
printf("Lista nu exista!\a\n");
m=1;
system("pause");
break;
}
sort();
printf("Lista a fost sortata cu succes!\a\n");
system("pause");
m=1;
break;
case 5:
system("cls");
if(!head)
{
printf("Lista nu exista!\a\n");
m=1;
system("pause");
break;
}
showF(head);
printf("\nDati indicile elementului pentru modificare\n>");
scanf("%d",&mod);
system("cls");
modif(mod);
printf("Modificara a avut loc cu succes!\a\n");
m=1;
system("pause");
break;
case 6:
system("cls");
if(!head)
{
printf("Lista nu exista!\a\n");
m=1;
system("pause");
break;
}
showF(head);
printf("Dati numele primului element pentru interschimbare\n>");
fflush(stdin);
gets(a1);
a = searchcaseDeSchimb(a1);
printf("Dati numele primului element pentru interschimbare\n>");
fflush(stdin);
gets(b1);
b = searchcaseDeSchimb(b1);
system("cls");
swap(a,b);
printf("Interschimbarea a avut loc cu succes!\a\n");
m=1;
system("pause");
break;
case 7:
system("cls");
if(!head)
{
printf("Lista nu exista!\a\n");
m=1;
system("pause");
break;
}
printf("Dati denumirea\\modelul\\originea pentru cautare\n>");
fflush(stdin);
gets(srch);
showSearchcaseDeSchimb(srch);
m=1;
system("pause");
break;
case 8:
system("cls");
if(!head)
{
printf("Lista nu exista!\a\n");
m=1;
system("pause");
break;
}
showF(head);
printf("\nIntrodu indicile de unde lista v-a fi despartita\n");
scanf("%d",&id_devide);
if(lenght() > 1 && id_devide>0 && id_devide < lenght()){
devide(id_devide,&head2);
}
printf("Devizarea a fost efectuata cu succes!\a\n");
showF(head);
showF(head2);
m=1;
system("pause");
break;
case 9:
system("cls");
if(!head){
printf("Lista nu exista!\a\n");
m=1;
system("pause");
break;
}
if(head2){
join(&head2);
printf("Unirea a avut loc cu succes\n");
}
else {
printf("\aMai intii lista trebuie despartita!\n");
}
m=1;
system("pause");
break;
case 10:
system("cls");
if(!head){
printf("Lista nu exista!\a\n");
m=1;
system("pause");
break;
}
showF(head);
printf("\nIntrodu numarul de ordine:\n");
scanf("%d",&id_before);
if(id_before > 0 && id_before <= lenght() ){
system("cls");
add_before_id(id_before);
}
else {
printf("\aAti introdus un numar iesit din intervalul existent\n");
}
system("cls");
printf("Adaugarea s-a efectuat cu succes!\a\n");
m=1;
system("pause");
break;
case 11:
system("cls");
if(!head){
printf("Lista nu exista!\a\n");
m=1;
system("pause");
break;
}
showF(head);
printf("\nIntrodu numarul de ordine:\n");
scanf("%d",&id_after);
if(id_after > 0 && id_after <= lenght() ){
system("cls");
add_after_id(id_after);
}
else {
printf("\aAti introdus un numar iesit din intervalul existent\n");
}
system("cls");
printf("Adaugarea s-a efectuat cu succes!\a\n");
m=1;
system("pause");
break;
case 12:
system("cls");
if(!head){
printf("Lista nu exista!\a\n");
m=1;
system("pause");
break;
}
add_to_end();
system("cls");
printf("Adaugarea s-a efectuat cu succes!\a\n");
m=1;
system("pause");
break;
case 13:
system("cls");
if(!head){
printf("Lista nu exista!\a\n");
m=1;
system("pause");
break;
}
showF(head);
printf("Dati indicele elementului pentru stergere\n");
scanf("%d",&id_delete);
delete_id(id_delete);
system("cls");
printf("Stergerea a fost efectuata cu succes!\a\n");
m=1;
system("pause");
break;
case 14:
system("cls");
printf("Dati numele fisierului\n>");
fflush(stdin);
gets(savef);
save(savef);
printf("\aSalvarea a fost efectuata cu succes!\n");
m=1;
system("pause");
break;
case 15:
system("cls");
if(head)
{
printf("Dati numele fisierului\n>");
fflush(stdin);
gets(savef);
save(savef);
printf("\aSalvarea a fost efectuata cu succes!\n");
system("pause");
freem();
exit(1);
}
break;
default:
system("cls");
printf("Ati introdus o tasta incorecta!\a\n");
m=1;
system("pause");
break;
}
}
}
return 0;
}
Fisierul lab23.c
int create(int n)
{
int i;
caseDeSchimb *c,*p;
for(i=0;i<n;i++)
{
c=(caseDeSchimb*)malloc(sizeof(caseDeSchimb));
if(c == NULL) return 0;
if(i == 0)
{
head=c;
p=c;
}
else
{
p->next=c;
p=c;
}
}
p->next=NULL;
return 1;
}
void read_f()
{
caseDeSchimb *c=head;
int i=0;
while(c)
{
printf("\n****************************************\n\n");
printf("Introdu datele caseDeSchimbului %d\n",i+1);
printf("Numele: ");
scanf("%s",&c->numeCasa);
printf("Adresa: ");
scanf("%s",&c->adresa);
printf("Directorul: ");
scanf("%s",&c->directorul);
printf(" Numarul total de valute: ");
scanf("%d",&c->nrTotalValute);
printf("Banii in lei ramasi: ");
scanf("%f",&c->baniiInLeiRamasi);
c=c->next;
i++;
}
}
void showSearchcaseDeSchimb(char* s)
{
caseDeSchimb *c=head;
int i=0,k=0;
while(c)
{
if((strcmp(s,c->numeCasa)==0) || (strcmp(s,c->adresa)==0 ) ||
(strcmp(s,c->directorul)==0))
{
printf("****************************************\n\n");
printf("Datele caseDeSchimbului: %d\n",i+1);
printf("Numele: %s\n",c->numeCasa);
printf("Adresa: %s\n",c->adresa);
printf("Directorul: %s\n",c->directorul);
printf("Nr totatl de valute: %d\n",c->nrTotalValute);
printf("Banii in lei ramasi($): %.2f\n\n",c->baniiInLeiRamasi);
k++;
}
c=c->next;
i++;
}
if(k==0)
printf("Elementul nu a fost gasit!\n");
}
int prepend(caseDeSchimb pp) {
disciplina *t;
t = (caseDeSchimb*)malloc(sizeof(*t));
if(!t) { return 0; }
t->next = head;
head = t;
*t = pp; // last()-next = head; pentru circulara
return 1;
}
caseDeSchimb* searchcaseDeSchimb(char* s)
{
caseDeSchimb* c=head;
int k=0;
while(c)
{
if(strcmp(s,c->numeCasa)==0 || strcmp(s,c->adresa)==0 || strcmp(s,c-
>directorul)==0)
{
return c;
k++;
}
c=c->next;
}
if(k==0)
{
printf("Nu exista asa CasaDeSchimb!\n");
}
return NULL;
}
int lenght()
{
caseDeSchimb *c=head;
int i=0;
while(c)
{
i++;
c=c->next;
}
return i;
}
void sort()
{
caseDeSchimb *a,*b;
int i,k,l;
l=lenght();
for(i=0;i<l-1;i++)
{
a=head;
b=a->next;
for(k=0;k<l-1-i;k++)
{
if(a->baniiInLeiRamasi < b->baniiInLeiRamasi)
{
swap(a,b);
}
a=a->next;
b=b->next;
}
}
}
caseDeSchimb* end()
{
caseDeSchimb* c;
c=head;
while(c->next)
{
c=c->next;
}
return c;
}
void add_to_end(){
caseDeSchimb *c=head,*p;
while(c){
if(c->next == NULL){
p=c;
c=(caseDeSchimb*)malloc(sizeof(caseDeSchimb));
printf("\n****************************************\n\n");
printf("Introdu datele casei \n");
printf("Numele: ");
scanf("%s",&c->numeCasa);
printf("adresa: ");
scanf("%s",&c->adresa);
printf("directorul: ");
scanf("%s",&c->directorul);
printf("nrTotalValute: ");
scanf("%d",&c->nrTotalValute);
printf("baniiInLeiRamasiul($): ");
scanf("%f",&c->baniiInLeiRamasi);
p->next=c;
c->next=NULL;
break;
}
c=c->next;
}
}
Bibliografie:
1. Conspectul prelegerilor la SDA pentru studentii anului I, specialitatea
calculatoare