Advertisement
Guest User

Untitled

a guest
Apr 25th, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.61 KB | None | 0 0
  1. /*Un gruppo di appassionati di aeromodellismo desidera effettuare una gara in cui esibire i modelli realizzati. A tale scopo, raccoglie per ogni partecipante le seguenti informazioni:
  2. 1) Nome e cognome del partecipante
  3. 2) Categoria di partecipazione all'evento (due categorie possibili: aeromodellismo statico o dinamico)
  4. 3) L'elenco dei modelli che prendono parte alla gara (sono ammessi piu velivoli per partecipante)
  5. Le informazioni relative al modello includono un codice identificante, una tipologia (aereo/elicottero) Il peso in Kg e la cilindrata del motore (in cc)
  6. Per modellare il sistema viene utilizzata una lista di partecipanti e per ciascun partecipante l'elenco dei modelli e memorizzato in una seconda lista ordinata per codice identificativo.
  7. Il sistema deve permettere le operazioni di seguito descritte:
  8. 1) Iscrizione di un nuovo velivolo. Tale opzione deve prevedere l'iscrizione di un nuovo velivolo associato ad un partecipante. Se il partecipante è gia iscritto il velivolo verrà aggiunto all'elenco ;
  9. se il partecipante non risulta iscritto va aggiunto prima il partecipante alla lista dei partecipanti e quindi il velivolo all'elenco associato al partecipante.
  10. 2) Calcolo e visualizzazione delle percentuali di aerei e di elicotteri rispetto al totale di velivoli partecipanti
  11. 3) Visualizzazione di tutti i velivoli iscritti
  12. 4) La visualizzazione dell'elenco di tutti gli elicotteri con peso inferiore ad uno dato e cilindrata pari ad un valore dato
  13. 5) Cancellazione di un velivolo iscritto (se è l'unico di un dato partecipante viene cancellato anche il partecipante) fornendo in ingresso il codice identificativo*/
  14.  
  15. #include <stdio.h>
  16. #include <string.h>
  17. #include <stdlib.h>
  18.  
  19. typedef struct n1 {
  20. char cod_veivolo[10];
  21. char tipologia[20];
  22. float peso;
  23. int cilindrata;
  24. }tipoelemLista_veivoli;
  25. typedef struct n2 {
  26. tipoelemLista_veivoli info;
  27. struct n2 *next;
  28. }tipoNodoLista_veivoli, *lista_veivoli;
  29.  
  30. typedef struct n3 {
  31. char cognome[20];
  32. char categoria[7];
  33. lista_veivoli elenco_veivoli;
  34. }tipoelemLista_partecipanti;
  35. typedef struct n4 {
  36. tipoelemLista_partecipanti info;
  37. struct n3 *next;
  38. }tipoNodoLista_partecipanti, *lista_partecipanti;
  39.  
  40. int menu();
  41. void inserisci_nuovo(lista_partecipanti *l);
  42. int esiste_in_lista(lista_partecipanti l, char x[20]);
  43. void inserisci_in_testa(lista_veivoli *l, tipoelemLista_veivoli x);
  44. void MakeNullListp(lista_partecipanti *l);
  45. void nuovo_partecipante(lista_partecipanti *l, tipoelemLista_partecipanti y, tipoelemLista_veivoli x);
  46. void stampa1(lista_partecipanti l);
  47. void stampa2(lista_veivoli l);
  48. void MakeNullListv(lista_veivoli *l);
  49.  
  50. int main() {
  51. int scelta;
  52. lista_partecipanti L;
  53. lista_veivoli l;
  54. MakeNullListp(&L);
  55. MakeNullListv(&l);
  56. do {
  57. scelta = menu();
  58. switch (scelta) {
  59. case 1: inserisci_nuovo(&L); break;
  60. case 3: stampa1(L); break;
  61. }
  62. } while (scelta != 0);
  63. }
  64.  
  65. void MakeNullListp(lista_partecipanti *l) {
  66. *l = NULL;
  67. }
  68.  
  69. void MakeNullListv(lista_veivoli *l) {
  70. *l = NULL;
  71. }
  72.  
  73. int menu() {
  74. int i;
  75. printf("Digita:\n");
  76. printf("1. Per inserire un nuovo nuovo veivolo alla competizione;\n");
  77. printf("2. Per calcolare la percentuale di aerei ed elicotteri rispetto al totale dei veicoli;\n");
  78. printf("3. Per visualizzare di tutti i veicoli iscritti;\n");
  79. printf("4. Per visualizzare tutti i veivoli con peso inferiore ad uno dato e cilindrata pari ad un valore dato;\n");
  80. printf("5. Per cancellare un veivolo dalla competizione;\n");
  81. printf("0. Per uscire dal programma.\n");
  82. scanf("%d", &i);
  83. return i;
  84. }
  85. void inserisci_nuovo(lista_partecipanti *l) {
  86. tipoelemLista_veivoli x;
  87. tipoelemLista_partecipanti y;
  88. printf("Inserire il codice del veivolo da inserire alla competizione: ");
  89. scanf("%s", x.cod_veivolo);
  90. printf("Inserisci la tipologia del veivolo (AEREO O ELICOTTERO): ");
  91. scanf("%s", x.tipologia);
  92. printf("Inserisci il peso del veicolo: ");
  93. scanf("%f", &x.peso);
  94. printf("Inserisci la cilindrata del veicolo: ");
  95. scanf("%d", &x.cilindrata);
  96. printf("Inserire il nome del partecipante a cui associare il veivolo: ");
  97. scanf("%s", y.cognome);
  98. if (esiste_in_lista(*l, y.cognome) == 1) inserisci_in_testa(&(*l)->info.elenco_veivoli, x);
  99. else {
  100. printf("Inserire la categoria di competizione di questo veivolo (STATICO O DINAMICO): ");
  101. scanf("%s", y.categoria);
  102. nuovo_partecipante(l, y, x);
  103. }
  104. }
  105.  
  106. esiste_in_lista(lista_partecipanti l, char x[20]) {
  107. if (l == NULL) return 0;
  108. if (strcmp(l->info.cognome, x) == 0) return 1;
  109. esiste_in_lista(l->next, x);
  110. }
  111.  
  112. void inserisci_in_testa(lista_veivoli *l, tipoelemLista_veivoli x) {
  113. lista_veivoli aux;
  114. aux = (lista_veivoli)malloc(sizeof(tipoNodoLista_veivoli));
  115. if (aux != NULL) {
  116. aux->info = x;
  117. aux->next = *l;
  118. *l = aux;
  119. }
  120. }
  121.  
  122. void nuovo_partecipante(lista_partecipanti *l, tipoelemLista_partecipanti y, tipoelemLista_veivoli x) {
  123. lista_partecipanti aux;
  124. aux = (lista_partecipanti)malloc(sizeof(tipoNodoLista_partecipanti));
  125. strcpy(aux->info.categoria, y.categoria);
  126. strcpy(aux->info.cognome, y.cognome);
  127. inserisci_in_testa(&aux->info.elenco_veivoli, x);
  128. aux->next = *l;
  129. *l = aux;
  130. }
  131.  
  132. void stampa1(lista_partecipanti l) {
  133. if (l == NULL) printf("Lista vuota.\n\n");
  134. while (l != NULL) {
  135. printf("COGNOME: %s\nCATEGORIA: %s\n", l->info.cognome, l->info.categoria);
  136. printf("-----IL SEGUENTE PARTECIPANTE PRESENTA QUESTI VEIVOLI:-----\n");
  137. stampa2(l->info.elenco_veivoli);
  138. l = l->next;
  139. }
  140. }
  141.  
  142. void stampa2(lista_veivoli l) {
  143. while (l != NULL) {
  144. printf("CODICE VEIVOLO: %s\nTIPOLOGIA: %s\nPESO: %f\nCILINDRATA: %d\n\n", l->info.cod_veivolo, l->info.tipologia, l->info.peso, l->info.cilindrata);
  145. l = l->next;
  146. }
  147. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement