Advertisement
mattdj

Cittadino

Dec 7th, 2017
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.58 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. typedef struct cittadino{
  6.     char cognome[20];
  7.         char nome  [20];
  8.         char luogo [20];
  9.         int  anno  ;
  10. }cittadino;
  11.  
  12. /* Prototipi */
  13. void new_aggiorna(cittadino *);
  14. cittadino aggiorna_second(cittadino);
  15. cittadino * aggiorna(char *[]);
  16. void copia_in_vect(cittadino *,cittadino,cittadino,cittadino *);
  17. void copia_in_vect1(cittadino *,cittadino,cittadino);
  18. void stampa(cittadino *);
  19. void stampa_vect(cittadino *);
  20. void stampa_vect1(cittadino *);
  21.  
  22. int main(void)
  23. {
  24. char *info[]={"Rossi","Mario"};
  25. cittadino *third, second ,first , *records;
  26. int num_rec,i;
  27. printf("Quanti sono i record da creare\n");
  28. scanf("%d",&num_rec); /*Leggi il numero dei record*\
  29. records=calloc(num_rec,sizeof(cittadino)); /*Alloca la memoria per i record*\
  30. new_aggiorna(&first);
  31. second=aggiorna_second(first);
  32. if(third=aggiorna(info)!=NULL) /*Verifica di third*\
  33. {
  34.  stampa(&first); /*Stampa il vettore inserito da noi*\
  35.  stampa(&second); /*Stampa sempre first*\
  36.  stampa(third);   /*Stampa info + quello inserito in aggiorna*\
  37.  copia_in_vect(records,first,second,third); /*Copia i tre file cittadino dentro il record*\
  38.  stampa_vect(records);  /*Stampa il record contenente i tre file cittadino*\
  39. }
  40. else  /*Questo else si attiva solamente se si risponde 'NO' alla domanda di creare un terzo record*\
  41. {
  42.  stampa(&first);
  43.  stampa(&second);
  44.  copia_in_vect1(records,first,second);
  45.  stampa_vect1(records);
  46. }
  47. free(third); /*Libera la memoria di third*\
  48. free(records); /*Libera la memoria di records*\
  49. return 0;
  50.  
  51.  
  52. }
  53.  
  54. void new_aggiorna (cittadino * data)
  55. {
  56.  printf("Inserire il Cognome:\t");
  57.  scanf("%s", data->cognome);
  58.  printf("Inserire il Nome:\t");
  59.  scanf("%s", data->nome);
  60.  printf("Inserire il Luogo:\t");
  61.  scanf("%s", data->luogo);
  62.  printf("Inserire l'Anno:\t");
  63.  scanf("%d", &data->anno);
  64. }
  65.  
  66. cittadino aggiorna_second(cittadino data)
  67. {
  68.  cittadino temp;
  69.  strcpy(temp.cognome,data.cognome);
  70.  strcpy(temp.nome,data.nome);
  71.  strcpy(temp.luogo,data.luogo);
  72.  temp.anno=data.anno;
  73.  return temp;
  74. }
  75.  
  76. cittadino * aggiorna(char *vect[])
  77. {
  78.  cittadino *temp;
  79.  char risp;
  80.  printf("Vuoi inserire un altro rercord? Si(s) o No(n)\n");
  81.  scanf("%s",&risp);
  82.  if(risp=='s')
  83.   {
  84.   temp=malloc(sizeof(cittadino));
  85.   strcpy(temp->cognome,vect[0]);
  86.   strcpy(temp->nome,vect[1]);
  87.   printf("Inserire il luogo:\t");
  88.   scanf("%s",temp->luogo);
  89.   printf("Inserire l'anno:\t");
  90.   scanf("%d",&temp->anno);
  91.   return temp;
  92.   }
  93.  else
  94.   return NULL;
  95. }
  96.  
  97. void copia_in_vect(cittadino *rec, cittadino uno ,cittadino due ,cittadino *tre)
  98. {
  99.  rec[0]=uno;
  100.  rec[1]=due;
  101.  rec[2]=*tre;
  102. }
  103.  
  104. void copia_in_vect1(cittadino *rec, cittadino uno ,cittadino due)
  105. {
  106.  rec[0]=uno;
  107.  rec[1]=due;
  108. }
  109.  
  110. void stampa(cittadino *p)
  111. {
  112.  printf("Il cognome è:\t%s\n",p->cognome);
  113.  printf("Il nome è:\t%s\n",p->nome);
  114.  printf("Il luogo è:\t%s\n",p->luogo);
  115.  printf("L'anno è:\t%d\n", p->anno);
  116. }
  117.  
  118.  
  119. void stampa_vect(cittadino *vect)
  120. {
  121.  int i;
  122.  for(i=1;i<3;i++)
  123.   {
  124.    printf("Il cognome numero(%d) è:\t%s\n", i, vect[i].cognome);
  125.    printf("Il nome numero(%d) è:\t%s\n", i, vect[i].nome);
  126.    printf("Il luogo numero(%d) è:\t%s\n", i, vect[i].luogo);
  127.    printf("Il anno numero(%d) è:\t%d\n", i, vect[i].anno);
  128.   }
  129. }
  130.  
  131. void stampa_vect1(cittadino *vect)
  132. {
  133.  int i;
  134.  for(i=1;i<2;i++)
  135.   {
  136.    printf("Il cognome numero(%d) è:\t%s\n", i, vect[i].cognome);
  137.    printf("Il nome numero(%d) è:\t%s\n", i, vect[i].nome);
  138.    printf("Il luogo numero(%d) è:\t%s\n", i, vect[i].luogo);
  139.    printf("Il anno numero(%d) è:\t%d\n", i, vect[i].anno);
  140.   }
  141. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement