Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Problema di Pascal

  1. #1

    Problema di Pascal

    Ciao a tutti!
    Se riuscite ad aiutarmi a fare funzionare questo programma siete mitici.. La prof nn ha la minima intenzione d spiegarcelo..
    La traccia del problema è: "Data la data del giorno (g,m,a) stabilire se la data (g1,m1,a1) è antecedente o futura alla data del giorno.
    Visualizza la scritta “Data passata” oppure “Data futura”."
    Vi riporto sotto quello che ho provato a fare io con Pascal ma non funzione come dovrebbe..

    Ciao ciao

    PROGRAM DATA;
    USES CRT;
    VAR g,m,a,g1,m1,a1 : integer;
    BEGIN
    CLRSCR;
    WRITELN ('Inserisci il giorno corrente');
    READLN (g);
    WRITELN ('Inserisci il mese corrente');
    READLN (m);
    WRITELN ('Inserisci l anno corrente');
    READLN (a);
    WRITELN ('Inserisci un giorno');
    READLN (g1);
    WRITELN ('Inserisci un mese');
    READLN (m1);
    WRITELN ('Inserisci un anno');
    READLN (a1);
    WRITELN;
    IF a1>a
    then
    WRITELN ('Data futura')
    else
    IF (m1>m) AND (g1<g)
    then
    WRITELN ('Data futura')
    else
    WRITELN ('Data passata');
    READLN;
    END.
    Angie ;o)

  2. #2
    Utente di HTML.it L'avatar di gokan
    Registrato dal
    Feb 2003
    Messaggi
    262
    Così su due piedi la prima cosa che mi viene in mente è fare un controllo sull'anno:
    codice:
    if a1>a then "la data con a1 è successiva"
    Un pò più complesso è il caso in cui, a parità di anno verifichi il mese, ti conviene memorizzarti i mesi in qualche struttura dati e verificare fare un controllo come sopra..

    Nel caso in cui anche i mesi coincidono allora verifichi il giorno, questo lo fai come nel caso dell'anno..

    Ciao

  3. #3
    nn è ke devo fare "if m1>m" e poi "if g1>g"???
    Xè nn ho capito cs m hai dtt.. Sn 2 settimane ke faccio pascal..
    Sorry..
    Ciao ciao e grazie
    Angie ;o)

  4. #4
    Utente di HTML.it L'avatar di gokan
    Registrato dal
    Feb 2003
    Messaggi
    262
    Prima controlli se le due date hanno lo stesso anno, giusto?
    E' ovvio che se i due anni sono diversi, significa che uno viene prima dell'altro e che quindi non è necessario andare a verificare sia il mese che il giorno per stabilire se una data precede un'altra.
    A parità di anno, si controllano i mesi. I mesi sono Gennaio, Febbraio etc, questi non li puoi verificare semplicemente facendo:
    codice:
    if gennaio < aprile then . ..
    perchè il compilatore fa una verifica lessicografica (ossia in ordina alfabetico), in questo caso, infatti aprile < gennaio.
    Potresti fare, in maniera banale (penso che si possa fare in pascal, non sono sicuro).

    codice:
    const gennaio=1, febbraio=2 .... dicembre=12
    e poi provare a vedere se il confronto
    codice:
    if gennaio<aprile (cioè 1<4)
    funziona

  5. #5
    se tu riuscissi a traformare la tue date in interi del tipo
    YYYYMMDD potresti confrontarli direttamente.
    esempio
    data=anno*10000 + mese*100 + giorno;

  6. #6
    Grazie 1000! ce l'ho fatta.. era solo un segno sbagliato..
    Ciao ciao e ancora grazie
    Angie ;o)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.