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
C/C++ - Progetto distributore automatico in C
Forum - C/C++ - Progetto distributore automatico in C - Pagina 2

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
WildBlood (Normal User)
Rookie


Messaggi: 58
Iscritto: 17/02/2015

Segnala al moderatore
Postato alle 20:36
Giovedì, 19/02/2015
In realtà non ho capito :/

PM
Avatar
darioza (Normal User)
Pro


Messaggi: 104
Iscritto: 06/10/2014

Segnala al moderatore
Postato alle 20:38
Giovedì, 19/02/2015
tranquillo...
allora....
al momento, stai memorizzando ogni acquisto in una array con giorno, anno e bibita, vero?
ogni inserimento aggiunge un elemento all'array, confermi?

PM
Avatar
WildBlood (Normal User)
Rookie


Messaggi: 58
Iscritto: 17/02/2015

Segnala al moderatore
Postato alle 20:43
Giovedì, 19/02/2015
Allora, si, ogni volta che si effettua un acquisto memorizzo questo acquisto, cioè, il giorno, il mese e il codice del prodotto in un array di struct.

PM
Avatar
darioza (Normal User)
Pro


Messaggi: 104
Iscritto: 06/10/2014

Segnala al moderatore
Postato alle 20:55
Giovedì, 19/02/2015
allora....
scriviamola insieme, se no non serve a nulla...
(quanto vorrei anche io un maestro come me quando mi areno...:D)
cerca di seguire il ragionamento

questa è l'array che ti si crea dopo che hai testato il programma e comprato 4 prodotti per esempio

Array_acquisti
index___giorno____anno____prodotto
0_______1_______2015_____1
1_______1_______2015_____2
2_______1_______2015_____2
3_______1_______2015_____1


ora scrivi, per esempio "verifica acquisti"....
e un read si aspetta che tu inserisca data e prodotto
(e fino a qui dovremmo esserci, giusto?)
una volta che sai data (giorno e anno) e prodotto, avvi la funzione ricorsiva, cosi strutturata:
[è pseudo-codice, a te tradurlo, se poi serve una mano anche li, lo facciamo dopo, prima capisci cosa va fatto però]


prima scelta, incrementale può essere il massimo valore della tua array acquisti, oppure il valore 0
per comodità, ammetterò che sia il valore massimo

funzione ricorsiva(int incrementale, int prodotto){

finche incrementale non è 0
      se array_acquisti contiene codice prodotto
      variabile di supporto incrementata +1
   richiamo la ricorsiva con incrementale-1
se incrementale = 0
  
      variabile di supporto incrementata +1
  ritorno il valore della variabile di supporto

}



Cosa non quadra?

(non riesco ad allinearlo bene, accontentati...;))

Ultima modifica effettuata da darioza il 19/02/2015 alle 20:56
PM
Avatar
WildBlood (Normal User)
Rookie


Messaggi: 58
Iscritto: 17/02/2015

