Advertisement
mario_99

Rubrica

May 23rd, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.78 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <malloc.h>
  4.  
  5. //definiamo elenco numeri:
  6.  
  7. typedef struct t{
  8.     char numero[15];
  9.     struct t *next;
  10. }nodoListaNumeri, *elencoNumeri;
  11.  
  12. //definiamo "persona":
  13.  
  14. typedef struct s{
  15.     char nome[20];
  16.     char cognome[20];
  17.     elencoNumeri numeri;
  18. }persona;
  19.  
  20.  
  21. //definiamo la struttura:
  22.  
  23. typedef struct per{
  24.     persona info;
  25.     struct per *next;
  26. }nodoListaPersone, *Rubrica;
  27.  
  28. void InserisciInTestaRubrica(Rubrica *pl, persona p){
  29.     Rubrica aux;
  30.     aux = (Rubrica)malloc(sizeof(nodoListaPersone));
  31.     if (aux != NULL){
  32.         aux->info = p;
  33.         aux->next = *pl;
  34.         *pl = aux;
  35.     }
  36. }
  37.  
  38. void InserisciInTestaNumeri(elencoNumeri *pl, char *numero){
  39.     elencoNumeri paux;
  40.     paux = (elencoNumeri)malloc(sizeof(nodoListaNumeri));
  41.     if (paux != NULL){
  42.         strcpy(paux->numero,numero);
  43.         paux->next = *pl;
  44.         *pl = paux;
  45.     }
  46. }
  47.  
  48. void stampaPersona(Rubrica R){
  49.     if (R != NULL) {
  50.         printf("%d->", R->info);
  51.         R = R->next;
  52.     }
  53. }
  54.  
  55. void stampaNumero(Rubrica N){
  56.     if (N != NULL){
  57.         printf("%d->", N->info);
  58.         N = N->next;
  59.     }
  60. }
  61.  
  62. void CancellaInTestaNumeri(elencoNumeri *pl, char *numero){
  63.     elencoNumeri aux;
  64.     if (*pl != NULL){
  65.         aux = *pl;
  66.         *pl = (*pl)->next;
  67.         free(aux);
  68.     }
  69. }
  70.  
  71.    
  72.  
  73. void InserisciNuovaPersona(Rubrica *pl){
  74.     persona p;
  75.     printf("\ninserisci il cognome: ");
  76.     scanf("%s", p.cognome);
  77.     printf("\ninserisci il nome: ");
  78.     scanf("%s", p.nome);
  79.     p.numeri = NULL;
  80.     InserisciInTestaRubrica(pl, p);
  81. }
  82. Rubrica Ricerca(Rubrica R,persona p){
  83.     while (R != NULL){
  84.         if (R->info.nome == p.nome) return R;
  85.         R = R -> next;
  86.     }
  87.  
  88. }
  89. void InserisciNuovoNumero(Rubrica R){
  90.     persona p;
  91.     char numero[15];
  92.     Rubrica aux;
  93.     printf("\ninserisci il cognome: ");
  94.     scanf("%s", p.cognome);
  95.     printf("\ninserisci il nome: ");
  96.     scanf("%s", p.nome);
  97.     aux = Ricerca(R, p);
  98.     if (aux != NULL){
  99.         printf("\ninserisci numero: "),
  100.             scanf("%s", numero);
  101.         InserisciInTestaNumeri(R, numero);
  102.     }
  103. }
  104.  
  105. int main(){
  106.     //variabili:
  107.     persona p;
  108.     Rubrica R;
  109.     R = NULL;
  110.     int scelta = 0;
  111.     int n;
  112.     char numero[15];
  113.  
  114.     //copro main
  115.     printf("\n 1) Inserisci persona in testa: ");
  116.     printf("\n 2)Inserisci numero in testa: ");
  117.     printf("\n 3) stampa  persona: ");
  118.     printf("\n 4) stampa numero: ");
  119.     printf("\n 5) cancella numero: ");
  120.    
  121.     while (scelta >= 0 && scelta <= 5){
  122.         printf("digita un numero:\n ");
  123.         scanf("%d", &n);
  124.         switch (scelta){
  125.         case 1:
  126.             printf("\ninserisci il cognome: ");
  127.             scanf("%s", p.cognome);
  128.             printf("\ninserisci il nome: ");
  129.             scanf("%s", p.nome);
  130.             InserisciInTestaRubrica(&R, p);
  131.             break;
  132.         case 2:
  133.             printf("\ninserisci il numero: ");
  134.             scanf("%s", numero);
  135.             InserisciInTestaNumeri(&R, numero);
  136.             break;
  137.         case 3: stampaPersona(R);
  138.         case 4: stampaNumero(R);
  139.         case 5: CancellaInTestaNumeri(&R, numero);
  140.            
  141.            
  142.         }
  143.     }
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement