Sunteți pe pagina 1din 9

/*1. Într-un depozit se află diverse utilaje.

Informaţiile de interes pentru


fiecare utilaj sunt:denumirea, anul de fabricaţie, sectorul de depozitare. Să se
scrie un program care realizeazăurmătoarele:
1. Introducerea unui utilaj nou
5 2. Afişarea utilajelor din depozit.
3. Afisarea utilajelor din deposit care au anul fabicației mai mic decât un an dat
de utilizator de la tastatură.
4. Transformarea primei litere din denumirea utilajelor in litera mare dacă
aceasta este litera mica.
10 5. Salvarea tuturor utilajelor dintr-un anumit sector precizat de utilizator intr-
un fișiere text cu numele utilaj_sector.txt.
6. Ştergerea unui utilaj precizat prin denumire;
7. Iesire*/
#include<stdio.h>
15 #include<stdlib.h>
#include<string.h>
typedef struct depozit {
char *denumire, *sector;
int an;
20 struct depozit *urm;
}nod;
nod *introducere(nod *prim, char *denumire, char *sector, int an)
{
nod *q, *p;
25 p = (nod*)malloc(sizeof(nod));
p->denumire = (char*)malloc(strlen(denumire) + 1);
p->sector = (char*)malloc(strlen(sector) + 1);
strcpy(p->denumire, denumire);
strcpy(p->sector, sector);
30 p->an = an;
p->urm = NULL;
if (p == NULL || p->denumire == NULL)
{
printf("Eroare la alocare!\n\n");
35 exit(0);
}
if (prim == NULL)
return p;
else
40 if (strcmp(prim->denumire, denumire) > 0)
{
p->urm = prim;
return p;
}
45 else
{
q = prim;
while (q->urm != NULL && strcmp(q->urm->denumire, q->denumire) < 0)
q = q->urm;
50 p->urm = q->urm;
q->urm = p;
return prim;
}
}
55 void afisare(nod *prim)
{
nod *q;
int i = 1;
q = prim;
while (q != NULL)
{
printf("Utilaj %d\nDenumire: %s\nAnul fabricatiei: %d\nSector: %s\n\n", i+
5 +, q->denumire, q->an, q->sector);
q = q->urm;
}
}
void an_fabric(nod *prim)
10 {
nod *q;
int i = 1, a;
printf("Introduceti anul de fabricatie dorit: ");
scanf("%d", &a);
15 q = prim;
while (q != NULL)
{
if(q->an<a)
printf("Utilaj %d\nDenumire: %s\nAnul fabricatiei: %d\nSector: %s\n\n", i+
20 +, q->denumire, q->an, q->sector);
q = q->urm;
}
}
void litera(nod *prim)
25 {
nod *q;
int i = 1;
q = prim;
while (q != NULL)
30 {
if (q->denumire[0] >= 'a' && q->denumire[0] <= 'z')
q -> denumire[0] -= 32;
q = q->urm;
}
35 }
void fisier(nod *prim)
{
nod *q;
int i = 1;
40 FILE *f;
f = fopen("utilaj_sector.txt", "wt");
q = prim;
if (f == NULL)
printf("Eroare fisier!\n\n");
45 else
{
while (q != NULL)
{
fprintf(f, "%s\n%d\n%s\n", q->denumire, q->an, q->sector);
50 q = q->urm;
}
fclose(f);
}
}
55 nod *stergere(nod *prim, char *denumire)
{
nod *q, *p;
if (prim != NULL)
{
if (strcmp(prim->denumire, denumire) == 0)
{
q = prim;
5 prim = prim->urm;
free(q->denumire);
free(q);
return prim;
}
10 q = prim;
while (q->urm != NULL && strcmp(q->urm->denumire, denumire) != 0)
q = q->urm;
if (q->urm != NULL && strcmp(q->urm->denumire, denumire) == 0)
{
15 p = q->urm;
q->urm = q->urm -> urm;
free(p->denumire);
free(p);
}
20 return prim;
}
else
return prim;
}
25 int main()
{
nod *prim;
int opt, an;
char denumire[20], sector[20];
30 prim = NULL;
do
{
system("cls");
printf("1.Introducere utilaj nou\n2.Afisarea utilajelor din
35 depozit\n3.Afisarea utilajelor care au anul fabricatiei mai mic decat un an citit
de la tastatura\n4.Transformarea primei litere din denumire in litera
mare\n5.Salvarea tuturor utilajelor dintr-un sector intr-un fisier\n6.Stergerea
unui utilaj precizat prin denumire\n7.Iesire\nOptiunea dumneavoastra: ");
scanf("%d", &opt);
40 switch (opt)
{
case 1:
system("cls");
printf("Denumire: ");
45 scanf("%s", denumire);
printf("Anul fabricatiei: ");
scanf("%d", &an);
printf("Sector: ");
scanf("%s", sector);
50 prim = introducere(prim, denumire, sector, an);
system("cls");
printf("Utilag adaugat!\n\n");
system("pause");
break;
55 case 2:
system("cls");
afisare(prim);
system("pause");
break;
case 3:
system("cls");
an_fabric(prim);
5 system("pause");
break;
case 4:
system("cls");
litera(prim);
10 afisare(prim);
system("pause");
break;
case 5:
system("cls");
15 fisier(prim);
printf("Utilaje salvate!\n\n");
system("pause");
break;
case 6:
20 system("cls");
printf("Introduceti denumirea utilajului: ");
scanf("%s", denumire);
prim = stergere(prim, denumire);
system("cls");
25 fisier(prim);
afisare(prim);
system("pause");
break;
case 7:
30 system("cls");
printf("Program terminat!\n\n");
return 0;
break;
default:
35 system("cls");
printf("Optiune invalida!\n\n");
system("pause");
break;
}
40 } while (1);
}
/*2. Scrieti un program care tine evidenta calculatoarelor dintr-un magazin,
pentru fiecare calculator specificânduse: serie_calculator, tip_procesor, memorie,
hdd, monitor.
45 1. Adaugarea unui calculator
2. Afisarea calculatoarelor în ordine crecătoare după memorie.
3. Salvarea calculatoarelor intr-un fisier
4. Afisarea calculatoarelor cu un anumit procesor.
5. Cautarea unui calculator dupa serie_calculator.
50 6. Stergerea unui calculator dupa serie.
7. Sa se puna pe diagonala secundara a unei matrice memoria calculatoarelor, iar
pe restul elementelor 0.
0. Ieșire*/
#include<stdio.h>
55 #include<stdlib.h>
#include<string.h>
typedef struct calculator {
char *serie, *procesor, *hdd, *monitor;
int memorie;
struct calculator *urm;
}nod;
nod *adaugare(nod *prim, char *serie, char*procesor, char*hdd, char*monitor, int
5 memorie)
{
nod *q, *p;
p = (nod*)malloc(sizeof(nod));
p->serie = (char*)malloc(strlen(serie) + 1);
10 p->procesor = (char*)malloc(strlen(procesor) + 1);
p->hdd = (char*)malloc(strlen(hdd) + 1);
p->monitor = (char*)malloc(strlen(monitor) + 1);
strcpy(p->serie, serie);
strcpy(p->procesor, procesor);
15 strcpy(p->hdd, hdd);
strcpy(p->monitor, monitor);
p->memorie = memorie;
p->urm = NULL;
if (prim == NULL)
20 return p;
else
if (prim->memorie > p->memorie)
{
p->urm = prim;
25 return p;
}
else
{
q = prim;
30 while (q->urm != NULL && prim->memorie > p->memorie)
q = q->urm;
p->urm = q->urm;
q->urm = p;
return prim;
35 }
}
void afisare(nod *prim)
{
nod *q;
40 int i = 1;
q = prim;
while (q != NULL)
{
printf("Calculator %d\nSerie: %s\nProcesor: %s\nHDD: %s\nMonitor:
45 %s\nMemorie: %d\n\n", i++, q->serie, q->procesor, q->hdd, q->monitor, q->memorie);
q = q->urm;
}
}
void salvare(nod *prim)
50 {
nod *q;
FILE *f;
f = fopen("salvare.txt", "wt");
q = prim;
55 if (f == NULL)
printf("Eroare fisiser!\n\n");
else
{
while (q != NULL)
{
fprintf(f, "%s\n%s\n%s\n%s\n%d\n", q->serie, q->procesor, q->hdd, q-
>monitor, q->memorie);
5 q = q->urm;
}
fclose(f);
}
}
10 void afisare_proc(nod *prim)
{
nod *q;
int i = 1;
char pr[20];
15 printf("Procesorul dorit: ");
scanf("%s", pr);
q = prim;
while (q != NULL)
{
20 if(strcmp(q->procesor,pr)==0)
printf("Calculator %d\nSerie: %s\nProcesor: %s\nHDD: %s\nMonitor:
%s\nMemorie: %d\n\n", i++, q->serie, q->procesor, q->hdd, q->monitor, q->memorie);
q = q->urm;
}
25 }
void cautare_serie(nod *prim)
{
nod *q;
int i = 0;
30 char s[20];
printf("Introduceti serie: ");
scanf("%s", s);
q = prim;
while (q != NULL)
35 {
if (strcmp(q->serie, s) == 0)
{
printf("Serie: %s\nProcesor: %s\nHDD: %s\nMonitor: %s\nMemorie:
%d\n\n", q->serie, q->procesor, q->hdd, q->monitor, q->memorie);
40 i = 1;
}
q = q->urm;
if (i == 1)
break;
45 }
}
nod *stergere(nod *prim, char *serie)
{
nod *q, *p;
50 if (prim != NULL)
{
if (strcmp(prim->serie, serie) == 0)
{
q = prim;
55 prim = prim->urm;
free(q->serie);
free(q);
return prim;
}
q = prim;
while (q->urm != NULL && strcmp(q->urm->serie, serie) != 0)
q = q->urm;
5 if (q->urm != NULL && strcmp(q->urm->serie, serie) == 0)
{
p = q->urm;
q->urm = q->urm->urm;
free(p->serie);
10 free(p);
}
return prim;
}
else
15 return prim;
}
void matrice(nod *prim, int n)
{
nod *q;
20 int i, j;
q = prim;
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
25 if (i + j == n - 1)
{
printf("%d ", q->memorie);
q = q->urm;
}
30 else
printf("0 ");
printf("\n");
}

35 }
int main()
{
nod *prim;
int opt, memorie, n = 0;
40 char serie[20], procesor[20], hdd[20], monitor[20];
prim = NULL;
do
{
system("cls");
45 printf("0.Iesire\n1.Adaugarea unui calculator\n2.Afisare crescatoare dupa
memorie\n3.Salvare in fisier\n4.Afisare calculatoare cu un anumit
procesor\n5.Cautare dupa serie\n6.Stergerea unui calculator dupa serie\n7.Matrice
dupa memorie\nOptiunea dumneavoastra: ");
scanf("%d", &opt);
50 switch (opt)
{
case 0:
system("cls");
printf("Program terminat!\n\n");
55 return 0;
break;
case 1:
system("cls");
printf("Serie: ");
scanf("%s", serie);
printf("Procesor: ");
scanf("%s", procesor);
5 printf("HDD: ");
scanf("%s", hdd);
printf("Monitor: ");
scanf("%s", monitor);
printf("Memorie: ");
10 scanf("%d", &memorie);
prim = adaugare(prim, serie, procesor, hdd, monitor, memorie);
system("cls");
printf("Calculator adaugat!\n\n");
system("pause");
15 n++;
break;
case 2:
system("cls");
afisare(prim);
20 system("pause");
break;
case 3:
system("cls");
salvare(prim);
25 printf("Calculatoare salvate!\n\n");
system("pause");
break;
case 4:
system("cls");
30 afisare_proc(prim);
system("pause");
break;
case 5:
system("cls");
35 cautare_serie(prim);
system("pause");
break;
case 6:
system("cls");
40 printf("Introduceti seria calculatorului: ");
scanf("%s", serie);
prim = stergere(prim, serie);
system("cls");
afisare(prim);
45 system("pause");
break;
case 7:
system("cls");
matrice(prim, n);
50 printf("\n\n");
system("pause");
break;
default:
system("cls");
55 printf("Optiune invalida!\n\n");
system("pause");
break;
}
} while (1);
}

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