Segnala al moderatore
Postato alle 21:04
Giovedì, 19/02/2015
Ma poi dovrei passare come parametro della funzione anche l'array_acquisti, giusto ?!
In ogni caso, ho organizzato l'array_acquisti come una struct e un'array struct:
in questo modo:
Codice sorgente - presumibilmente C++

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <time.h>
  5.  
  6. // Creazione delle STRUCT.
  7. struct bibite {
  8.     char nome[100];
  9.     int codice;
  10.     float prezzo;
  11.     int disponibilita;
  12. };
  13.  
  14. struct data {
  15.     int giorno;
  16.     int mese;
  17.     int codice;
  18. };
  19.  
  20. int main()
  21. {
  22.     // Creazione del distributore.
  23.     typedef struct bibite Bibite;
  24.     Bibite array_bibite[10] = {{"Coca-Cola", 0, 0.60, 10},
  25.                               {"Sprite", 1, 0.50, 10},
  26.                               {"RedBull", 2, 1.00, 10},
  27.                               {"Burn", 3, 1.00, 10},
  28.                               {"Fanta", 4, 0.20, 10},
  29.                               {"PowerRade", 5, 1.00, 10},
  30.                               {"Energy", 6, 0.50, 10},
  31.                               {"San Pellegrino", 7, 1.00, 10},
  32.                               {"Pepsi", 8, 0.50, 10},
  33.                               {"Gatorade", 9, 1.00, 10}};
  34.  
  35.     typedef struct data Data;
  36.     Data array_data[365];
  37.  
  38.     // Scelta di una bibita da parte dell'utente.
  39.     printf("Sono presenti le seguenti bibite:\n");
  40.  
  41.     // Dichiarazione delle variabili.
  42.     float monete_inserite, resto;
  43.     int i, bibita_scelta;
  44.     int j = 0;
  45.  
  46.     for (i = 0; i < 10; i++) {
  47.         printf("%d - %s\n", array_bibite[i].codice, array_bibite[i].nome);
  48.     }
  49.     printf("\n");
  50.     printf("(10)Termina la macchina.\n");
  51.     printf("(11)Resoconto.");
  52.  
  53.     // Trova la data di oggi.
  54.     time_t t = time(NULL);
  55.     struct tm *time;
  56.     time = localtime(&t);
  57.     int giorno = time->tm_mday;
  58.     int mese = time->tm_mon;
  59.  
  60.     while (1) {
  61.         printf("\n");
  62.         printf("Scegli una bibita (INSERISCI IL CODICE CORRISPONDENTE):\n");
  63.         scanf("%d", &bibita_scelta);
  64.  
  65.         if (bibita_scelta == 10) {
  66.             printf("Operazioni eseguite: %d", j);
  67.             break;
  68.         }
  69.  
  70.         if (bibita_scelta == 11) {
  71.             int giorno_1, codice_1;
  72.             printf("Il giorno richiesto:\n");
  73.             scanf("%d", &giorno_1);
  74.             printf("Il prodotto richiesto:\n");
  75.             scanf("%d", &codice_1);
  76.             break;
  77.         }
  78.  
  79.         if (bibita_scelta != 10 && bibita_scelta != 11) {
  80.             printf("Hai scelto di prelevare %s", array_bibite[bibita_scelta].nome);
  81.             printf("\n");
  82.             printf("Inserisci delle monete (0.10, 0.20, 0.50, 1.00):\n");
  83.             scanf("%f", &monete_inserite);
  84.             printf("\n");
  85.         }
  86.  
  87.         // Controllo se è possibile ricevere la bibita.
  88.         if (monete_inserite == 0.10 || monete_inserite == 0.20 || monete_inserite == 0.50 || monete_inserite == 1.00) {
  89.             if (monete_inserite < array_bibite[bibita_scelta].prezzo) {
  90.                 printf("NON HAI ABBASTANZA CREDITO PER AVERE LA BIBITA SCELTA.\n");
  91.             } else if (monete_inserite == array_bibite[bibita_scelta]. prezzo) {
  92.                 printf("STAI PER AVERE LA BIBITA SCELTA.\nGRAZIE.\n");
  93.                 printf("(Nessun resto da dare).");
  94.  
  95.                 // Inserisci la data di oggi nell'array di struct.
  96.                 j++;
  97.                 array_data[j].giorno = giorno;
  98.                 array_data[j].mese = mese;
  99.                 array_data[j].codice = bibita_scelta;
  100.             } else if (monete_inserite > array_bibite[bibita_scelta].prezzo) {
  101.                 printf("STAI PER RICEVERE LA BIBITA SCELTA.\nGRAZIE.\n");
  102.                 resto = monete_inserite - array_bibite[bibita_scelta].prezzo;
  103.                 printf("(Resto da ricevere: %f).", resto);
  104.  
  105.                 // Inserisci la data di oggi nell'array di struct.
  106.                 j++;
  107.                 array_data[j].giorno = giorno;
  108.                 array_data[j].mese = mese;
  109.                 array_data[j].codice = bibita_scelta;
  110.             }
  111.         } else {
  112.             printf("CI DISPIACE, MA LA MACCHINA ACCETTA SOLO MONETE DA 0.10, 0.20, 0.50, 1.00.");
  113.         }
  114.     }
  115.     return 0;
  116. }


PM
Avatar
darioza (Normal User)
Pro


Messaggi: 104
Iscritto: 06/10/2014

Segnala al moderatore
Postato alle 21:08
Giovedì, 19/02/2015
si si, l'array degli acquisti la avevo vista già prima no?
cambiato nulla?
mi sembrava andasse bene.

certo, devi passare l'array alla funzione, o meglio, visto che è c, il puntatore, ovvero l'indirizzo
(hai esperienze con altri linguaggi?)

PM
Avatar
WildBlood (Normal User)
Rookie


Messaggi: 58
Iscritto: 17/02/2015

Segnala al moderatore
Postato alle 21:13
Giovedì, 19/02/2015
Purtroppo non ho esperienza con altri linguaggi.. XD
Sono a programmazione I.

ma per incrementale, cioè il parametro, cosa intendi ?! Quale, guardando il mio codice, dovrei passare ?!

PM
Avatar
darioza (Normal User)
Pro


Messaggi: 104
Iscritto: 06/10/2014

Segnala al moderatore
Postato alle 21:19
Giovedì, 19/02/2015
la massima j dell'array_data


a volte ci sono programmatori esperti in altri linguaggi che si iscrivono in uni..
quando arrivi al c++ ti chiedo un paio di cose che non mi ricordo piu bene allora.. ;-)

PM
Pagine: [ 1 2 3 ] Precedente | Prossimo