Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*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:
- 1) Nome e cognome del partecipante
- 2) Categoria di partecipazione all'evento (due categorie possibili: aeromodellismo statico o dinamico)
- 3) L'elenco dei modelli che prendono parte alla gara (sono ammessi piu velivoli per partecipante)
- Le informazioni relative al modello includono un codice identificante, una tipologia (aereo/elicottero) Il peso in Kg e la cilindrata del motore (in cc)
- 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.
- Il sistema deve permettere le operazioni di seguito descritte:
- 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 ;
- se il partecipante non risulta iscritto va aggiunto prima il partecipante alla lista dei partecipanti e quindi il velivolo all'elenco associato al partecipante.
- 2) Calcolo e visualizzazione delle percentuali di aerei e di elicotteri rispetto al totale di velivoli partecipanti
- 3) Visualizzazione di tutti i velivoli iscritti
- 4) La visualizzazione dell'elenco di tutti gli elicotteri con peso inferiore ad uno dato e cilindrata pari ad un valore dato
- 5) Cancellazione di un velivolo iscritto (se è l'unico di un dato partecipante viene cancellato anche il partecipante) fornendo in ingresso il codice identificativo*/
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- typedef struct n1 {
- char cod_veivolo[10];
- char tipologia[20];
- float peso;
- int cilindrata;
- }tipoelemLista_veivoli;
- typedef struct n2 {
- tipoelemLista_veivoli info;
- struct n2 *next;
- }tipoNodoLista_veivoli, *lista_veivoli;
- typedef struct n3 {
- char cognome[20];
- char categoria[7];
- lista_veivoli elenco_veivoli;
- }tipoelemLista_partecipanti;
- typedef struct n4 {
- tipoelemLista_partecipanti info;
- struct n3 *next;
- }tipoNodoLista_partecipanti, *lista_partecipanti;
- int menu();
- void inserisci_nuovo(lista_partecipanti *l);
- int esiste_in_lista(lista_partecipanti l, char x[20]);
- void inserisci_in_testa(lista_veivoli *l, tipoelemLista_veivoli x);
- void MakeNullListp(lista_partecipanti *l);
- void nuovo_partecipante(lista_partecipanti *l, tipoelemLista_partecipanti y, tipoelemLista_veivoli x);
- void stampa1(lista_partecipanti l);
- void stampa2(lista_veivoli l);
- void MakeNullListv(lista_veivoli *l);
- int main() {
- int scelta;
- lista_partecipanti L;
- lista_veivoli l;
- MakeNullListp(&L);
- MakeNullListv(&l);
- do {
- scelta = menu();
- switch (scelta) {
- case 1: inserisci_nuovo(&L); break;
- case 3: stampa1(L); break;
- }
- } while (scelta != 0);
- }
- void MakeNullListp(lista_partecipanti *l) {
- *l = NULL;
- }
- void MakeNullListv(lista_veivoli *l) {
- *l = NULL;
- }
- int menu() {
- int i;
- printf("Digita:\n");
- printf("1. Per inserire un nuovo nuovo veivolo alla competizione;\n");
- printf("2. Per calcolare la percentuale di aerei ed elicotteri rispetto al totale dei veicoli;\n");
- printf("3. Per visualizzare di tutti i veicoli iscritti;\n");
- printf("4. Per visualizzare tutti i veivoli con peso inferiore ad uno dato e cilindrata pari ad un valore dato;\n");
- printf("5. Per cancellare un veivolo dalla competizione;\n");
- printf("0. Per uscire dal programma.\n");
- scanf("%d", &i);
- return i;
- }
- void inserisci_nuovo(lista_partecipanti *l) {
- tipoelemLista_veivoli x;
- tipoelemLista_partecipanti y;
- printf("Inserire il codice del veivolo da inserire alla competizione: ");
- scanf("%s", x.cod_veivolo);
- printf("Inserisci la tipologia del veivolo (AEREO O ELICOTTERO): ");
- scanf("%s", x.tipologia);
- printf("Inserisci il peso del veicolo: ");
- scanf("%f", &x.peso);
- printf("Inserisci la cilindrata del veicolo: ");
- scanf("%d", &x.cilindrata);
- printf("Inserire il nome del partecipante a cui associare il veivolo: ");
- scanf("%s", y.cognome);
- if (esiste_in_lista(*l, y.cognome) == 1) inserisci_in_testa(&(*l)->info.elenco_veivoli, x);
- else {
- printf("Inserire la categoria di competizione di questo veivolo (STATICO O DINAMICO): ");
- scanf("%s", y.categoria);
- nuovo_partecipante(l, y, x);
- }
- }
- esiste_in_lista(lista_partecipanti l, char x[20]) {
- if (l == NULL) return 0;
- if (strcmp(l->info.cognome, x) == 0) return 1;
- esiste_in_lista(l->next, x);
- }
- void inserisci_in_testa(lista_veivoli *l, tipoelemLista_veivoli x) {
- lista_veivoli aux;
- aux = (lista_veivoli)malloc(sizeof(tipoNodoLista_veivoli));
- if (aux != NULL) {
- aux->info = x;
- aux->next = *l;
- *l = aux;
- }
- }
- void nuovo_partecipante(lista_partecipanti *l, tipoelemLista_partecipanti y, tipoelemLista_veivoli x) {
- lista_partecipanti aux;
- aux = (lista_partecipanti)malloc(sizeof(tipoNodoLista_partecipanti));
- strcpy(aux->info.categoria, y.categoria);
- strcpy(aux->info.cognome, y.cognome);
- inserisci_in_testa(&aux->info.elenco_veivoli, x);
- aux->next = *l;
- *l = aux;
- }
- void stampa1(lista_partecipanti l) {
- if (l == NULL) printf("Lista vuota.\n\n");
- while (l != NULL) {
- printf("COGNOME: %s\nCATEGORIA: %s\n", l->info.cognome, l->info.categoria);
- printf("-----IL SEGUENTE PARTECIPANTE PRESENTA QUESTI VEIVOLI:-----\n");
- stampa2(l->info.elenco_veivoli);
- l = l->next;
- }
- }
- void stampa2(lista_veivoli l) {
- while (l != NULL) {
- 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);
- l = l->next;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement