Advertisement
Guest User

Untitled

a guest
Oct 16th, 2019
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.97 KB | None | 0 0
  1. /*
  2. gestire le auto in vendita di un concessionario,
  3. di ogni auto si sa: modello, cavalli(cc) e prezzo.
  4. il progamma deve:
  5. 1) gestire il numero di auto in vendita
  6. 2) vendere l'auto(gestirne lo stato e una volta venduta non visualizzarla più)
  7. 3) dato in input in prezzo massimo elencare le auto che lo rispettano
  8. */
  9.  
  10. #include <iostream>
  11. #include <string.h>
  12. #include <time.h>
  13. #include <stdio.h>
  14.  
  15. #define LEN 25
  16.  
  17. typedef struct AUTO
  18. {
  19.     char marca[LEN];
  20.     int cc;
  21.     float prezzo;
  22. }AUTO;
  23.  
  24. typedef struct NODO
  25. {
  26.     AUTO macchina;
  27.     NODO* next;
  28. }NODO;
  29.  
  30. bool ListaVuota(NODO* nt);
  31. NODO* UltimoNodo(NODO* nt);
  32. void DeallocaLista(NODO* nt);
  33. void VisualizzaLista(NODO* nt);
  34. void NuovaMacchina(NODO* nt);
  35. NODO* CreaMacchina();
  36. NODO* CancellaMacchina(NODO* nt);
  37.  
  38. int main()
  39. {
  40.  
  41.     int ope;
  42.  
  43.     NODO* nt = NULL;
  44.  
  45.     do
  46.     {
  47.  
  48.         printf(" 0)Esci\n 1) Nuova Macchina\n 2)Lista Macchine\n\n");
  49.         printf("operazione: ");
  50.         scanf_s("%d", &ope);
  51.  
  52.         switch (ope)
  53.         {
  54.         case 0:
  55.         {
  56.  
  57.             DeallocaLista(nt);
  58.             break;
  59.  
  60.         }
  61.         case 1:
  62.         {
  63.  
  64.             system("cls");
  65.             if (ListaVuota(nt) == true)
  66.                 nt = CreaMacchina();
  67.             else
  68.                 NuovaMacchina(nt);
  69.             break;
  70.  
  71.         }
  72.         case 2:
  73.         {
  74.  
  75.             system("cls");
  76.             VisualizzaLista(nt);
  77.             system("PAUSE");
  78.             break;
  79.  
  80.         }
  81.         case 3:
  82.         {
  83.  
  84.             system("cls");
  85.             CancellaMacchina(nt);
  86.             system("PAUSE");
  87.             break;
  88.  
  89.         }
  90.         default:
  91.         {
  92.  
  93.             break;
  94.  
  95.         }
  96.         }
  97.  
  98.  
  99.     } while (ope != NULL);
  100.  
  101. }
  102.  
  103. bool ListaVuota(NODO* nt)
  104. {
  105.  
  106.     if (nt == NULL)
  107.         return true;
  108.     else
  109.         return false;
  110.  
  111. }
  112.  
  113. NODO* UltimoNodo(NODO* nt)
  114. {
  115.  
  116.     NODO* tmp;
  117.     tmp = nt;
  118.     while (tmp->next != NULL)
  119.     {
  120.         tmp = tmp->next;
  121.     }
  122.     return tmp;
  123.  
  124. }
  125.  
  126. void DeallocaLista(NODO* nt)
  127. {
  128.  
  129.     NODO* tmp;
  130.     while (nt != NULL)
  131.     {
  132.         tmp = nt;
  133.         nt = nt->next;
  134.         free(tmp);
  135.         tmp = NULL;
  136.     }
  137.    
  138. }
  139.  
  140. void VisualizzaLista(NODO* nt)
  141. {
  142.  
  143.     NODO* tmp;
  144.     tmp = nt;
  145.     while (tmp != NULL)
  146.     {
  147.  
  148.         printf("\nMarca: %s", tmp->macchina.marca);
  149.         printf("\nCavalli: %d", tmp->macchina.cc);
  150.         printf("\nPrezzo: %.2f\n\n\n", tmp->macchina.prezzo);
  151.  
  152.         tmp = tmp->next;
  153.     }
  154.  
  155. }
  156.  
  157. void NuovaMacchina(NODO* nt)
  158. {
  159.  
  160.     NODO* ultimo;
  161.     NODO* nuovo;
  162.     ultimo = UltimoNodo(nt);
  163.     nuovo = (NODO*)malloc(sizeof(NODO));
  164.     nuovo->next = NULL;
  165.     printf("\nMarca : ");
  166.     scanf_s("%s", &nuovo->macchina.marca, LEN + 1);
  167.     printf("\nCavalli :");
  168.     scanf_s("%d", &nuovo->macchina.cc);
  169.     printf("\nPrezzo :");
  170.     scanf_s("%f", &nuovo->macchina.prezzo);
  171.  
  172.     system("pause");
  173.     system("cls");
  174.  
  175.     ultimo->next = nuovo;
  176.  
  177. }
  178.  
  179. NODO* CreaMacchina()
  180. {
  181.  
  182.     NODO* nt = NULL;
  183.     nt = (NODO*)malloc(sizeof(NODO));
  184.  
  185.     nt->next = NULL;
  186.  
  187.     printf("\nMarca : ");
  188.     scanf_s("%s", &nt->macchina.marca, LEN + 1);
  189.     printf("\nCavalli :");
  190.     scanf_s("%d", &nt->macchina.cc);
  191.     printf("\nPrezzo :");
  192.     scanf_s("%f", &nt->macchina.prezzo);
  193.  
  194.     system("pause");
  195.     system("cls");
  196.  
  197.     return nt;
  198.  
  199. }
  200.  
  201. NODO* CancellaMacchina(NODO* nt)
  202. {
  203.  
  204.     char chiave[LEN + 1];
  205.     bool trovato = false;
  206.  
  207.     NODO* tmp;
  208.     NODO* prec;
  209.  
  210.     printf("Inserire il cognome da ricercare:");
  211.     scanf_s("%s", chiave, LEN + 1);
  212.  
  213.     //if(nt==NULL)
  214.     if (ListaVuota(nt) == true)
  215.     {
  216.         printf("Concessionario Vuoto \n");
  217.         system("pause");
  218.         return nt;
  219.     }
  220.  
  221.     tmp = nt;
  222.     prec = NULL;
  223.     trovato = false;
  224.  
  225.     while (tmp != NULL)
  226.     {
  227.         if (strcmp(chiave, tmp->macchina.marca) == 0)
  228.         {
  229.             trovato = true;
  230.  
  231.             //Nodo di testa
  232.             if (prec == NULL)
  233.             {
  234.                 //Unico nodo
  235.                 if (tmp->next == NULL)
  236.                 {
  237.                     free(tmp);
  238.                     tmp = NULL;
  239.                     nt = NULL;
  240.                     //return (tmp);
  241.                 }
  242.                 else
  243.                 {
  244.                     nt = tmp->next;
  245.                     free(tmp);
  246.                     tmp = NULL;
  247.                 }
  248.             }
  249.             else
  250.                 //Nodo di coda
  251.                 if (tmp->next == NULL)
  252.                 {
  253.                     prec->next = NULL;
  254.                     free(tmp);
  255.                     tmp = NULL;
  256.                 }
  257.                 else
  258.                 {
  259.                     //Nodo di mezzo
  260.                     prec->next = tmp->next;
  261.                     free(tmp);
  262.                     tmp = NULL;
  263.                 }
  264.             break;
  265.         }
  266.  
  267.         prec = tmp;
  268.         tmp = tmp->next;
  269.     }
  270.     if (trovato == false)
  271.     {
  272.         printf("Macchina Non Trovata \n");
  273.         system("pause");
  274.     }
  275.  
  276.     return nt;
  277.  
  278. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement