Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - progetto in c
Forum - C/C++ - progetto in c

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


Messaggi: 20
Iscritto: 20/02/2017

Segnala al moderatore
Postato alle 10:16
Lunedì, 20/02/2017
salve a tutti vi ringrazio anticipatamente per l aiuto
ho un progetto che mi chiede di implementare un distributore di carburante per un mese e poi dato un giorno verificare quanto ho venduto.
il distributore è finito ma non riesco a fare quello che ho scritto di sopra il codice scritto fino ad ora è questo:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
// Creazione delle STRUCT.
struct carburante {
char nome[100];
int codice;
float prezzo;
int 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");
// Dichiarazione delle variabili.
float banconota_inserite, resto;
int i, carburante_scelta;
int j = 0;
for (i = 0; i <3; i++) {
printf("%d - %s - %f - %d \n", array_carburante.codice, array_carburante.nome, 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 %f ", (array_carburante[carburante_scelta].prezzo*banconota_inserite));
printf("\n" );
printf("\n" );
printf("\n" );
printf("RIMANENZA CARBURANTE SCELTO\n" );
printf("%d - %s - %f - %f", array_carburante[carburante_scelta].codice, array_carburante[carburante_scelta].nome, 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;
}
}
return 0;
}}





PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 12:31
Lunedì, 20/02/2017
Salve, innanzitutto usa i tag CODE altrimenti il codice non si capisce.
Secondo, hai provato il codice? o è copiato da qualche parte? (ad un punto parli di bibite e non benzina)

Comunque, il codice presenta diversi errori,

- array_carburante è definito come Array, ma non lo usi come tale , dovresti usarlo con gli indici
(nella printf iniziale ad esempio)
array_carburante

- Non c'è nessun controllo nell'input, Potrei inserire come scelta "$%$&$%" il programma andrebbe in crash.

- Non mi permette di inserire più di una banconota (ma questo è anche un aspetto che puoi modificare in seguito, non influisce sul programma)
Ti consigliere i spezzettare il programma in funzioni, anche questo aspetto non influisce sul funzionamento del programma, ma lo rende più "mantenibile".

-
Esattamente cosa ti aspetteresti che facesse questa parte di codice?
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[scelta].prezzo) {
  3.         printf("NON HAI ABBASTANZA CREDITO PER AVERE IL CARBURANTE SCELTO.\n");
  4. } if (banconota_inserite >= array_carburante[scelta].prezzo)
  5.         array_carburante[scelta].disponibilita - (array_carburante[scelta].prezzo*banconota_inserite);
  6. {



Sicuro che la disponibilità debba essere di tipo int ?


- Non si capisce il significato dei vari valori a video , io ci sono andato ad intuito su cosa volessero significare.

Inizia a sistemare questa parte, poi spostasti alle successive (ad esempio quando scegli 10 o 11, anche li ci sono alcuni errori), cerca di sistemare questo pezzo di codice e postalo.

P.s. Mio consiglio personale, ragruppa le variabili ad inizio delle funzioni, da senso di maggior ordine.

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


Messaggi: 20
Iscritto: 20/02/2017

Segnala al moderatore
Postato alle 13:25
Lunedì, 20/02/2017
in quel pezzo di codice da lei postato mi aspetto di inserirre delle banconote, se il valore è minore del prezzo del carburante allora esce a video on hai abbastanza credito per , mentre se è uguale o maggiore al prezzo del carburante decremento la disponibilità per carburante (richiesto nel esercizio)

PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

Segnala al moderatore
Postato alle 13:36
Lunedì, 20/02/2017
Testo quotato

Postato originariamente da lallo12:

in quel pezzo di codice da lei postato mi aspetto di inserirre delle banconote, se il valore è minore del prezzo del carburante allora esce a video on hai abbastanza credito per , mentre se è uguale o maggiore al prezzo del carburante decremento la disponibilità per carburante (richiesto nel esercizio)



Esaminiamo il codice:
Codice sorgente - presumibilmente C/C++

  1. if (banconota_inserite == 5.00 || ...) {
  2.     if (banconota_inserite < array_carburante[scelta].prezzo) {
  3.             printf("NON HAI ABBASTANZA CREDITO PER AVERE IL CARBURANTE SCELTO.\n");
  4.  
  5. // array_carburante[scelta].prezzo sarà 0.5 - 0.6 -  o 1 (i valori li hai inseriti ad inizio main) quindi sarà sempre
  6. // maggiore di banconote inserite (che minimo potrà essere 5) la printf("..."); non arà mai eseguita
  7.  questo è un errore logico  
  8.  
  9.  
  10.     } if (banconota_inserite >= array_carburante[scelta].prezzo)
  11.             array_carburante[scelta].disponibilita - (array_carburante[scelta].prezzo*banconota_inserite);
  12.  
  13. // Questa differenza e' fine a se stessa  ... il risultato verrà perso. Manca la variabile dove inserire
  14.  il risultato


PM Quote
Avatar
lallo12 (Normal User)
Newbie


Messaggi: 20
Iscritto: 20/02/2017

Segnala al moderatore
Postato alle 13:47
Lunedì, 20/02/2017
potrebbe correggermi lei gli errori che non vanno ??

Ultima modifica effettuata da lallo12 il 20/02/2017 alle 14:00
PM Quote
Avatar
()
Newbie


Messaggi:
Iscritto:

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

Postato originariamente da lallo12:

potrebbe correggermi lei gli errori che non vanno ??



le cose che non vanno le ho, più o meno, esposte.
cerca tu di aggiustare il codice.
Per qualsiasi problema chiedi in forum

PM Quote
Avatar
lumo (Member)
Expert


Messaggi: 413
Iscritto: 18/04/2010

Segnala al moderatore
Postato alle 15:17
Lunedì, 20/02/2017
Ciao lallo12, qui nessuno fa i compiti per casa degli altri,sfrutta i generosi suggerimenti di Mikelius e se avrai ancora problemi ti aiuteremo a patto che tu riporti precisamente il tuo errore/difficoltà e non un generico "non funziona".

PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1452
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 15:22
Lunedì, 20/02/2017

PM Quote
Avatar
lallo12 (Normal User)
Newbie


Messaggi: 20
Iscritto: 20/02/2017

Segnala al moderatore
Postato alle 15:49
Lunedì, 20/02/2017
chiedo scusa ma ho la consegna di due progetti per giovedì e sono nel panico, e probabilmente sono stato troppo diretto

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