Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Costi pullman - CostiPullman v.0.2.c

CostiPullman v.0.2.c

Caricato da:
Scarica il programma completo

  1. #include <stdio.h>
  2. #define COSTO_GIORN 2.60   /*costo biglietto giornaliero*/
  3. #define COSTO_SETT 16.90   /*costo settimanale*/
  4. #define COSTO_MENS 52.00   /*costo mensile*/
  5.  
  6. void CalcolaCosto (float NumGiorni,int NumSett);  /*calcola il costo dei biglietti*/
  7.  
  8. int main()
  9. {
  10.     float NumGiorni;
  11.     int NumGiorniInt;    /*sono i NumGiorni in int*/            
  12.     int NumSett;
  13.     int Scelta;
  14.     char Vuoto[2];
  15.    
  16.     void ScomponiGiorni (float NumGiorni,int NumSett);
  17.    
  18.     printf ("\n\n\t\tCOSTI PULLMAN\n\n\n");
  19.     printf ("\nN.B. Il Programma è impostato con la tratta 'Ossona - Milano Lotto' + metropolitana della linea ATM. Premi Enter per continuare.\n");
  20.     fgets (Vuoto,2,stdin);       /*serve per far aspettare un pò prima di procedere all'input per far leggere il N.B.*/
  21.      
  22.     printf("\nInserisci il numero di settimane: ");
  23.     scanf ("%d",& NumSett);
  24.    
  25.     printf ("\nInserisci il numero di giorni: ");
  26.     scanf ("%f",& NumGiorni);
  27.    
  28.     printf ("\n\n");
  29.    
  30.     if (NumGiorni>=4)
  31.     {
  32.        NumGiorniInt=NumGiorni;
  33.        printf ("\nI %d giorni inseriti in input sono relativi a una (1) o a più settimane (2)?  ",NumGiorniInt);
  34.        scanf ("%d",&Scelta);
  35.        if (Scelta==1)
  36.        {
  37.           printf ("\n\n\n");
  38.           CalcolaCosto(NumGiorni,NumSett);
  39.        }
  40.        else if (Scelta==2)
  41.        {
  42.            ScomponiGiorni (NumGiorni,NumSett);
  43.        }
  44.     }
  45.     else
  46.     {
  47.          CalcolaCosto(NumGiorni,NumSett);
  48.     }
  49.    
  50.     printf ("\n\n\n\tBuon Viaggio!\n");
  51.     printf ("\n\nPremere 'Esc' per uscire.\n\n\n\n");
  52.     getch();
  53.        
  54. return (0);
  55. }
  56.  
  57. void CalcolaCosto (float NumGiorni,int NumSett)
  58. {
  59.     float CostoGiorni;          /*indica il costo dei giorni.Un giorno sono due biglietti giornalieri*/
  60.     float CostoSett;            /*costo delle settimane*/
  61.     float CostoSettPiu;         /*costo delle settimane inserite + una*/
  62.     float CostoTot;             /*costo delle settimane + costo dei giorni*/
  63.     float Risparmio;            /*contiene il risparmio di una tariffa rispetto all'altra*/
  64.     float Spesa;                /*contiene la spesa supplementare tra una tariffa e un altra*/
  65.     float CostoSingGiorno;      /*contiene il costo di un singolo giorno.Un giorno sono due biglietti giornalieri*/
  66.     int NumGiorniVisu;          /*serve a far visualizzare il numero dei giorni come intero.Così se ho 3.5 visualizza 7*/
  67.    
  68.     CostoSingGiorno=COSTO_GIORN*2;
  69.     CostoGiorni=CostoSingGiorno*NumGiorni;
  70.     CostoSett=COSTO_SETT*NumSett;
  71.     CostoTot=CostoSett+CostoGiorni;
  72.     CostoSettPiu=CostoSett+COSTO_SETT;
  73.     NumGiorniVisu=NumGiorni*2;
  74.    
  75.     if (0==NumGiorni)
  76.     {
  77.         printf ("\nIl costo di %d settimanali è %f\n",NumSett,CostoSett);
  78.     }
  79.     if (0==NumSett)
  80.     {
  81.         printf ("\nIl costo di %d giornalieri è %f\n",NumGiorniVisu,CostoGiorni);
  82.     }
  83.     if (0!=NumGiorni && 0!=NumSett)
  84.     {
  85.         printf ("\nIl costo di %d settimanali e %d giornalieri è %f\n",NumSett,NumGiorniVisu,CostoTot);
  86.     }
  87.    
  88.     if (0==NumGiorni)
  89.     {
  90.        if (CostoSett<COSTO_MENS)
  91.        {
  92.           printf ("\nIl costo di %d setimanali è minore rispetto al costo di un mensile\n",NumSett);
  93.           printf ("\nRisparmio: ");
  94.           Risparmio=COSTO_MENS-CostoSett;
  95.           printf ("\n\t\t%f $\n",Risparmio);
  96.           printf ("\n\nConsiglio di acquisto: %d settimanali\n",NumSett);
  97.        }
  98.        
  99.        if (CostoSett>COSTO_MENS)
  100.        {
  101.           printf ("\nIl costo di %d setimanali è maggiore rispetto al costo di un mensile\n",NumSett);
  102.           printf ("\nSpesa aggiuntiva: ");
  103.           Spesa=CostoSett-COSTO_MENS;
  104.           printf ("\n\t\t%f $\n",Spesa);
  105.           printf ("\n\nConsiglio di acquisto: 1 mensile\n");
  106.        }
  107.        
  108.        if (CostoSett==COSTO_MENS)
  109.        {
  110.           printf ("\nIl costo di %d setimanali è uguale al costo di un mensile\n",NumSett);
  111.           printf ("\n\nConsiglio di acquisto: 1 mensile\n");
  112.        }
  113.     }
  114.    
  115.     if (0==NumSett)
  116.     {
  117.        if (CostoGiorni<COSTO_SETT)
  118.        {
  119.           printf ("\nIl costo di %d giornalieri è minore rispetto al costo di un settimanale\n",NumGiorniVisu);
  120.           printf ("\nRisparmio: ");
  121.           Risparmio=COSTO_SETT-CostoGiorni;
  122.           printf ("\n\t\t%f $\n",Risparmio);
  123.           printf ("\n\nConsiglio di acquisto: %d giornalieri\n",NumGiorniVisu);
  124.        }
  125.        
  126.        if (CostoGiorni>COSTO_SETT)
  127.        {
  128.           printf ("\nIl costo di %d giornalieri è maggiore rispetto al costo di un settimanale\n",NumGiorniVisu);
  129.           printf ("\nSpesa aggiuntiva: ");
  130.           Spesa=CostoGiorni-COSTO_SETT;
  131.           printf ("\n\t\t%f $\n",Spesa);
  132.           printf ("\n\nConsiglio di acquisto: 1 settimanale\n");
  133.        }
  134.        
  135.        if (CostoGiorni==COSTO_SETT)
  136.        {
  137.           printf ("\nIl costo di %d giornalieri è uguale al costo di un settimanale\n",NumGiorniVisu);
  138.           printf ("\n\nConsiglio di acquisto: %d giornalieri\n",NumGiorniVisu);
  139.        }
  140.     }
  141.    
  142.     if (0!=NumGiorni && 0!=NumSett)
  143.     {
  144.        if (CostoTot<CostoSettPiu)
  145.        {
  146.           printf ("\nIl costo di %d setimanali e %d giornalieri è minore rispetto al costo di %d settimanali\n",NumSett,NumGiorniVisu,NumSett+1);
  147.           printf ("\nRisparmio: ");
  148.           Risparmio=CostoSettPiu-CostoTot;
  149.           printf ("\n\t\t%f $\n",Risparmio);
  150.                  
  151.                  if (CostoTot<COSTO_MENS)
  152.                  {
  153.                     printf ("\ned è anche minore al costo di un mensile\n");
  154.                     printf ("\nRisparmio: ");
  155.                     Risparmio=COSTO_MENS-CostoTot;
  156.                     printf ("\n\t\t%f $\n",Risparmio);
  157.                     printf ("\n\nConsiglio di acquisto: %d settimanali pië %d giornalieri\n",NumSett,NumGiorniVisu);
  158.                  }
  159.        
  160.                  if (CostoTot>COSTO_MENS)
  161.                  {
  162.                     printf ("\nma è maggiore rispetto al costo di un mensile\n");
  163.                     printf ("\nSpesa aggiuntiva: ");
  164.                     Spesa=CostoTot-COSTO_MENS;
  165.                     printf ("\n\t\t%f $\n",Spesa);
  166.                     printf ("\n\nConsiglio di acquisto: 1 mensile\n");
  167.                  }
  168.        
  169.                  if (CostoTot==COSTO_MENS)
  170.                  {
  171.                     printf ("\ned è uguale al costo di un mensile\n");
  172.                     printf ("\n\nConsiglio di acquisto: 1 mensile\n");
  173.                  }
  174.        }
  175.        
  176.        if (CostoTot>CostoSettPiu)
  177.        {
  178.           printf ("\nIl costo di %d setimanali e %d giornalieri è maggiore rispetto al costo di %d settimanali\n",NumSett,NumGiorniVisu,NumSett+1);
  179.           printf ("\nSpesa aggiuntiva: ");
  180.           Spesa=CostoTot-CostoSettPiu;
  181.           printf ("\n\t\t%f $\n",Spesa);
  182.                  
  183.                  if (CostoTot<COSTO_MENS)
  184.                  {
  185.                     printf ("\nè minore al costo di un mensile ma non è conveniente\n");
  186.                     printf ("\n\nConsiglio di acquisto: %d settimanali\n",NumSett+1);
  187.                  }
  188.        
  189.                  if (CostoTot>COSTO_MENS)
  190.                  {
  191.                     if (COSTO_MENS==CostoSettPiu)
  192.                     {
  193.                        printf ("\ned il costo di %d settimanali è uguale al costo di un mensile\n",NumSett+1);
  194.                        printf ("\n\nConsiglio di acquisto: 1 mensile\n");
  195.                     }
  196.                    
  197.                     if (COSTO_MENS<CostoSettPiu)
  198.                     {
  199.                        printf ("\nma il costo di un mensile è minore rispetto al costo di %d settimanali\n",NumSett+1);
  200.                        printf ("\n\nConsiglio di acquisto: 1 mensile\n");
  201.                     }
  202.                    
  203.                     if (COSTO_MENS>CostoSettPiu)
  204.                     {
  205.                        printf ("\ned il costo di un mensile è maggiore rispetto al costo di %d settimanali\n",NumSett+1);
  206.                        printf ("\n\nConsiglio di acquisto: %d settimanali\n",NumSett+1);
  207.                     }
  208.                  }
  209.        
  210.                  if (CostoTot==COSTO_MENS)
  211.                  {
  212.                     printf ("\nma è uguale al costo di un mensile\n");
  213.                     printf ("\n\nConsiglio di acquisto: %d settimanali\n",NumSett+1);
  214.                  }
  215.        }
  216.        
  217.        if (CostoTot==CostoSettPiu)
  218.        {
  219.           printf ("\nIl costo di %d setimanali e %d giornalieri è uguale al costo di %d settimanali\n",NumSett,NumGiorniVisu,NumSett+1);
  220.                  
  221.                  if (CostoTot<COSTO_MENS)
  222.                  {
  223.                     printf ("\ned è minore al costo di un mensile\n");
  224.                     printf ("\nRisparmio: ");
  225.                     Risparmio=COSTO_MENS-CostoTot;
  226.                     printf ("\n\t\t%f $\n",Risparmio);
  227.                     printf ("\n\nConsiglio di acquisto: %d settimanali pië %d giornalieri\n",NumSett,NumGiorniVisu);
  228.                  }
  229.        
  230.                  if (CostoTot>COSTO_MENS)
  231.                  {
  232.                     printf ("\nma è maggiore rispetto al costo di un mensile\n");
  233.                     printf ("\nSpesa aggiuntiva: ");
  234.                     Spesa=CostoTot-COSTO_MENS;
  235.                     printf ("\n\t\t%f $\n",Spesa);
  236.                     printf ("\n\nConsiglio di acquisto: 1 mensile\n");
  237.                  }
  238.        
  239.                  if (CostoTot==COSTO_MENS)
  240.                  {
  241.                     printf ("\ned è anche uguale al costo di un mensile\n");
  242.                     printf ("\n\nConsiglio di acquisto: %d settimanali pië %d giornalieri\n",NumSett,NumGiorniVisu);
  243.                  }
  244.        }
  245.        
  246.     }
  247.    
  248.     return;
  249. }
  250.  
  251. void ScomponiGiorni (float NumGiorni,int NumSett)
  252. {
  253.      int SettScomp;        /*sono le settimane in cui vanno scomposti i giorni*/
  254.      int Cont;     /*si decrementa da SettScomp verso 0*/
  255.      int ContSett;  /*conta il numero di settimane.Serve solo per una stampa a schermo*/
  256.      int GiorniSett1;       /*sono i giorni della settimana 1*/
  257.      int GiorniSett2;       /*sono i giorni della settimana 2*/
  258.      int GiorniSett3;       /*sono i giorni della settimana 3*/
  259.      int GiorniSett4;       /*sono i giorni della settimana 4*/
  260.      int GiorniSett5;       /*sono i giorni della settimana 5*/
  261.      int GiorniSett6;       /*sono i giorni della settimana 6*/
  262.      float GiorniRim;         /*sono i giorni che rimangono da scomporre*/
  263.      int GiorniRimInt;        /*sono in int*/
  264.      float CostoGiorni;          /*indica il costo dei giorni.Un giorno sono due biglietti giornalieri*/
  265.      float CostoSingGiorno;      /*contiene il costo di un singolo giorno.Un giorno sono due biglietti giornalieri*/
  266.      char Risposta;         /*serve a contenere s o n*/
  267.      int NumGiorniScomp;    /*indica il numero dei giorni scomposti*/
  268.      int NumSettScomp;      /*indica il numero di settimane una volta scomposti i giorni*/
  269.      char Vuoto[2];
  270.      
  271.      printf ("\nInserire il numero di settimane in cui scomporre i giorni:  ");
  272.      scanf ("%d",&SettScomp);
  273.      while ((SettScomp<=0) || (SettScomp>=6))
  274.      {
  275.         printf ("\nIl numero di settimane in cui scomporre i giorni è sbagliato. Si prega di re-inserirlo:  ");
  276.         scanf ("%d",&SettScomp);
  277.      }
  278.      
  279.      RicominciaScomp:
  280.      GiorniRim=NumGiorni;
  281.      Cont=SettScomp;
  282.      ContSett=0;
  283.      while (Cont>0)
  284.      {
  285.            ++ContSett;
  286.            if (ContSett==1)
  287.            {
  288.               printf ("\nInserire il numero di giorni riferito alla 1^ settimana:  ");
  289.               scanf ("%d",&GiorniSett1);
  290.               GiorniRim=GiorniRim-GiorniSett1;
  291.               GiorniRimInt=GiorniRim;
  292.               printf ("\nGiorniRim:  %d",GiorniRimInt);
  293.            }
  294.            else if (ContSett==2)
  295.            {
  296.               printf ("\nInserire il numero di giorni riferito alla 2^ settimana:  ");
  297.               scanf ("%d",&GiorniSett2);
  298.               GiorniRim=GiorniRim-GiorniSett2;
  299.               GiorniRimInt=GiorniRim;
  300.               printf ("\n\nGiorniRim:  %d",GiorniRimInt);
  301.            }
  302.            else if (ContSett==3)
  303.            {
  304.               printf ("\nInserire il numero di giorni riferito alla 3^ settimana:  ");
  305.               scanf ("%d",&GiorniSett3);
  306.               GiorniRim=GiorniRim-GiorniSett3;
  307.               GiorniRimInt=GiorniRim;
  308.               printf ("\n\nGiorniRim:  %d",GiorniRimInt);
  309.            }
  310.            else if (ContSett==4)
  311.            {
  312.               printf ("\nInserire il numero di giorni riferito alla 4^ settimana:  ");
  313.               scanf ("%d",&GiorniSett4);
  314.               GiorniRim=GiorniRim-GiorniSett4;
  315.               GiorniRimInt=GiorniRim;
  316.               printf ("\n\nGiorniRim:  %d",GiorniRimInt);
  317.            }
  318.            else if (ContSett=5)
  319.            {
  320.               printf ("\nInserire il numero di giorni riferito alla 5^ settimana:  ");
  321.               scanf ("%d",&GiorniSett5);
  322.               GiorniRim=GiorniRim-GiorniSett5;
  323.               GiorniRimInt=GiorniRim;
  324.               printf ("\n\nGiorniRim:  %d",GiorniRimInt);
  325.            }
  326.            else if (ContSett=6)
  327.            {
  328.               printf ("\nInserire il numero di giorni riferito alla 6^ settimana:  ");
  329.               scanf ("%d",&GiorniSett6);
  330.               GiorniRim=GiorniRim-GiorniSett6;
  331.               GiorniRimInt=GiorniRim;
  332.               printf ("\n\nGiorniRim:  %d",GiorniRimInt);
  333.            }
  334.            Cont--;
  335.      }
  336.      if (GiorniRim!=0)
  337.      {
  338.         printf ("\n\nSono rimasti %d giorni. E' stato sbagliato il calcolo di scomposizione.");
  339.         printf ("\nSi intende rifarlo (s/n) ?  ");
  340.         fgets (Vuoto,2,stdin);       /*serve per far aspettare un pò prima di procedere all'input per far leggere il N.B.*/
  341.         scanf ("%c",&Risposta);
  342.        
  343.         if (Risposta=='s')
  344.         {
  345.            goto RicominciaScomp;
  346.         }
  347.         else if (Risposta=='n')
  348.         {
  349.              printf ("\nNon si sanno i dati esatti dei giorni e delle settimane.");
  350.              printf("\n\nIl programma viene interrotto.\n\n");
  351.              return;
  352.         }
  353.      }
  354.      else
  355.      {
  356.          CostoSingGiorno=COSTO_GIORN*2;
  357.          Cont=SettScomp;
  358.          ContSett=0;
  359.          NumGiorniScomp=0;
  360.          NumSettScomp=NumSett;
  361.          while (Cont>0)
  362.          {
  363.                ++ContSett;
  364.                if (ContSett==1)
  365.                {
  366.                   CostoGiorni=CostoSingGiorno*GiorniSett1;
  367.                   if (CostoGiorni<COSTO_SETT)
  368.                   {
  369.                      NumGiorniScomp=NumGiorniScomp+GiorniSett1;
  370.                   }
  371.                   else
  372.                   {
  373.                       ++NumSettScomp;
  374.                   }
  375.                }
  376.                else if (ContSett==2)
  377.                {
  378.                   CostoGiorni=CostoSingGiorno*GiorniSett2;
  379.                   if (CostoGiorni<COSTO_SETT)
  380.                   {
  381.                      NumGiorniScomp=NumGiorniScomp+GiorniSett2;
  382.                   }
  383.                   else
  384.                   {
  385.                       ++NumSettScomp;
  386.                   }
  387.                }
  388.                else if (ContSett==3)
  389.                {
  390.                   CostoGiorni=CostoSingGiorno*GiorniSett3;
  391.                   if (CostoGiorni<COSTO_SETT)
  392.                   {
  393.                      NumGiorniScomp=NumGiorniScomp+GiorniSett3;
  394.                   }
  395.                   else
  396.                   {
  397.                       ++NumSettScomp;
  398.                   }
  399.                }
  400.                else if (ContSett==4)
  401.                {
  402.                   CostoGiorni=CostoSingGiorno*GiorniSett4;
  403.                   if (CostoGiorni<COSTO_SETT)
  404.                   {
  405.                      NumGiorniScomp=NumGiorniScomp+GiorniSett4;
  406.                   }
  407.                   else
  408.                   {
  409.                       ++NumSettScomp;
  410.                   }
  411.                }
  412.                else if (ContSett==5)
  413.                {
  414.                   CostoGiorni=CostoSingGiorno*GiorniSett5;
  415.                   if (CostoGiorni<COSTO_SETT)
  416.                   {
  417.                      NumGiorniScomp=NumGiorniScomp+GiorniSett5;
  418.                   }
  419.                   else
  420.                   {
  421.                       ++NumSettScomp;
  422.                   }
  423.                }
  424.                else if (ContSett==6)
  425.                {
  426.                   CostoGiorni=CostoSingGiorno*GiorniSett6;
  427.                   if (CostoGiorni<COSTO_SETT)
  428.                   {
  429.                      NumGiorniScomp=NumGiorniScomp+GiorniSett6;
  430.                   }
  431.                   else
  432.                   {
  433.                       ++NumSettScomp;
  434.                   }
  435.                }
  436.                Cont--;
  437.          }
  438.      }
  439.      
  440.      printf ("\n\n\n");
  441.      CalcolaCosto (NumGiorniScomp,NumSettScomp);
  442.      
  443.      return;
  444. }