lallo12 (Normal User)
Newbie
Messaggi: 20
Iscritto: 20/02/2017
|
sisi, questa parte poi che tu gentilmente mi hai indicato l avevo gia corretta da me
Codice sorgente - presumibilmente Plain Text |
//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.}
|
cmq per ora mi da tutto come vorrei io e mi da anche la possibilità di prelevare nuovo carburante dopo quello gia preso soltanto che quando prendo due volte la benzina per esempio la disponibilità non me la decrementa su quella gia decrementata ma su quella piena cioe 1000, e poi non so come fare per gestirlo per un intero mese e poi dato un giorno vedere il totale venduto
Ultima modifica effettuata da lallo12 il 21/02/2017 alle 8:54 |
|
()
Newbie
Messaggi:
Iscritto:
|
Postato originariamente da lallo12:
cmq per ora mi da tutto come vorrei io e mi da anche la possibilità di prelevare nuovo carburante dopo quello gia preso soltanto che quando prendo due volte la benzina per esempio la disponibilità non me la decrementa su quella gia decrementata ma su quella piena cioe 1000 |
Ho già risposto a questo punto. Controlla gli indici come scritto nel mio precedente post
Postato originariamente da lallo12:
e poi non so come fare per gestirlo per un intero mese e poi dato un giorno vedere il totale venduto
|
Se devi gestirlo per un mese principalmente hai 2 strade che puoi percorrere:
1 - Usi la time() per il giorno, ma hai bisogno di 1 mese reale per testare il programma
2 - Inserisci la data da input, in questo modo puoi simulare qualsiasi giorno.
Poi, ad esempio, potresti usare una variabile "contenitore" dove sommi tutte le richieste giornaliere
Codice sorgente - presumibilmente C/C++ |
struct tot[]
{
giorno;
Q.ta Metano;
Q.ta Benzina;
Q.ta Gasolio;
}
|
in questo modo non è difficile avere la quantità di carburante erogata per un dato giorno |
|
lallo12 (Normal User)
Newbie
Messaggi: 20
Iscritto: 20/02/2017
|
stavo pensando di inserire la data in input tramite scanf e poi usare la struct che mi hai dato tu...potrebbe andare bene, la data che vado ad inserire come faccio poi a dire che da quella data deve passare un mese??
|
|
()
Newbie
Messaggi:
Iscritto:
|
Postato originariamente da lallo12:
stavo pensando di inserire la data in input tramite scanf e poi usare la struct che mi hai dato tu...potrebbe andare bene, la data che vado ad inserire come faccio poi a dire che da quella data deve passare un mese?? |
Spiega meglio questo punto |
|
lallo12 (Normal User)
Newbie
Messaggi: 20
Iscritto: 20/02/2017
|
inserendo la data con una scanf, poi per far si che il distributore funzioni per un mese come faccio?
|
|
()
Newbie
Messaggi:
Iscritto:
|
Cosa intendi per
Postato originariamente da lallo12:
far si che il distributore funzioni per un mese come faccio? |
Se riesci a fare un esempio, riusciresti pure ad avere la risposta da solo.
Ultima modifica effettuata da il 22/02/2017 alle 14:29 |
|
AldoBaldo (Member)
Guru
Messaggi: 699
Iscritto: 08/01/2015
|
In genere il sistema esprime una data come numero di secondi a partire da un punto di riferimento fissato arbitrariamente, dunque basta aggiungere a una certa data (espressa in secondi) 3600*24*30 secondi. 3600 sono i secondi un un'ora, 24 le ore in un giorno, 30 i giorni in un mese. Dunque, un mese corrisponde mediamente a 2592000 secondi.
Per effettuare una misurazione che tenga conto del fatto che i mesi possono avere 28, 29, 30 o 31 giorni si potrebbe fare...
Codice sorgente - presumibilmente C++ |
#include <stdio.h> #include <stdlib.h> #include <time.h> time_t avanza_mese( time_t t ) { struct tm *tm = localtime( &t ); // divide i componenti di data e ora ++tm->tm_mon; // porta avanti la data d'un mese return mktime( tm ); // la nuova ora, avanzata d'un mese } void attendi_invio( void ) { printf( "Premi \"invio\" per uscire " ); getchar(); } int main() { time_t t = time( NULL ); printf( "Data e ora correnti: %s", ctime(&t) ); t = avanza_mese( t ); printf( "Data e ora tra un mese: %s\n", ctime(&t) ); attendi_invio(); return 0; }
|
Non mancherebbero i problemini, però.
La funzione avanza_mese() riceve in ingresso una data e ora espressa come numero di secondi dalla data arbitraria della "notte dei tempi" secondo il C (mi sembra di ricordare che lo zero sia collocato nel 1970) e restituisce la stessa data e ora del mese successivo. La grana emerge se la data corrente è, per dire, il 31 marzo e si passa al 31 aprile, che non esiste... in quel caso, i giorni "in più" vengono comunque calcolati e la data "d'arrivo" finisce per essere il 1° maggio. Bah!
Ultima modifica effettuata da AldoBaldo il 22/02/2017 alle 15:21
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti. |
|
lallo12 (Normal User)
Newbie
Messaggi: 20
Iscritto: 20/02/2017
|
il mese deve essere di 31 giorni, non ho l esigenza che sia di 30 o 28.
e il ditributore deve essere gestito solo per 31 giorni
Ultima modifica effettuata da lallo12 il 23/02/2017 alle 10:31 |
|