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 in c
Forum - C/C++ - progetto in c - Pagina 2

Pagine: [ 1 2 3 4 ] Precedente | Prossimo
Avatar
lallo12 (Normal User)
Newbie


Messaggi: 20
Iscritto: 20/02/2017

Segnala al moderatore
Postato alle 18:04
Lunedì, 20/02/2017
sono riuscitoa a scrivere questo codice ma non riesco inserire il fatto che debba essere eseguito per 31 giorni e selezionando un giorno mi di il totale del carburante venduto, consigli ??


[code#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
// Creazione delle STRUCT.
struct carburante {
char nome[100];
int codice;
float prezzo;
double disponibilita;
};
struct data {
int giorno;
int mese;
double codice;
};

int main()
{
// Creazione del distributore.
typedef struct carburante Carburante;
Carburante array_carburante[3] = {{"Metano", 0, 0.60, 1000},
                            {"Benzina", 1, 0.50, 1000},
                            {"Gasolio", 2, 1.00, 1000}};
typedef struct data Data;
Data array_data[31];
// Scelta di una bibita da parte dell'utente.
printf("Sono presenti i seguenti carburanti:\n");
printf("NOME\tCODICE\tPREZZO\tRIMANENTI\n");
// Dichiarazione delle variabili.
float banconota_inserite, resto;
int i, carburante_scelta;
int j = 0;
for (i = 0; i <3; i++) {

printf("%-10s%d\t%5.2f\t%5.2f\n", array_carburante.nome, array_carburante.codice, array_carburante.prezzo, array_carburante.disponibilita );
}
printf("\n");
printf("(10)Termina la macchina.\n");
printf("(11)Resoconto.");
// Trova la data di oggi.
time_t t = time(NULL);
struct tm *time;
time = localtime(&t);
int giorno = time->tm_mday;
int mese = time->tm_mon;
while (1) {
printf("\n");
printf("SCELTA CARBURANTE (INSERISCI IL CODICE CORRISPONDENTE):\n");
scanf("%d", &carburante_scelta);
if (carburante_scelta == 10) {
printf("Operazioni eseguite: %d", j);
break;
}
if (carburante_scelta == 11) {
int giorno_1, codice_1;
printf("Il giorno richiesto:\n");
scanf("%d", &giorno_1);
printf("Il prodotto richiesto:\n");
scanf("%d", &codice_1);
break;
}
if (carburante_scelta != 10 && carburante_scelta != 11) {
printf("Hai scelto di prelevare %s", array_carburante[carburante_scelta].nome);
printf("\n");
printf("Inserisci delle banconote (5.00, 10.00, 20.00, 50.00):\n");
scanf("%f", &banconota_inserite);
printf("\n");
}
// Controllo se è possibile ricevere la bibita.
if (banconota_inserite == 5.00 || banconota_inserite == 10.00 || banconota_inserite == 20.00 || banconota_inserite == 50.00) {
if (banconota_inserite < array_carburante[carburante_scelta].prezzo) {
printf("NON HAI ABBASTANZA CREDITO PER AVERE IL CARBURANTE SCELTO.\n");
} if (banconota_inserite >= array_carburante[carburante_scelta]. prezzo)
array_carburante[carburante_scelta].disponibilita-(array_carburante[carburante_scelta].prezzo*banconota_inserite);
{
printf(" STAI PER RICEVERE %5.2f ", (array_carburante[carburante_scelta].prezzo*banconota_inserite));
printf("\n" );
printf("RIMANENZA CARBURANTE SCELTO\n" );
printf("\n");
printf("\n");
printf("NOME\tCODICE\tPREZZO\tRIMANENTI\n");
printf("%-10s%d\t%5.2f\t%5.2f\n", array_carburante[carburante_scelta].nome, array_carburante[carburante_scelta].codice, array_carburante[carburante_scelta].prezzo, array_carburante[carburante_scelta].disponibilita-(array_carburante[carburante_scelta].prezzo*banconota_inserite));

// Inserisci la data di oggi nell'array di struct.
j++;
array_data[j].giorno = giorno;
array_data[j].mese = mese;
array_data[j].codice = carburante_scelta;
}
j++;
array_data[j].giorno = giorno;
array_data[j].mese = mese;
array_data[j].codice = carburante_scelta;
}

}
return 0;
}





]

PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1620
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 18:50
Lunedì, 20/02/2017
A parte che il tag code si usa mettendo il codice fra [ c o d e ] e [ \ c o d e ] e quei due li genera il pulsante code... Hai letto l'articolo che ti ho linkato? Lo ho scritto per te.

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 18:55
Lunedì, 20/02/2017
Ma che ambiente di lavoro usi? Mi sembra strano che non tu non ti accorga dell'errore che commetti in questo pezzo, a parte che dovrebbe pure darti errore di compilazione (Visual Studio da errore ad esempio)
Codice sorgente - presumibilmente C/C++

  1. for (i = 0; i <3; i++) {
  2.  
  3. printf("%-10s%d\t%5.2f\t%5.2f\n", array_carburante.nome, array_carburante.codice, array_carburante.prezzo, array_carburante.disponibilita );
  4. }



Qui invece non hai modificato nulla

Codice sorgente - presumibilmente C/C++

  1. if (banconota_inserite == 5.00 || banconota_inserite == 10.00 || banconota_inserite == 20.00 || banconota_inserite == 50.00) {
  2.                         if (banconota_inserite < array_carburante[carburante_scelta].prezzo) {
  3.                                 printf("NON HAI ABBASTANZA CREDITO PER AVERE IL CARBURANTE SCELTO.\n");
  4.                         } if (banconota_inserite >= array_carburante[carburante_scelta].prezzo)
  5.                                 array_carburante[carburante_scelta].disponibilita - (array_carburante[carburante_scelta].prezzo*banconota_inserite);



cerco di essere più chiaro:

Codice sorgente - presumibilmente C/C++

  1. if (banconota_inserite < array_carburante[carburante_scelta].prezzo) {
  2.                                 printf("NON HAI ABBASTANZA CREDITO PER AVERE IL CARBURANTE SCELTO.\n");
  3.                         } if (banconota_inserite >= array_carburante[carburante_scelta].prezzo)
  4.                                 array_carburante[carburante_scelta].disponibilita - (array_carburante[carburante_scelta].prezzo*banconota_inserite);


array_carburante[carburante_scelta].prezzo sara  uno tra 0.5 - 0.6 - 1.0, giusto?

banconote inserite sarà sempre maggiore di 5 (altrimenti non esegue :
Codice sorgente - presumibilmente C/C++

  1. if (banconota_inserite == 5.00 || banconota_inserite == 10.00 || banconota_inserite == 20.00 || banconota_inserite == 50.00) {
  2. ...
  3. }



La parte di codice
Codice sorgente - presumibilmente Plain Text

  1. printf("NON HAI ABBASTANZA CREDITO PER AVERE IL CARBURANTE SCELTO.\n");


non verrà mai eseguita.
Di contro l'altro if()
Codice sorgente - presumibilmente C/C++

  1. if (banconota_inserite >= array_carburante[carburante_scelta].prezzo)
  2.                                 array_carburante[carburante_scelta].disponibilita - (array_carburante[carburante_scelta].prezzo*banconota_inserite);


verrà sempre eseguito, ma non ha senso perchè sta dicendo :
Se le banconote inserite sono maggiori del prezzo al litro del carburante allora disponibilità del carburante
meno (prezzo al litro per banconote inserite)


dovresti scrivere
Se le banconote inserite sono maggiori del prezzo al litro del carburante
allora ila disponibilità rimasta sarà pari a disponibilità iniziale meno (prezzo al litro per banconote inserite)


P.S. Come detto da TheDarkJuster , leggi quell'articolo, e sopratutto prova il codice, perchè noteresti questi errori

Ultima modifica effettuata da il 20/02/2017 alle 18:57
PM Quote
Avatar
lallo12 (Normal User)
Newbie


Messaggi: 20
Iscritto: 20/02/2017

Segnala al moderatore
Postato alle 21:20
Lunedì, 20/02/2017
il codice l ho scritto su code blocks (cosi vuole il professore) e non mi da errore

PM Quote
Avatar
lallo12 (Normal User)
Newbie


Messaggi: 20
Iscritto: 20/02/2017

Segnala al moderatore
Postato alle 21:38
Lunedì, 20/02/2017
ho corretto in questo modo

Codice sorgente - presumibilmente C/C++

  1. if (banconota_inserite < array_carburante[carburante_scelta].prezzo) {
  2. printf("NON HAI ABBASTANZA CREDITO PER AVERE IL CARBURANTE SCELTO.\n");
  3. } if (banconota_inserite >= array_carburante[carburante_scelta]. prezzo)
  4. array_carburante[i].disponibilita=array_carburante[carburante_scelta].disponibilita-(array_carburante[carburante_scelta].prezzo*banconota_inserite);


PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1620
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 21:38
Lunedì, 20/02/2017
Beh il professore non ti può imporre l'IDE al massimo ti può imporre il compilatore.

Lo sapevi che code::blocks può compilare usando il compilatore del visual studio?

Lo sapevi che code::blocks ha un debugger che funziona ESATTAMENTE come quello del visual studio?

Sapevi che il C è uno standard e quindi se segui gli standard il tuo programma si compilerà con gcc, con vc-compiler, con clang e altri?


Ultima modifica effettuata da TheDarkJuster il 20/02/2017 alle 21:43
PM Quote
Avatar
lallo12 (Normal User)
Newbie


Messaggi: 20
Iscritto: 20/02/2017

Segnala al moderatore
Postato alle 21:47
Lunedì, 20/02/2017
bhe ora lo so:k:

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 23:59
Lunedì, 20/02/2017
Testo quotato

Postato originariamente da lallo12:

il codice l ho scritto su code blocks (cosi vuole il professore) e non mi da errore



Non ho modo di verificare al momento se Code::block lo compili senza almeno un warming,
comunque dubito che nella console ti esca la tabella con Metano, Benzina e Gasolio  al massimo otrebbe uscirti una tabella con 3 volte Metano.
Comunque qui

Codice sorgente - presumibilmente C/C++

  1. //Scoretto
  2. for (i = 0; i <3; i++) {
  3.  
  4. printf("%-10s%d\t%5.2f\t%5.2f\n", array_carburante.nome, array_carburante.codice, array_carburante.prezzo, array_carburante.disponibilita );
  5. }
  6.  
  7. //Corretto
  8. for (i = 0; i <3; i++) {
  9.  
  10. printf("%-10s%d\t%5.2f\t%5.2f\n", array_carburante[i].nome ... );
  11. }


Gli Array hanno un indice che identifica l'elemento che vuoi considerare. sopra te lo sei dimenticato









Testo quotato

Postato originariamente da lallo12:

ho corretto in questo modo

Codice sorgente - presumibilmente C/C++

  1. if (banconota_inserite < array_carburante[carburante_scelta].prezzo) {
  2. printf("NON HAI ABBASTANZA CREDITO PER AVERE IL CARBURANTE SCELTO.\n");
  3. } if (banconota_inserite >= array_carburante[carburante_scelta]. prezzo)
  4. array_carburante[i].disponibilita=array_carburante[carburante_scelta].disponibilita-(array_carburante[carburante_scelta].prezzo*banconota_inserite);




Qua usi male gli indici di array_carburante[] . Sicuro che "i" e "carburante_scelta" identificano lo stesso elemento ?

PM Quote
Pagine: [ 1 2 3 4 ] Precedente | Prossimo