Eolox Inserito: 19 gennaio 2022 Segnala Share Inserito: 19 gennaio 2022 Salve a tutti, Non riesco a trovare il modo di risolvere un problema, praticamente tra due date inserite dall'utente, il programma deve capire che a giugno c'è una tassazione diversa invece che a luglio, per eseguire un tariffario su un B&B... Praticamente io vado a creare quattro text box dove nelle perime a sinistrva ad inserire la data di ceck-in (giorno - mese), e nelle seconde a destra la data di ceck-out (giorno - mese). Come potrei farle intendere che se il valore delle date è a cavallo di due mesi con tariffe diverse, dovremme restituirmi l'otput della tariffazzione cambiata dal giorno es. 30 giugno in poi? Grazie Link al commento Condividi su altri siti More sharing options...
lucios Inserita: 20 gennaio 2022 Segnala Share Inserita: 20 gennaio 2022 Ma è un problema di studio del metodo o di stesura del codice? Perchè, nel primo caso, dovresti prima pensare a come faresti per risolvere il problema a mano. Calcolare i giorni con la prima tariffazione, quelli con la seconda, calcolare i 2 importi, ecc. Nel secondo caso invece dove hai il problema? Nel confronto delle date o cosa? In che linguaggio stai lavorando? Link al commento Condividi su altri siti More sharing options...
Eolox Inserita: 21 gennaio 2022 Autore Segnala Share Inserita: 21 gennaio 2022 Praticamente il problema nasce quando uno ad esempio pernotta dal 27 giugno al 2 luglio, la tariffazione a cavallo dei due mesi cambia, come faccio a farle capire al programma che a luglio c'è un dato prezziario e a giugno un altro? non tutti possono pernottare solo ed esclusivamente ad un giugno o ad un luglio che sia, tutto lì... THX Link al commento Condividi su altri siti More sharing options...
lucios Inserita: 23 gennaio 2022 Segnala Share Inserita: 23 gennaio 2022 Non capisco dove ti blocchi. Non è un semplice confronto di date? Se la data di check out è dopo la data di cambio tariffazione vuol dire che hai scavallato. A questo punto calcoli i giorni fino a quello di cambio e quelli successivi e ti calcoli gli importi che poi sommerai. Ripeto: in quale linguaggio lavori? Se fosse C# ti consiglio di cercare "DateTime" con le varie proprietà: Link al commento Condividi su altri siti More sharing options...
Eolox Inserita: 23 gennaio 2022 Autore Segnala Share Inserita: 23 gennaio 2022 si è C#.... Ma la solcuzione sarebbe caricare una dll che gestisce le date, oppure creare un database con specificato ogni notte prezzo? Link al commento Condividi su altri siti More sharing options...
lucios Inserita: 24 gennaio 2022 Segnala Share Inserita: 24 gennaio 2022 Secondo me stai facendo confusione su un problema banale, che esperienze di programmazione hai?. Cosa c'entra la DLL? Lo sviluppo di una DLL serve solo se pensi di dover applicare del codice in molteplici applicazioni, per cui risulta comodo importare delle funzionalità già fatte senza doverle riscrivere. Quote oppure creare un database con specificato ogni notte prezzo? Ma perchè? I prezzi non vanno a scaglioni di periodi? Mica cambiano giorno per giorno. Ripeto: come faresti a mano? - Probabilmente ti segneresti su una lista le date di inizio e fine di ogni scaglione di tariffazione e le tariffe corrispondenti. - Calcoleresti il numero di giorni che cadono nel primo scaglione e calcoleresti la cifra con una moltiplicazione. - Calcoleresti il numero di giorni che cadono nel secondo (eventualmente nel terzo, ecc.) e faresti lo stesso calcolo. - Faresti la somma delle cifre calcolate per ottenere il totale. Prova prima a schematizzare queste funzionalità nel modo che preferisci (diagramma di flusso, lista di operazioni, appunti, pseudolinguaggio, ...) e poi comincia a provare a scrivere il codice. Link al commento Condividi su altri siti More sharing options...
Ggiovanni Inserita: 2 febbraio 2023 Segnala Share Inserita: 2 febbraio 2023 Ciao, supponendo che sia i periodi che le tariffe varino di anno in anno, se hai la disponibilità di un database, un'idea protrebbe essere creare una tabella "tariffe" in cui inserisci i prezzi per ogni periodo. Es: A fronte di due date inserite dall'utente (sarebbe opportuno che comprendessero anche l'anno) che chiameramo DataInizio e DataFine, puoi selezionare le tariffe dal database in questo modo: SELECT inizioPeriodo, finePeriodo, tariffaGiornaliera FROM Tariffe WHERE (inizioPeriodo < @DataInizio AND finePeriodo > @DataFine) OR (inizioPeriodo > @DataInizio AND inizioPeriodo < @DataFine) OR (finePeriodo > @DataInizio AND finePeriodo < @DataFine) Poi puoi calcolare la tariffa totale così: float totale = 0; foreach(var t in tariffeDallaBaseDati) { DateTime maxStart = t.inizioPeriodo > DataInizio ? t.inizioPeriodo : DataInizio; // Prendo il maggiore DateTime minEnd = t.finePeriodo < t.finePeriodo ? firstEnd : DataFine; // Prendo il minore TimeSpan interval = minEnd - maxStart; var giorniAQuestaTariffa = interval > TimeSpan.FromSeconds(0) ? interval.TotalDays : 0; totale += giorniAQuestaTariffa * t.TariffaGiornaliera; } Va tutto testato perchè l'ho scirtto di getto. Ci sarebbero poi correzioni ed ottimizzazioni da apportare (es. DataInizio probabilmente andrebbe incrementato di 1 in quanto sto considerando nella tariffa anche il giorno prima del primo pernottamento). Link al commento Condividi su altri siti More sharing options...
Ivan Botta Inserita: 2 febbraio 2023 Segnala Share Inserita: 2 febbraio 2023 Giovanni, ti sei accodato ad una discussione di un anno fa, non è consentito dal regolamento accettato in fase di iscrizione al forum, oltre a creare inutile confusione. Questa discussione la chiudiamo. 😉 ***DISCUSSIONE CHIUSA*** Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati