SHARE
TWEET

Untitled

a guest Feb 27th, 2020 90 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. typedef struct
  6. {
  7.     char *nume;
  8.     char *prenume;
  9.     char CNP[14];
  10.     int varsta;
  11.  
  12. } pers;
  13.  
  14. void citire(pers **v, int *n)
  15. {
  16.     int i, j;
  17.     printf("cate persoane doriti sa introduceti: ");
  18.     scanf("%d", n);
  19.     getchar();
  20.  
  21.     (*v) = malloc(sizeof(pers) * (*n));
  22.  
  23.     for (i = 0; i < (*n); i++)
  24.     {
  25.         (*v)[i].nume = malloc(sizeof(char) * 50);
  26.         (*v)[i].prenume = malloc(sizeof(char) * 50);
  27.         printf("dati numele: ");
  28.         gets((*v)[i].nume);
  29.         printf("dati prenumele: ");
  30.         gets((*v)[i].prenume);
  31.         printf("dati varsta: ");
  32.         scanf("%d", &(*v)[i].varsta);
  33.         getchar();
  34.         printf("dati CNP(tot odata)\n");
  35.         gets((*v)[i].CNP);
  36.     }
  37. }
  38.  
  39. void afisare(pers *v, int n)
  40. {
  41.     int i, j;
  42.     for (i = 0; i < n; i++)
  43.         printf("\nNume:%s\nPrenume:%s\nVarsta:%d\nCNP:%s\n", v[i].nume, v[i].prenume, v[i].varsta, v[i].CNP);
  44. }
  45.  
  46. void modi(pers *v, int n)
  47. {
  48.     int poz, val;
  49.     printf("Ce pozitie doriti sa modificati [ 0 - %d ] ", n - 1);
  50.     scanf("%d", &poz);
  51.     getchar();
  52.  
  53.     if (poz > (n - 1))
  54.     {
  55.         printf("prea mult.");
  56.         exit(1);
  57.     }
  58.  
  59.     printf("dati numele: ");
  60.     gets(v[poz].nume);
  61.     printf("dati prenumele: ");
  62.     gets(v[poz].prenume);
  63.     printf("dati varsta: ");
  64.     scanf("%d", &v[poz].varsta);
  65.     getchar();
  66.     printf("dati CNP(tot odata)\n");
  67.     gets(v[poz].CNP);
  68. }
  69.  
  70. void realocare(pers **v, int n)
  71. {
  72.     (*v) = realloc(*v, sizeof(pers) * n);
  73. }
  74.  
  75. void stergere(pers *v, int *n)
  76. {
  77.     if ((*n) == 0)
  78.     {
  79.         printf("Stergerea a esuat (0 numere)\n");
  80.         exit(1);
  81.     }
  82.  
  83.     int poz, i;
  84.     printf("Pozitia de pe care sa sterg? [0 - %d ] ", (*n) - 1);
  85.     scanf("%d", &poz);
  86.  
  87.     for (i = poz; i < (*n) - 1; i++)
  88.         v[i] = v[i + 1];
  89.  
  90.     (*n)--;
  91.     realocare(&v, *n);
  92. }
  93.  
  94. void adaugare(pers **v, int *n)
  95. {
  96.     int i, poz;
  97.     pers aux;
  98.     printf("Pe ce pozitie doriti sa adaugati? [0 - %d] ", *n);
  99.     scanf("%d", &poz);
  100.     getchar();
  101.  
  102.     if (poz > *n)
  103.     {
  104.         printf("pozitie data prea mare\n");
  105.         exit(1);
  106.     }
  107.     (*n)++;
  108.     (*v) = realloc(*v,(*n) * sizeof(pers));
  109.     (*v)[(*n) - 1].nume = malloc(sizeof(char) * 50);
  110.     (*v)[(*n) - 1].prenume = malloc(sizeof(char) * 50);
  111.     for (i = (*n) - 1; i > poz; i--)
  112.     {
  113.         strcpy((*v)[i].nume, (*v)[i - 1].nume);
  114.         strcpy((*v)[i].prenume, (*v)[i - 1].prenume);
  115.         strcpy((*v)[i].CNP, (*v)[i - 1].CNP);
  116.         (*v)[i].varsta = (*v)[i - 1].varsta;
  117.     }
  118.  
  119.     // aux.nume = malloc(sizeof(char) * 50);
  120.     // aux.prenume = malloc(sizeof(char) * 50);
  121.     // printf("dati numele: ");
  122.     // gets(aux.nume);
  123.     // printf("dati prenumele: ");
  124.     // gets(aux.prenume);
  125.     // printf("dati varsta: ");
  126.     // scanf("%d", &aux.varsta);
  127.     // getchar();
  128.     // printf("dati CNP(tot odata)\n");
  129.     // gets(aux.CNP);
  130.     // v[poz] = aux;
  131.  
  132.     printf("dati numele: ");
  133.     gets((*v)[poz].nume); // instructiunea se duce la adresa unde este stocat numele si il schimba, se modifica si v[poz+1].nume pentru ca au aceeasi adresa.
  134.     printf("dati prenumele: ");
  135.     gets((*v)[poz].prenume); // la fel, nu s ar fi intamplat daca nu aveam in parametrii structurii *nume si *prenume.
  136.     printf("dati varsta: ");
  137.     scanf("%d", &(*v)[poz].varsta);
  138.     getchar();
  139.     printf("dati CNP(tot odata)\n");
  140.     gets((*v)[poz].CNP);
  141. }
  142.  
  143. int main()
  144. {
  145.  
  146.     pers *v;
  147.     int n;
  148.  
  149.     citire(&v, &n);
  150.     afisare(v, n);
  151.  
  152.     //modificarea unui element din vector
  153.     //modi(v, n);
  154.     //afisare(v, n);
  155.  
  156.     //stergere(v, &n);
  157.     //printf("Dupa stergere:\n");
  158.     //afisare(v, n);
  159.  
  160.     adaugare(&v, &n);
  161.     printf("Dupa adaugare:\n");
  162.     afisare(v, n);
  163.  
  164.     return 0;
  165. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top