Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di unit1
    Registrato dal
    Feb 2004
    Messaggi
    354

    [pacal&&all] calcolare il giorno della settimana

    Io lavoro il pascal ma il problema non è nel codice:

    devo creare un programma cha data un data da input mi cacloli il giorno della settimana di quella data.

    il problema e che non ho la più pallida idea di come fare!

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,303
    Ho trovato un algoritmo e te l'ho tradotto in Pascal. L'ho testato e funziona. Penso che per gli anni antecedenti il 1900 l'algoritmo non sia più valido a causa degli anni bisestili e delle riforme gregoriane.
    codice:
    Program CalcolaGiorno;
    
    Uses Crt;
    
    Type ListaGiorni = ARRAY[0..6] Of String;
    
    Var days: ListaGiorni;
        giorno: Integer;
        mese: Integer;
        meseX: Integer;
        anno: Integer;
        uno, due, tre, quattro, cinque, sei, sette: Integer;
    
    Begin
       ClrScr;
       repeat
          Write('Introducci giorno (1-31): ');
          ReadLn(giorno);
       until ((giorno > 0) AND (giorno < 32));
    
       repeat
          Write('Introduci mese (1-12): ');
          ReadLn(mese);
       until ((mese > 0) AND (mese < 13));
    
       repeat
          Write('Introduci anno (>1899): ');
          ReadLn(anno);
       until (anno > 1899);
    
       days[0] := 'Sabato';
       days[1] := 'Domenica';
       days[2] := 'Lunedì';
       days[3] := 'Martedì';
       days[4] := 'Mercoledì';
       days[5] := 'Giovedì';
       days[6] := 'Venerdì';
       
       if (mese = 1) then begin
          meseX := 13;
          anno := anno-1
       end;
       if (mese = 2) then begin
          meseX := 14;
          anno := anno-1
       end;
    
       uno := ((meseX + 1) * 3) div 5;
       due := anno div 4;
       tre := anno div 100;
       quattro := anno div 400;
       cinque := giorno + (meseX * 2) + uno + anno + due - tre + quattro + 2;
       sei := cinque div 7;
       sette := cinque - (sei * 7);
    
       Writeln;
       Writeln('Il giorno della settimana e'': ', days[sette]);
    End.
    Attenzione: non è proprio il massimo come programma... infatti è possibile inserire date inesistenti (come, ad esempio, il 31 febbraio) senza che faccia una piega; calcola lo stesso il giorno

    E' sufficiente inserire qualche controllo ulteriore...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  3. #3
    Utente di HTML.it L'avatar di unit1
    Registrato dal
    Feb 2004
    Messaggi
    354
    Ci lavorerò su, grazie 10000!!!

  4. #4
    Utente di HTML.it L'avatar di unit1
    Registrato dal
    Feb 2004
    Messaggi
    354
    C'è un problema:

    la variabile meseX viene inizializzata solo se il mese è 1 o 2:

    codice:
    if (mese = 1) then begin
          meseX := 13;
          anno := anno-1
       end;
       if (mese = 2) then begin
          meseX := 14;
          anno := anno-1
       end;
    ma viene utilizzata sempre:
    codice:
    uno := ((meseX + 1) * 3) div 5;
    e
    codice:
    cinque := giorno + (meseX * 2) + uno + anno + due - tre + quattro + 2;
    in effetti il progrmma funziona solo se il mese è 1 o 2 per il resto sbaglia!

    poi non riesco ha capire il calcolo che fa!

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 © 2024 vBulletin Solutions, Inc. All rights reserved.