SHARE
TWEET

task6

a guest Feb 27th, 2020 80 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. } Persoana;
  12.  
  13. void alocare(Persoana **v, int n)
  14. {
  15.     *v=malloc(n*sizeof(Persoana));
  16. }
  17.  
  18. void citire(Persoana v[],int n)
  19. {
  20.     int i;
  21.     //char numec[20],prenumec[20];
  22.     for(i=0; i<n; i++)
  23.     {
  24.         v[i].nume = malloc(sizeof(char) * 20);
  25.         v[i].prenume = malloc(sizeof(char) * 20);
  26.         printf("dati numele: ");
  27.         fflush(stdin);
  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.  
  40. void modificare(Persoana v[],int n,int poz,Persoana noua)
  41. {
  42.     v[poz]=noua;
  43. }
  44.  
  45. void stergere(Persoana **v,int *n,int pozSters)
  46. {
  47.     for(int i=pozSters; i<*n-1; i++)
  48.         (*v)[i]=(*v)[i+1];
  49.     (*n)--;
  50.     *v=realloc(*v,*n*sizeof(Persoana));
  51. }
  52.  
  53. int adaugare(Persoana **v,int *n,int poz,Persoana baga)
  54. {
  55.  
  56.     if(poz>*n+1 || poz<0)
  57.         return -1;
  58.  
  59.     *v=realloc(*v,(*n+1)*sizeof(Persoana));
  60.     for(int i=(*n); i>=poz; i--)
  61.         *(*v+i+1)=*(*v+i);
  62.     *(*v+poz)=baga;
  63.     (*n)++;
  64.     return 0;
  65. }
  66.  
  67. void afisare(Persoana v[],int n)
  68. {
  69.     for(int i=0; i<n; i++)
  70.         printf("Persoana %d:\nNume: %s\nPrenume: %s\nCNP: %s\nVarsta: %d\n----------------------\n",i,v[i].nume,v[i].prenume,v[i].CNP,v[i].varsta);
  71. }
  72.  
  73.  
  74.  
  75. int main()
  76. {
  77.     Persoana *p,noua,baga;
  78.     int n, poz,pozSters,pozAdauga;
  79.     printf("n= ");
  80.     scanf("%d",&n);
  81.     alocare(&p,n);
  82.     citire(p,n);
  83.     //afisare(p,n);
  84.     /*noua.nume=malloc(20*sizeof(char));
  85.     noua.prenume=malloc(20*sizeof(char));
  86.     printf("Pozitia de modificat:");
  87.     scanf("%d",&poz);
  88.     printf("Nume nou:");
  89.     fflush(stdin);
  90.     gets(noua.nume);
  91.     printf("Prenume nou:");
  92.     gets(noua.prenume);
  93.     printf("CNP nou:");
  94.     gets(noua.CNP);
  95.     printf("Varsta noua:");
  96.     scanf("%d",&noua.varsta);
  97.     getchar();
  98.     modificare(p,n,poz,noua);
  99.     afisare(p,n);*/
  100.     /*printf("pozitia de stergere:");
  101.     scanf("%d",&pozSters);
  102.     stergere(&p,&n,pozSters);
  103.     afisare(p,n);*/
  104.     printf("Pozitie de adaugat:");
  105.     scanf("%d",&pozAdauga);
  106.     printf("Nume adaugat:");
  107.     fflush(stdin);
  108.     gets(baga.nume);
  109.     printf("Prenume adauga:");
  110.     gets(baga.prenume);
  111.     printf("CNP adauga:");
  112.     gets(baga.CNP);
  113.     printf("Varsta adauga:");
  114.     scanf("%d",&baga.varsta);
  115.     getchar();
  116.  
  117.     adaugare(&p,&n,pozAdauga,baga);
  118.     afisare(p,n);
  119.  
  120.  
  121.  
  122.  
  123.     return 0;
  124. }
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