RAPORT
Lucrarea de laborator nr.2
la Structuri de date și algoritmi
A efectuat:
st. gr. C-201 C. Cațer
A verificat:
dr., conf.univ. M. Kulev
Chişinău -2021
Lucrarea de laborator nr.2
Varianta 3: Hotel
Codul programului:
Fișierul
hotel.h
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
struct hotel{
char denumirea[100];
char adresa[100];
char stele[100];
int costul;
struct hotel* next;
};
typedef struct hotel hotel;
hotel *head;
Fișierul :
function.c
#include "hotel.h"
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
int create(int n)
{
hotel *c,*p;
int i;
for(i=0;i<n;i++)
{
c=(hotel*)malloc(sizeof(*c));
if (i==0)
{
head=c;
} else {
p->next=c;
}
p=c;
}
c->next=NULL;
return 1;
}
}
}
Fișierul: Main
main.c
#include "functions.c"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
int i=0,l=0,k,n,n1,m=0,id=0,f,rs;
hotel *a,*b,*p,*cautat,*v;
hotel s,y;
char adr[100],adr1[100],adr2[100],num[100],*fname;
int optiune;
optiune=0;
do{
system("CLS");
printf("\t\t\tLucrarea de laborator 2\n\t\t\t\tla disciplina\n\t\t\tStructuri de date
si algoritmi \n\n");
puts(" >> MENU <<");
puts(" 1. Crearea listei.");
puts(" 2. Introducerea datelor.");
puts(" 3. Afisarea datelor.");
puts(" 4. Cautarea unui element.");
puts(" 5. Modificarea listei.");
puts(" 6. Determinarea lungimei listei.");
puts(" 7. Sortarea elementelor.");
puts(" 8. Interschimbarea a 2 elemente.");
puts(" 9. Eliberaraea memoriei.");
puts(" 0. Iesire.");
printf("\n Alegeti optiunea: ");
scanf("%d",&optiune);
switch (optiune){
case 1: {
printf(" Dati numarul de hotele: ");
scanf("%d",&n);
n1=create(n);
system("PAUSE");
break;
}
case 2: {
if(!head){
puts(" Memoria nu a fost alocata");
getch();
break;
}
if(!id)
{ read(head,n);
id=1;
}
else
puts(" Datele au fost deja introduse");
system("PAUSE");
break;
}
case 3: {
if(!head){puts(" Memoria nu a fost alocata");}
if(id)
{
puts(" Lista de structuri");
show(head);
}
else
{
printf(" Doriti sa introduceti informatia?(1/0): ");
scanf("%d",&f);
if(f)
{read(head,n);
id=1;
puts(" Lista de structuri");
show(head);
}
}
system("PAUSE");
break;
}
case 4: {
printf(" Introduceti denumirea de cautat: ");
fflush(stdin);
gets(adr);
p=searchs(head,adr);
if(p==0){
puts(" Hotelul nu a fost gasit in baza de date");
puts(" Pentru a continua apasa-ti tasta 'Enter'");
getch();
break;
}
puts(" Hotelul cautat");
printf(" Denumirea: %s\n Adresa: %s\n Stele: %s\n Costul: %d\n",p-
>denumirea,p->adresa,p->stele,p->costul);
system("PAUSE");
break;
}
case 5: {
printf(" Dati denumirea hotelului pe care doriti sa-l modificati: ");
fflush(stdin);
gets(adr);
cautat=searchs(head,adr);
if(cautat==0)
{
puts(" Hotelul nu a fost gasit in baza de date");
puts(" Pentru a continua apasa-ti tasta 'Enter'");
getch();
break;
}
modify(head,cautat);
printf(" Doriti sa afisati hotelul modificat?(1/0): ");
scanf("%d",&f);
if(f)
{
puts(" Hotelul dupa modificare");
show(cautat);
puts("\n Pentru a continua apasa-ti tasta 'Enter'");
getch();
break;
}
else break;
system("PAUSE");
break;
}
case 6: {
if(!head)
{
puts("Memoria nu a fost alocata");
getch();
break;
}
k=lenght(head);
printf(" Lungimea listei este << ");
printf("%d",k);
printf(" >>\n");
system("PAUSE");
break;
}
case 7: {
sorts(head);
puts(" Lista a fost sortata");
printf(" Doriti sa afisati lista sortata(1/0): ");
scanf("%d",&f);
if(f)
{
puts(" Lista dupa sortare");
show(head);
}
puts("\n Pentru a continua apasa-ti tasta 'Enter'");
getch();
break;
system("PAUSE");
break;
}
case 8: {
printf(" Dati adresa primului element de schimbat: ");
fflush(stdin);
gets(adr1);
a=searchs(head,adr1) ;
if(a==0)
{
puts(" Elementul cu asa adresa nu a fost gasit");
getch();
break;
}
printf(" Dati adresa la al doilea element de schimbat: ");
fflush(stdin);
gets(adr2);
b=searchs(head,adr2);
if(b==0)
{
puts(" Elementul cu asa adresa nu a fost gasit");
getch();
break;
}
swaps(a,b);
puts(" Interschimbarea elementelor a fost efectuata cu succes");
printf(" Doriti sa fie afisata lista modificata(1/0): ");
scanf("%d",&f);
if(f)
{
printf(" Lista dupa interschimbare\n");
show(head);
}
puts("\n Pentru a continua apasa-ti tasta 'Enter'");
getch();
break;
system("PAUSE");
break;
}
case 9: {
head=freem(head);
if(head)
puts(" Lista nu a fost eliberata") ;
if(!head)
id=0;
puts(" Memoria a fost eliberata cu succes!!!");
system("PAUSE");
break;
}
case 0:{