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 calculator {
- int serie_calculator, memorie, hdd;
- char tip_procesor[20], monitor[10];
- }b;
- int cmp_monitor(const void *a, const void *b)
- {
- struct calculator *ia = (struct calculator *)a;
- struct calculator *ib = (struct calculator *)b;
- return strcmp(ia->monitor, ib->monitor);
- }
- void adaugare_calc(b *a, int*n)
- {
- (*n)++;
- printf("Seria: ");
- scanf("%d", &((a + *n)->serie_calculator));
- printf("Memorie: ");
- scanf("%d", &((a + *n)->memorie));
- printf("HDD: ");
- scanf("%d", &((a + *n)->hdd));
- printf("Tip Procesor: ");
- scanf("%s", (a + *n)->tip_procesor);
- printf("Monitor: ");
- scanf("%s", (a + *n)->monitor);
- }
- void afisare_calc(b *a, int n,int i)
- {
- printf("Seria: %d\nMemorie: %d\nHDD: %d\nTip Procesor: %s\nMonitor: %s\n\n", (a + i)->serie_calculator, (a + i)->memorie, (a + i)->hdd, (a + i)->tip_procesor, (a + i)->monitor);
- }
- void afisare_calc_procesor(b *a, int n)
- {
- char s[20];
- int i;
- printf("Dati procesorul cautat: ");
- scanf("%s", s);
- printf("\n");
- for (i = 0; i <= n; i++)
- {
- if (strcmp(s, (a + i)->tip_procesor) == 0)
- afisare_calc(a, n, i);
- }
- }
- void cautare_calc_serie(b *a, int n)
- {
- int nr,i;
- printf("Dati seria cautat: ");
- scanf("%d", &nr);
- printf("\n");
- for (i = 0; i <= n; i++)
- if (nr == (a + i)->serie_calculator)
- afisare_calc(a, n, i);
- }
- void stergere_calc_serie(b* a, int *n)
- {
- int nr,i,k=0,j;
- printf("Dati seria: ");
- scanf("%d", &nr);
- for (i = 0; i <= *n - k; i++)
- {
- if (nr == (a + i)->serie_calculator)
- {
- k++;
- for (j = i; j < *n - k; j++)
- *(a + j) = *(a + j + 1);
- i--;
- }
- }
- *n = *n - k;
- }
- void stergere_calc_hdd(b* a, int *n)
- {
- int nr,nr1,i,k=0,j;
- printf("Dati hdd: ");
- scanf("%d", &nr);
- printf("Dati memoria: ");
- scanf("%d", &nr1);
- for (i = 0; i <= *n - k; i++)
- {
- if ((nr == (a + i)->hdd)&&(nr1==(a+i)->memorie))
- {
- k++;
- for (j = i; j < *n - k; j++)
- *(a + j) = *(a + j + 1);
- i--;
- }
- }
- *n = *n - k;
- }
- int main()
- {
- b a[20];
- int n = -1,i;
- char *cit, *sir[20];
- FILE *fis;
- FILE *fis_citire;
- fis = fopen("Fisier.txt", "w+t");
- fis_citire = fopen("Citire.txt", "r+t");
- enum{adaugare=1,afisare,salvare,afisare_procesor,afisare_fisier,cautare_serie,stergere_serie,stergere_hdd,sortare,iesire}opt;
- do {
- printf("1. Adaugarea unui calculator\n");
- printf("2. Afisarea calculatoarelor.\n");
- printf("3. Salvarea calculatoarelor intr-un fisier\n");
- printf("4. Afisarea calculatoarelor cu un anumit procesor.\n");
- printf("5. Afisarea calculatoarelor dintr-un fisier\n");
- printf("6. Cautarea unui calculator dupa serie_calculator.\n");
- printf("7. Stergerea unui calculator dupa serie.\n");
- printf("8. Stergerea calculatorelor dupa hdd si memorie.\n");
- printf("9. Sortarea calculatorelor dupa monitor.\n");
- printf("10. Iesire\n");
- printf("opt= ");
- scanf("%d", &opt);
- switch (opt)
- {
- case adaugare:adaugare_calc(a, &n);
- break;
- case afisare:for (i = 0; i <= n; i++)
- afisare_calc(a, n, i);
- break;
- case salvare:for (i = 0; i <= n; i++)
- fprintf(fis, "Seria: %d\nMemorie : %d\nHDD : %d\nTip Procesor : %s\nMonitor : %s\n\n", (a + i)->serie_calculator, (a + i)->memorie, (a + i)->hdd, (a + i)->tip_procesor, (a + i)->monitor);
- printf("\nSalvare reusita\n");
- break;
- case afisare_procesor:afisare_calc_procesor(a, n);
- break;
- case afisare_fisier:while (!feof(fis_citire))
- {
- cit = fgets(sir, 20, fis_citire);
- printf("%s\n", sir);
- }
- break;
- case cautare_serie:cautare_calc_serie(a, n);
- break;
- case stergere_serie:stergere_calc_serie(a, &n);
- break;
- case stergere_hdd:stergere_calc_hdd(a, &n);
- break;
- case sortare:qsort(a, n + 1, sizeof(b), cmp_monitor);
- for (i = 0; i <= n; i++)
- afisare_calc(a, n, i);
- break;
- case iesire:exit(0);
- break;
- default:printf("Eroare !");
- break;
- }
- } while (1);
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement