Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Fie structura muzica, descrisa de: nume cantec, nume artist, durata in secunde, anul aparitiei.
- //Sa se realizeze un meniu interactiv:
- //1. Inserarea muzicilor intr-o lista;
- //2. Afisarea ordonata a cantecelelor dupa durata;
- //3. Stergerea unui cantec cautat dupa artist;
- //4. Salvarea intr-un fisier text cu numele "melodii vechi" cu anul aparitiei mai mic decat cel precizat de utilizator;
- //5. Cautarea si afisarea melodiilor dupa numele si durata precizata de utilizator;
- //0. Iesire;
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdlib.h>
- #include <stdlib.h>
- #include <string.h>
- typedef struct muzica
- {
- char nume[20];
- char artist[20];
- int an;
- int durata;
- struct muzica* urm;
- }nod;
- //1.inserarea muzicilor intr-o lista
- nod* adaugare(char nume[20], char artist[20], int an, int durata)
- {
- nod * p, * q;
- p = (nod*)malloc(sizeof(nod));
- strcpy(p->nume, nume);
- strcpy(p->artist, artist);
- p->an = an;
- p->durata = durata;
- p->urm = NULL;
- if(p==NULL)
- {
- printf("eroare \n");
- exit(0);
- }
- if (prim == NULL)
- return p;
- else
- if (prim->durata > p->durata)
- {
- p->urm = prim;
- return p;
- }
- else
- {
- q = prim;
- while (q != NULL && q->urm->durata < p->durata)
- q = q->urm;
- p->urm = q->urm;
- q->urm = p;
- return prim;
- }
- }
- //2. Afisarea ordonata a cantecului dupa durata
- void afisare(nod* prim)
- {
- nod* q;
- for(q=prim; q!=NULL; q=q->urm)
- {
- printf("%s %s %d %d ", q->nume, q->artist, q->durata, q ->an);
- }
- }
- //3. Stergerea unui cantec cautat dupa artist
- nod* stergere(nod* prim, char artist[20])
- {
- nod* p, * q;
- if (prim != NULL)
- {
- if (strcmp(prim->artist, artist) == 0)
- {
- q = prim;
- prim = prim->urm;
- free(q);
- return (prim);
- }
- q = prim;
- while (q->urm != NULL && strcmp(q->urm->artist, artist) != 0)
- q = q->urm;
- if (q->urm != NULL && strcmp(q->artist, artist) == 0)
- {
- p = q->urm;
- q->urm = q->urm->urm;
- free(p);
- }
- return prim;
- }
- else
- return prim;
- }
- //4. Salvarea intr-un fisier text cu numele "melodii vechi" cu anul aparitiei mai mic decat cel precizat de utilizator
- salvare(nod *prim, int an)
- {
- FILE* f;
- nod* q;
- f = fopen("melodii_vechi.txt", "wt");
- if (f == NULL)
- {
- printf("Eroare!");
- }
- else
- {
- for (q = prim; q != NULL; q = q->urm)
- if (q->an < an)
- fprintf(" %s %s %d %d", q->nume, q->artist, q->an, q->durata);
- }
- fclose(f);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement