Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- gestire le auto in vendita di un concessionario,
- di ogni auto si sa: modello, cavalli(cc) e prezzo.
- il progamma deve:
- 1) gestire il numero di auto in vendita
- 2) vendere l'auto(gestirne lo stato e una volta venduta non visualizzarla più)
- 3) dato in input in prezzo massimo elencare le auto che lo rispettano
- */
- #include <iostream>
- #include <string.h>
- #include <time.h>
- #include <stdio.h>
- #define LEN 25
- typedef struct AUTO
- {
- char marca[LEN];
- int cc;
- float prezzo;
- }AUTO;
- typedef struct NODO
- {
- AUTO macchina;
- NODO* next;
- }NODO;
- bool ListaVuota(NODO* nt);
- NODO* UltimoNodo(NODO* nt);
- void DeallocaLista(NODO* nt);
- void VisualizzaLista(NODO* nt);
- void NuovaMacchina(NODO* nt);
- NODO* CreaMacchina();
- NODO* CancellaMacchina(NODO* nt);
- int main()
- {
- int ope;
- NODO* nt = NULL;
- do
- {
- printf(" 0)Esci\n 1) Nuova Macchina\n 2)Lista Macchine\n\n");
- printf("operazione: ");
- scanf_s("%d", &ope);
- switch (ope)
- {
- case 0:
- {
- DeallocaLista(nt);
- break;
- }
- case 1:
- {
- system("cls");
- if (ListaVuota(nt) == true)
- nt = CreaMacchina();
- else
- NuovaMacchina(nt);
- break;
- }
- case 2:
- {
- system("cls");
- VisualizzaLista(nt);
- system("PAUSE");
- break;
- }
- case 3:
- {
- system("cls");
- CancellaMacchina(nt);
- system("PAUSE");
- break;
- }
- default:
- {
- break;
- }
- }
- } while (ope != NULL);
- }
- bool ListaVuota(NODO* nt)
- {
- if (nt == NULL)
- return true;
- else
- return false;
- }
- NODO* UltimoNodo(NODO* nt)
- {
- NODO* tmp;
- tmp = nt;
- while (tmp->next != NULL)
- {
- tmp = tmp->next;
- }
- return tmp;
- }
- void DeallocaLista(NODO* nt)
- {
- NODO* tmp;
- while (nt != NULL)
- {
- tmp = nt;
- nt = nt->next;
- free(tmp);
- tmp = NULL;
- }
- }
- void VisualizzaLista(NODO* nt)
- {
- NODO* tmp;
- tmp = nt;
- while (tmp != NULL)
- {
- printf("\nMarca: %s", tmp->macchina.marca);
- printf("\nCavalli: %d", tmp->macchina.cc);
- printf("\nPrezzo: %.2f\n\n\n", tmp->macchina.prezzo);
- tmp = tmp->next;
- }
- }
- void NuovaMacchina(NODO* nt)
- {
- NODO* ultimo;
- NODO* nuovo;
- ultimo = UltimoNodo(nt);
- nuovo = (NODO*)malloc(sizeof(NODO));
- nuovo->next = NULL;
- printf("\nMarca : ");
- scanf_s("%s", &nuovo->macchina.marca, LEN + 1);
- printf("\nCavalli :");
- scanf_s("%d", &nuovo->macchina.cc);
- printf("\nPrezzo :");
- scanf_s("%f", &nuovo->macchina.prezzo);
- system("pause");
- system("cls");
- ultimo->next = nuovo;
- }
- NODO* CreaMacchina()
- {
- NODO* nt = NULL;
- nt = (NODO*)malloc(sizeof(NODO));
- nt->next = NULL;
- printf("\nMarca : ");
- scanf_s("%s", &nt->macchina.marca, LEN + 1);
- printf("\nCavalli :");
- scanf_s("%d", &nt->macchina.cc);
- printf("\nPrezzo :");
- scanf_s("%f", &nt->macchina.prezzo);
- system("pause");
- system("cls");
- return nt;
- }
- NODO* CancellaMacchina(NODO* nt)
- {
- char chiave[LEN + 1];
- bool trovato = false;
- NODO* tmp;
- NODO* prec;
- printf("Inserire il cognome da ricercare:");
- scanf_s("%s", chiave, LEN + 1);
- //if(nt==NULL)
- if (ListaVuota(nt) == true)
- {
- printf("Concessionario Vuoto \n");
- system("pause");
- return nt;
- }
- tmp = nt;
- prec = NULL;
- trovato = false;
- while (tmp != NULL)
- {
- if (strcmp(chiave, tmp->macchina.marca) == 0)
- {
- trovato = true;
- //Nodo di testa
- if (prec == NULL)
- {
- //Unico nodo
- if (tmp->next == NULL)
- {
- free(tmp);
- tmp = NULL;
- nt = NULL;
- //return (tmp);
- }
- else
- {
- nt = tmp->next;
- free(tmp);
- tmp = NULL;
- }
- }
- else
- //Nodo di coda
- if (tmp->next == NULL)
- {
- prec->next = NULL;
- free(tmp);
- tmp = NULL;
- }
- else
- {
- //Nodo di mezzo
- prec->next = tmp->next;
- free(tmp);
- tmp = NULL;
- }
- break;
- }
- prec = tmp;
- tmp = tmp->next;
- }
- if (trovato == false)
- {
- printf("Macchina Non Trovata \n");
- system("pause");
- }
- return nt;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement