Sunteți pe pagina 1din 3

#define _CRT_SECURE_NO_WARNINGS

#define citeste(x) scanf("%d",&x)


#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef struct telefon


{
char *marca;
int pret;
struct telefon *urm;
}nod;

nod *adaugare(nod *prim, char mar[], int pr)


{
nod *p;
p = (nod *)malloc(sizeof(nod));
p->marca = (char *)malloc(strlen(mar) + 1);
strcpy(p->marca, mar);
p->pret = pr;
p->urm = NULL;
if (p == NULL || p->marca == NULL)
{
printf("Eroare la alocarea de memorie!");
exit(0);
}

if (prim == NULL)
{
return p;
}
else
{
p->urm = prim;
return p;
}

free(p);
free(p->marca);

int validare(char mar[])


{
int i, k=0;
if (mar[0] >= 'A' && mar[0] <= 'Z')
{
k = 1;
for (i = 1; i < strlen(mar); i++)
if (mar[i] >= 'a' && mar[i] <= 'z' || (mar[i] == '0' || mar[i] ==
'1' || mar[i] == '2' || mar[i] == '3' || mar[i] == '4' || mar[i] == '5' || mar[i] == '6'
|| mar[i] == '7' || mar[i] == '8' || mar[i] == '9'));
else k = 0;
}
else
k = 0;
return k;
}

void afisare(nod *prim)


{
nod *q;
for(q=prim;q!=NULL;q=q->urm)
{
printf("Marca: %s Pret: %d\n", q->marca, q->pret);
}

void salva(nod *prim, int pr)


{
nod *q;
FILE *f;
f = fopen("telefoane_ieftine.txt", "wt");
if (f == NULL)
printf("Eroare la deschiderea fisierului!\n");
else
{
for (q = prim; q != NULL; q = q->urm)
{
if (q->pret < pr)
fprintf(f, "Marca: %s Pret: %d\n", q->marca, q->pret);
}
fclose(f);
}

int main()
{
enum{iesire,adaug,afis,salvare}opt;
nod *prim = NULL;
char mar[20];
int pr;
do
{

printf("0.Iesire\n");
printf("1.Adaugarea unui nou telefon in stoc(prima litera e litera mare,
urmatoarele caractere sunt litere sau cifre).\n");
printf("2.Afisarea telefoanelor din magazin.\n");
printf("3.Salvarea telefoanelor cu pretul mai mic decat un pret citit de la
tastatura, intr-un fisier cu numele telefoane_ieftine.txt.\n");

printf("Optiunea dvs :");


while (citeste(opt)!=1 && getchar()!='\n');

switch (opt)
{
case iesire:
exit(0);
break;
case adaug:

do
{
printf("Dati marca telefonului:");
scanf("%s", mar);
} while (validare(mar)==0);
printf("Dati pretul telefonului:");
scanf("%d", &pr);
prim = adaugare(prim, mar, pr);
break;
case afis:
afisare(prim);
break;
case salvare:
printf("Dati pretul:");
scanf("%d", &pr);
salva(prim, pr);
break;
default:
printf("Optiune gresita!\n");
break;
}

} while (1);

system("pause");
return 0;
}

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