Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdlib.h>
- #include<stdio.h>
- #include<string.h>
- typedef struct film {
- char *nume, *actor;
- int an, nota;
- }b;
- int cmp_actor(const void *a, const void *b)
- {
- struct film *ia = (struct film *)a;
- struct film *ib = (struct film *)b;
- return strcmp(ia->actor, ib->actor);
- }
- void adaugare_struct(int *n,b a[50], char *nume, char *actor, int an, int nota)
- {
- (*n)++;
- (a + *n)->actor = (char*)malloc(strlen(actor) + 1);
- (a + *n)->nume = (char*)malloc(strlen(nume) + 1);
- strcpy((a + *n)->actor, actor);
- strcpy((a + *n)->nume, nume);
- (a + *n)->nota = nota;
- (a + *n)->an = an;
- }
- void afisarere(int n, b a[50])
- {
- printf("\n");
- int i;
- for (i = 0; i <= n; i++)
- printf("Nume: %s\nActor: %s\nAn: %d\nNota: %d\n\n", (a + i)->nume, (a + i)->actor, (a + i)->an, (a + i)->nota);
- printf("\n");
- }
- void stergerea(b *a, int *n)
- {
- int k = 0, i, j;
- for (i = 0; i <= (*n - k); i++)
- {
- if ((a+i)->an<2010)
- {
- k++;
- for (j = i; j <= (*n - k); j++)
- *(a + j) = *(a + j + 1);
- i--;
- }
- }
- *n = *n - k;
- }
- void orodnare_bule(int n, b a[50])
- {
- int i,k;
- b aux;
- do {
- k = 1;
- for (i = 0; i < n; i++)
- {
- if ((a + i)->nota > (a + i + 1)->nota)
- {
- aux = *(a + i);
- *(a + i) = *(a + i + 1);
- *(a + i + 1) = aux;
- }
- }
- } while (k == 0);
- }
- void matrice(int n, b *a)
- {
- FILE *fis = fopen("matirce.txt", "w+t");
- int m[20][20] = { 0 }, i, j, nr;
- for (i = 0; i <= n; i++)
- {
- nr = 0;
- for (j = 0; j < (strlen((a + i)->nume)); j++)
- {
- if (strchr("AEIOUaeiou", (a + i)->nume[j]));
- nr++;
- }
- m[i][i] = nr;
- }
- for (i = 0; i <= n; i++)
- {
- for (j = 0; j <= n; j++)
- fprintf(fis, "%d", m[i][j]);
- fprintf(fis, "\n");
- }
- }
- int main()
- {
- int n = -1,an,nota;
- char nume[20], actor[20];
- b a[50];
- enum{iesire, adaugare, afisare, stergere, ordoanare1, ordonare2, afisare1}opt;
- do {
- printf("0. Iesire\n");
- printf("1. Adaugare\n");
- printf("2. Afisare\n");
- printf("3. Stergere filme mai vechi de 2010\n");
- printf("4. Ordonarea crescatoare in functie de nota-IBDM \n");
- printf("5. Ordonare alfabetica a filmelor in functie de numele actorului \n");
- printf("6. Afisarea in fisier a matricii care contine pe diagonala principala numarul de litere din numele filmului, iar in rest 0. \n");
- printf("opt= ");
- scanf("%d", &opt);
- switch (opt)
- {
- case iesire:exit(0);
- break;
- case adaugare:printf("Nume film: ");
- scanf("%s", nume);
- printf("Nume actor: ");
- scanf("%s", actor);
- printf("An: ");
- scanf("%d", &an);
- printf("Nota IMBD: ");
- scanf("%d", ¬a);
- adaugare_struct(&n, a, nume, actor, an, nota);
- break;
- case afisare:afisarere(n, a);
- break;
- case stergere:stergerea(a, &n);
- break;
- case ordoanare1:orodnare_bule(n, a);
- break;
- case ordonare2:qsort(a, n + 1, sizeof(struct film), cmp_actor);
- break;
- case afisare1:matrice(n, a);
- break;
- default:printf("Eroare!\n");
- break;
- }
- } while (1);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement