Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- typedef struct cittadino{
- char cognome[20];
- char nome [20];
- char luogo [20];
- int anno ;
- }cittadino;
- /* Prototipi */
- void new_aggiorna(cittadino *);
- cittadino aggiorna_second(cittadino);
- cittadino * aggiorna(char *[]);
- void copia_in_vect(cittadino *,cittadino,cittadino,cittadino *);
- void copia_in_vect1(cittadino *,cittadino,cittadino);
- void stampa(cittadino *);
- void stampa_vect(cittadino *);
- void stampa_vect1(cittadino *);
- int main(void)
- {
- char *info[]={"Rossi","Mario"};
- cittadino *third, second ,first , *records;
- int num_rec,i;
- printf("Quanti sono i record da creare\n");
- scanf("%d",&num_rec); /*Leggi il numero dei record*\
- records=calloc(num_rec,sizeof(cittadino)); /*Alloca la memoria per i record*\
- new_aggiorna(&first);
- second=aggiorna_second(first);
- if(third=aggiorna(info)!=NULL) /*Verifica di third*\
- {
- stampa(&first); /*Stampa il vettore inserito da noi*\
- stampa(&second); /*Stampa sempre first*\
- stampa(third); /*Stampa info + quello inserito in aggiorna*\
- copia_in_vect(records,first,second,third); /*Copia i tre file cittadino dentro il record*\
- stampa_vect(records); /*Stampa il record contenente i tre file cittadino*\
- }
- else /*Questo else si attiva solamente se si risponde 'NO' alla domanda di creare un terzo record*\
- {
- stampa(&first);
- stampa(&second);
- copia_in_vect1(records,first,second);
- stampa_vect1(records);
- }
- free(third); /*Libera la memoria di third*\
- free(records); /*Libera la memoria di records*\
- return 0;
- }
- void new_aggiorna (cittadino * data)
- {
- printf("Inserire il Cognome:\t");
- scanf("%s", data->cognome);
- printf("Inserire il Nome:\t");
- scanf("%s", data->nome);
- printf("Inserire il Luogo:\t");
- scanf("%s", data->luogo);
- printf("Inserire l'Anno:\t");
- scanf("%d", &data->anno);
- }
- cittadino aggiorna_second(cittadino data)
- {
- cittadino temp;
- strcpy(temp.cognome,data.cognome);
- strcpy(temp.nome,data.nome);
- strcpy(temp.luogo,data.luogo);
- temp.anno=data.anno;
- return temp;
- }
- cittadino * aggiorna(char *vect[])
- {
- cittadino *temp;
- char risp;
- printf("Vuoi inserire un altro rercord? Si(s) o No(n)\n");
- scanf("%s",&risp);
- if(risp=='s')
- {
- temp=malloc(sizeof(cittadino));
- strcpy(temp->cognome,vect[0]);
- strcpy(temp->nome,vect[1]);
- printf("Inserire il luogo:\t");
- scanf("%s",temp->luogo);
- printf("Inserire l'anno:\t");
- scanf("%d",&temp->anno);
- return temp;
- }
- else
- return NULL;
- }
- void copia_in_vect(cittadino *rec, cittadino uno ,cittadino due ,cittadino *tre)
- {
- rec[0]=uno;
- rec[1]=due;
- rec[2]=*tre;
- }
- void copia_in_vect1(cittadino *rec, cittadino uno ,cittadino due)
- {
- rec[0]=uno;
- rec[1]=due;
- }
- void stampa(cittadino *p)
- {
- printf("Il cognome è:\t%s\n",p->cognome);
- printf("Il nome è:\t%s\n",p->nome);
- printf("Il luogo è:\t%s\n",p->luogo);
- printf("L'anno è:\t%d\n", p->anno);
- }
- void stampa_vect(cittadino *vect)
- {
- int i;
- for(i=1;i<3;i++)
- {
- printf("Il cognome numero(%d) è:\t%s\n", i, vect[i].cognome);
- printf("Il nome numero(%d) è:\t%s\n", i, vect[i].nome);
- printf("Il luogo numero(%d) è:\t%s\n", i, vect[i].luogo);
- printf("Il anno numero(%d) è:\t%d\n", i, vect[i].anno);
- }
- }
- void stampa_vect1(cittadino *vect)
- {
- int i;
- for(i=1;i<2;i++)
- {
- printf("Il cognome numero(%d) è:\t%s\n", i, vect[i].cognome);
- printf("Il nome numero(%d) è:\t%s\n", i, vect[i].nome);
- printf("Il luogo numero(%d) è:\t%s\n", i, vect[i].luogo);
- printf("Il anno numero(%d) è:\t%d\n", i, vect[i].anno);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement