Sunteți pe pagina 1din 12

Ministerul Educaiei al Republicii Moldova

Universitatea Tehnic a Republicii Moldova


Facultatea Calculatoare, Informatic i Microelectronic
Specialitatea Tehnologii Informaionale
Raport
Laboratorul nr. 1

Tema: Implimentarea tipului de date abstract Tablou de structuri n C
A efectuat ___Ppu Vitalie ,TI-!"___
#$umele, prenumele %tu&entului, grupa'
A (erificat ___)uchiano( )u&mila______
#$umele, prenumele coor&onatorului'
$ota ____________________________
Chiinu *+"
Scopul lucrrii:
,e a implementa tipul a-%tract &e &ate ta-loul &e %tructuri i &e a ela-ora programul care
crea.a, afi%ea.a, %ortea.a, mo&ific ta-loul &e %tructuri/
Formularea problemei varianta 1!" 0
,e alctuit un articol cu $ 1n%crieri, care conine informaia &e%pre un grup &e automo-ile/

#ro$ramul in %:
File auto.h
t2pe&ef %truct ma%ina
3
char marca4*+56
char an4*+56
char nr_reg4*+56
char tip4*+56
char ma%a4*+56
7 ma%ina6
(oi& input_im#ma%ina S45,int n'6
(oi& output_im#ma%ina S45,int n'6
int cautare#ma%ina S45,int n,char marca45'6
ma%ina8 &elete_im#ma%ina S45,int 8n,int 9'6
(oi& %ortare_im#ma%ina S45,int n'6
ma%ina8 ata%are_im#ma%ina S45,int n,int p'6
(oi& mo&if_im#ma%ina S45,int 9'6
int in_file#ma%ina S45,int n,char infoma%ini45'6
int from_file#ma%ina S45,int n,char infoma%ini45'6
ma%ina8 in%ert_im#ma%ina S45,int 8n,int 9'6
int cautare*#ma%ina S45,int n,char8 t'6
File auto.c
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include "auto.h"
void input_im(masina S[],int n)

int i!
puts(""#############################$")!
puts("%&ntroduceti datele 'asinii%")!
puts("(#############################)")!
*or(i+,!i<n!i--)

print*(" &n*o date .d/n",i-0)!
print*(" 'arca1 ")! **lush(stdin)! gets(S[i].marca)!
print*(" 2nul1 ")! **lush(stdin)! gets(S[i].an)!
print*(" 3umarul de inregistrare1 ")! **lush(stdin)! gets(S[i].nr_reg)!
print*(" 4ip1 ")! **lush(stdin)! gets(S[i].tip)!
print*(" 'asa totala (5g)1 ")! scan*(".s",6S[i].masa)!
7
7
void output_im(masina S[],int n)

int i!
puts(""############$")!
puts("%8a9a de date%")!
puts("(############)")!
*or(i+,!i<n!i--)

puts("::::::::::::::::::::::::::::::::")!
print*("'asina .d/n",i-0)!
print*("'arca1 ")! puts(S[i].marca)!
print*("2nul1 ")! puts(S[i].an)!
print*("3umarul de inregistrare1 ")! puts(S[i].nr_reg)!
print*("4ip1 ")! puts(S[i].tip)!
print*("'asa totala1 ")! print*(S[i].masa,"5g")!
puts(" ")!
7
7
int cautare(masina; S,int n,char; t)

int i,5!
5+:0!
*or(i+,!i<n!i--)
i* (strcmp(S[i].marca,t)++,) 5+i!
print*("'arca1 ")! puts(S[i].marca)! puts("")!
print*("2nul1 ")! puts(S[i].an)! puts("")!
print*("3umarul de inregistrare1 ")! puts(S[i].nr_reg)! puts("")!
print*("4ip1 ")! puts(S[i].tip)! puts("")!
print*("'asa totala1 ")! puts(S[i].masa)! puts("")!
print*("&nde<ul inregistrarii1 .d",5)!
7
i* (5++:0) puts("3ici o inregistrare nu a *ost gasita = ")!
return 5!
7
int cautare>(masina S[],int n,char; t)

int i,5!
5+:0!
*or(i+,!i<n!i--)
i* (strcmp(S[i].marca,t)++,) 5+i!
i* (5++:0) puts("3ici o inregistrare nu a *ost gasita = ")!
return 5!
7
masina; delete_im(masina S[],int ;n,int 5)

int i!
i* (5=+:0)
*or (i+5!i<;n:0!i--)
strcp?(S[i].marca,S[i-0].marca)!
strcp?(S[i].an,S[i-0].an)!
strcp?(S[i].nr_reg,S[i-0].nr_reg)!
strcp?(S[i].tip,S[i-0].tip)!
strcp?(S[i].masa,S[i-0].masa)!
7
S+(masina;)realloc(S,(;n:0);si9eo*(;S))!
puts("/n Stergerea a trecut cu succes")!
;n+;n:0!
7
else puts("@roare1 3u este speci*icat inde<ul de stergere")!
return S!
7
void sortare_im(masina; S,int n)

int i,A!
masina tmp!
*or (i+,!i<n!i--)
*or (A+,!A<n:0!A--)
i* ( strcmp(S[A-0].marca,S[A].marca)<,)
tmp+S[A]!
S[A]+S[A-0] !
S[A-0]+tmp!
7
7
void atasare_im(masina S[],int ;n,int p)

int i,m! char au<[>,]!


m+;n!
S+(masina;)realloc(S,(m-p);si9eo*(;S))!
*or(i+m!i<(m-p)!i--)

puts("::::::::::::::::::::::::::::::::")!
print*("&nregistrarea .d/n",i-0)!
print*("'arca1 ")!**lush(stdin)! gets(S[i].marca)!
print*("2nul1 ")! **lush(stdin)! gets(S[i].an)!
print*("3umarul de inregistrare1 ")! **lush(stdin)! gets(S[i].nr_reg)!
print*("4ip1 ")! **lush(stdin)! gets(S[i].tip)!
print*("'asa totala1 ")! **lush(stdin)! gets(S[i].masa)!
puts(" ")!
7
;n+m-p!
7
void modi*_im(masina; S,int 5)

char op!
puts("::::Boriti sa modi*icati 'arcaC (BaD3u)1 ?Dn")! op+getch()!
i* (op++E?E) print*("&ntroduceti valoarea noua/n")! **lush(stdin)!
gets(S[5].marca)! 7
puts("::::Boriti sa modi*icati 2nulC (BaD3u)1 ?Dn")! op+getch()!
i* (op++E?E) print*("&ntroduceti valoarea noua/n")! **lush(stdin)!
gets(S[5].an)! 7
puts("::::Boriti sa modi*icati 3umarul de inregistrareC (BaD3u)1 ?Dn")!
op+getch()!
i* (op++E?E) print*("&ntroduceti valoarea noua/n")! **lush(stdin)!
gets(S[5].nr_reg)! 7
puts("::::Boriti sa modi*icati 4ipulC (BaD3u)1 ?Dn")! op+getch()!
i* (op++E?E) print*("&ntroduceti valoarea noua/n")! **lush(stdin)!
gets(S[5].tip)! 7
puts("::::Boriti sa modi*icati 'asa totalaC (BaD3u)1 ?Dn")! op+getch()!
i* (op++E?E) print*("&ntroduceti valoarea noua/n")! **lush(stdin)!
gets(S[5].marca)! 7
puts("S*irshit de inregistrare")!
7
int in_*ile(masina S[],int n)

int i!
F&G@ ;*p!
*p+*open("auto.t<t","H")!
i* (=*p) puts(" Fisierul nu poate *i deschis")! return ,!7
*or(i+,!i<n!i--)
*print*(*p,".s/t.s/t.s/t.s/t
.s/n",S[i].marca,S[i].an,S[i].nr_reg,S[i].tip,S[i].masa)!
*close(*p)!
return 0!
7
int *rom_*ile(masina S[],int n)

int i!
F&G@ ;*p!
*p+*open("auto.t<t","r")!
i* (=*p) puts("Fisierul nu poate *i deschis")! return ,! 7
*or(i+,!i<n!i--)
*scan*(*p,".s.s.s.s.s",S[i].marca,S[i].an,S[i].nr_reg,S[i].tip,6S[i].masa)!
*close(*p)!
return 0!
7
masina; insert_im(masina S[],int ;n,int 5)

int i,m!
m+;n!
S+(masina;)realloc(S,(m-0);si9eo*(;S))!
*or (i+m!i>5:0!i::)
strcp?(S[i].marca,S[i:0].marca)!
strcp?(S[i].an,S[i:0].an)!
strcp?(S[i].nr_reg,S[i:0].nr_reg)!
strcp?(S[i].tip,S[i:0].tip)!
strcp?(S[i].masa,S[i:0].masa)!
7
puts("&ntroduceti datele despre 'asina1 ::::::::::::::::::::::::::::::::")!
print*("inregistrarea .d/n",5)!
print*("3ume1 ")! **lush(stdin)! gets(S[5:0].marca)!
print*("2nul1 ")! **lush(stdin)! gets(S[5:0].an)!
print*("3umarul de inregistrare1 ")! **lush(stdin)! gets(S[5:0].nr_reg)!
print*("4ip1 ")! **lush(stdin)! gets(S[5:0].tip)!
print*("'asa totala1 ")! **lush(stdin)! gets(S[5:0].masa)!
puts(" ")!
;n+m-0!
return S!
7
int main()

int n,trp,5,p,l,v!
char t[>,],r[>,],;in*omasini,;bd!
masina; S!
S+3IGG!
Hhile (0)
s?stem("cls")!
puts("/n/n")!
puts("/t/tJKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKL")!
puts("/t/tM 'eniu M")!
puts("/t/tNKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKO")!
puts("/t/tM 0 K 2locarea memoriei M")!
puts("/t/tM > K &ntroducerea datelor despre masini M")!
puts("/t/tM P K 2*isarea datelor despre masini M")!
puts("/t/tM Q K Rautarea masinii dupa 3ume M")!
puts("/t/tM S K Stergerea unei masini gasit M")!
puts("/t/tM T K Sortarea 8a9ei de date M")!
puts("/t/tM U K 2daugare masini M")!
puts("/t/tM V K 'odi*icarea in*o despre masini M")!
puts("/t/tM W K &nserarea in*o date M")!
puts("/t/tM0, K &nscrierea in 8a9a de date M")!
puts("/t/tM00 K &nscrierea din 8a9a de date M")!
puts("/t/tNKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKO")!
puts("/t/tM , K @<it M")!
puts("/t/tXKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKKY")!
puts("")!
scan*(".d",6trp)!
i* (trp++,) return ,!
i* (S++3IGG 66 trp=+0) puts("3u ati alocat memorie pentru tabel===")!
getch()! 7
else
sHitch (trp)

case 0 1 print*("&ntroduceti numarul de masini1 ")! scan*(".d",6n)!


S+3IGG!
S+(masina;)malloc(n;si9eo*(masina))!
i* (S++3IGG) puts("nu ati alocata memoria")!
else puts("'emoria a *ost alocata cu succes")! getch()!
brea5! 7
case > 1 puts("Bati datele1 ")! input_im(S,n)! brea5 !7
case P 1 puts("Rontinutul 8B 1 ")! output_im(S,n)! getch()! brea5! 7
case Q 1 puts("Rautarea masinii dupa 3ume 1 ")!
puts("Bati numele pentru cautare 1 ")! **lush(stdin)! gets(t)!
cautare(S,n,t)! getch()!
brea5! 7
case S 1
puts("Bati marca masinii care vreti sa o stergeti din 8B")!
**lush(stdin)! gets(t)!
5+cautare(S,n,t)!
S+delete_im(S,6n,5)!
getch()! brea5! 7
case T1 sortare_im(S,n)! puts("2*isati, pentru a vedea 8B sortata")!
getch()! brea5! 7
case U1 print*("Bati numarul de in*o date pentru care trebuie atasat1 ")!
scan*(".d",6p)!
atasare_im(S,6n,p)!
getch()!
brea5!
7
case V1 puts("Bati marca masinii care doriti sa o modi*icati 1 ")!
**lush(stdin)! gets(r)!
5+cautare>(S,n,r)!
modi*_im(S,5)! getch()!
brea5! 7
case W1 puts("&ntroduceti po9itia in care doriti sa inserati o masina noua1
")!
scan*(".d",6v)!
S+insert_im(S,6n,v)!
getch()!
7
brea5!
case 0,1 l+,!
l+in_*ile(S,n)!
i* (l++,) puts("Salvarea in *isier a esuat")!
else puts("Salvarea in *isier s:a reali9at cu succes")! getch()!
brea5! 7
case 001
*rom_*ile(S,n)!
puts("Ritirea din *isier s:a reali9at cu succes")! getch()!
brea5!
7
case , 1return ,!7
de*ault1 puts("&ntroduceti o optiune din meniu")!
brea5!7
7
7
77
Re&ultatul:
Meniul principal:
'locarea memoriei:
(ntroducerea datelor:
')isarea datelor:
%autarea unui obiect dupa nume:
Ster$erea unui obiect:
Modi)icare obiect:
'dau$area unui obiect:
(nserare un obiect:
(nscrierea in )isier:
%itirea din )isier:
%onclu&ia:
:fectu1n& acea%t lucrare &e la-orator, am o-inut a-ilitatea &e a lucra cu %tructuri &e &ate i a-ilitatea &e a
crea funciile care ge%tionea. o -a.a &e &ate cu %tructura implimentat/ A%tfel am 1ntrit cunotinele
trecute la partea teoretic i am o-inut a-iliti noi/

S-ar putea să vă placă și