Newsgroup: it.istruzione.scuola.informatica
Titolo: programma pascal

Ciao a tutti, devo fare un programma che dato un giorno (numerico) mese
(numerico anche lui) e anno mi calcoli il giorno successivo...
Il programma l'ho fatto ma non riesco a farlo partire perchè mi da degli
errori....
Ora ve lo mostro e se trovato qualche errore, fatemelo sapere!!!!!!!!!!
Ciao e grazie
Paolo
Ecco il programma: (sono segnati tra parentesi dove mi da errore e che tipo)
Io ho provato a fare il programma ma mi da tanti errori SOPRATTUTTO DOPO IL
CASE QUANDO DEVO SCRIVERE VARI NUMERI,
qui di seguito ecco il programma che ho provato a fare!!!!
Dateci e non occhiata e vedete se riuscita a trovare errori?
Ciao e grazie
Paolo
Program data1;
uses crt;
var m, s, g, a, g1, g2,l:Integer;
Begin
clrscr;
writeln ('Inserisci il giorno del mese');
readln (s);
writeln ('Inserisci il mese da 1 a 12');
readln (m);
writeln ('Inserisci l''anno');
readln (a);
g:=a mod 4;
g1:=a mod 400;
g2:=a mod 100;
if (g=0) and (g2<>0) or (g1=0)
then
Begin
case m of
1,3,5,7,8,10,12:Begin
                Begin
                if s=31 then
                Begin
                l:=1;
                write ('Il giorno successivo al giorno che tu hai');
                write (' scelto cioS il ', s ,' del mese ', m+1 , '' );
                writeln (' dell''anno ', a ,' S il seguente: ' , l);
                end
                else
                Begin
                l:=s+1;
                write ('Il giorno successivo al giorno che tu hai');
                write (' scelto cioS il ', s ,' del mese ', m , '' );
                writeln (' dell''anno ', a ,' S il seguente: ' , l);
                end;
                end;
        4,6,9,11:Begin     {qui la macchina mi da l'errore mi dice  }
                if s=30 then   {Unknow identifier riferito al 4 con tutti}
                begin          {i suoi compagni}
                l:=1;
                write ('Il giorno successivo al giorno che tu hai');
                write (' scelto cioS il ', s ,' del mese ', m+1 , '' );
                writeln (' dell''anno ', a ,' S il seguente: ' , l);
                end
                else
                Begin
                l:=s+1;
                write ('Il giorno successivo al giorno che tu hai');
                write (' scelto cioS il ', s ,' del mese ', m , '' );
                writeln (' dell''anno ', a ,' S il seguente: ' , l);
                end;
               2:Begin        {qui la macchina mi da lo stesso errore}
                if s=29 then  {di sopra per. ora riferito al 2}
                Begin         {tutto ci. con il due, il 4 e tutti i suoi
amici}
                l:=1;         {succede anche sotto dopo l'else del
primissimo if}
                write ('Il giorno successivo al giorno che tu hai');
                write (' scelto cioS il ', s ,' del mese ', m+1 , '' );
                writeln (' dell''anno ', a ,' S il seguente: ' , l);
                end
                else
                Begin
                l:=s+1;
                write ('Il giorno successivo al giorno che tu hai');
                write (' scelto cioS il ', s ,' del mese ', m , '' );
                writeln (' dell''anno ', a ,' S il seguente: ' , l);
                end;
                end;
                end;
                end
                else
                Begin
                writeln ('Il numero che hai inserito S sbagliato riprova');
                end;
                end
else
                case m of
1,3,5,7,8,10,12:Begin
                if s=31 then
                Begin
                l:=1;
                write ('Il giorno successivo al giorno che tu hai');
                write (' scelto cioS il ', s ,' del mese ', m+1 , '' );
                writeln (' dell''anno ', a ,' S il seguente: ' , l);
                end
                else
                Begin
                l:=s+1;
                write ('Il giorno successivo al giorno che tu hai');
                write (' scelto cioS il ', s ,' del mese ', m , '' );
                writeln (' dell''anno ', a ,' S il seguente: ' , l);
                end;
                end;
       4,6,9,11:Begin {QUI MI DA UN ERRORE  E MI METTE IL CURSORE SUL 4}
                if s=30 then        {L'ERRORE è UNKNOWN IDENTIFIER E IL
CURSORE è SUL 4}
                Begin
                l:=1;
                write ('Il giorno successivo al giorno che tu hai');
                write (' scelto cioS il ', s ,' del mese ', m+1 , '' );
                writeln (' dell''anno ', a ,' S il seguente: ' , l);
                end
                else
                Begin
                l:=s+1;
                write ('Il giorno successivo al giorno che tu hai');
                write (' scelto cioS il ', s ,' del mese ', m , '' );
                writeln (' dell''anno ', a ,' S il seguente: ' , l);
                end;
                end;
              2:Begin                       {QUI MI DA UN ERRORE  E MI METTE
IL CURSORE SUL 2}
                 if s=28 then              {L'ERRORE è UNKNOWN IDENTIFIER E
IL CURSORE è SUL 2}
                 Begin
                l:=1;
                write ('Il giorno successivo al giorno che tu hai');
                write (' scelto cioS il ', s ,' del mese ', m+1 , '' );
                writeln (' dell''anno ', a ,' S il seguente: ' , l);
                end
                else
                Begin
                l:=s+1;
                write ('Il giorno successivo al giorno che tu hai');
                write (' scelto cioS il ', s ,' del mese ', m , '' );
                writeln (' dell''anno ', a ,' S il seguente: ' , l);
                end;
                end;
                end
readln
end.
Ciao e ancora grazie!!!!!!!

 lanciň come una antica formula
magica il suo messaggio:
[cut]
posta il messaggio su it.comp.lang.pascal
lě troverai gente molto piů qualificata... se non dovessi ricevere
risposta, dimmi qualcosa che proviamo a guardare insieme cosa non va
nel tuo programma...
saluti,
Fabio Ruini
fabi...@libero.it
 - ICQ #2887596
Linux Registered User #224097
Collaboratore 
http://www.zeusnews.com

Ciao!
Ho rivisto il tuo programma e quella che 
segue č una versione funzionante.
(la logica del programma invece non č perfetta perchč a volte
 visualizza m+1 dove dovrebbe visualizzare m, ricontrollalo!)
Il primo errore era causato da un BEGIN di troppo 
nel primo caso del CASE, e poi altri errori analoghi 
sono dovuti al fatto che non curando sufficientemente
l'indentazione e i commenti non ti rendi conto di
dove iniziano e finiscono i blocchi.
Cio' da' da penare in fase di debugging!
Leggendo attentamente il listato che segue vedrai messi
in pratica i seguenti consigli per rendere piů leggibili,
e quindi piů facilmente correggibili, i programmi:
- il BEGIN sempre a capo
- per ogni BEGIN il suo END incolonnato allo stesso modo
- il THEN mai a capo
- l'ELSE sempre incolonnato con l'IF corrispondente
- i casi del CASE incolonnati anche loro
- usa WRITELN e non WRITE se non sei arcisicuro che la 
  scritta stia su una riga
- commenta sempre gli END "lontani" dai rispettivi
  inizi (BEGIN, CASE, IF, ELSE, ...)
Ciao e buon lavoro!
Antonio
---------------programma-------------
Program data1;
var m, s, g, a, g1, g2,l:Integer;
Begin
  clrscr;
  writeln ('Inserisci il giorno del mese');
  readln (s);
  writeln ('Inserisci il mese da 1 a 12');
  readln (m);
  writeln ('Inserisci l''anno');
  readln (a);
  g:=a mod 4;
  g1:=a mod 400;
  g2:=a mod 100;
  if (g=0) and (g2<>0) or (g1=0) then
    Begin
      case m of
        1,3,5,7,8,10,12:
          Begin

          end;
        2:
          Begin        
            if s=29 then  
              Begin       
                l:=1;     
                write ('Il giorno successivo al giorno che tu hai');
                write (' scelto cioS il ', s ,' del mese ', m+1 , '' );
                writeln (' dell''anno ', a ,' S il seguente: ' , l);
              end
            else
              Begin
                l:=s+1;
                write ('Il giorno successivo al giorno che tu hai');
                write (' scelto cioS il ', s ,' del mese ', m , '' );
                writeln (' dell''anno ', a ,' S il seguente: ' , l);
              end;
          end
        else
          Begin
            writeln ('Il numero che hai inserito S sbagliato riprova');
          end;
        end;  { del CASE }
      end  { del ramo IF(g=0)and(g2<>0)or(g1=0)  }
    else
      case m of
        1,3,5,7,8,10,12:
          Begin
            if s=31 then
              Begin
                l:=1;
                write ('Il giorno successivo al giorno che tu hai');
                write (' scelto cioS il ', s ,' del mese ', m+1 , '' );
                writeln (' dell''anno ', a ,' S il seguente: ' , l);
              end
            else
              Begin
                l:=s+1;
                write ('Il giorno successivo al giorno che tu hai');
                write (' scelto cioS il ', s ,' del mese ', m , '' );
                writeln (' dell''anno ', a ,' S il seguente: ' , l);
              end;
          end;
        4,6,9,11:
          Begin 
            if s=30 then 
              Begin
                l:=1;
                write ('Il giorno successivo al giorno che tu hai');
                write (' scelto cioS il ', s ,' del mese ', m+1 , '' );
                writeln (' dell''anno ', a ,' S il seguente: ' , l);
              end
            else
              Begin
                l:=s+1;
                write ('Il giorno successivo al giorno che tu hai');
                write (' scelto cioS il ', s ,' del mese ', m , '' );
                writeln (' dell''anno ', a ,' S il seguente: ' , l);
              end;
          end;
        2:
          Begin   
            if s=28 then   
              Begin
                l:=1;
                write ('Il giorno successivo al giorno che tu hai');
                write (' scelto cioS il ', s ,' del mese ', m+1 , '' );
                writeln (' dell''anno ', a ,' S il seguente: ' , l);
              end
            else
              Begin
                l:=s+1;
                write ('Il giorno successivo al giorno che tu hai');
                write (' scelto cioS il ', s ,' del mese ', m , '' );
                writeln (' dell''anno ', a ,' S il seguente: ' , l);
              end;
          end;
      end;   { del CASE }
  readln
end.
-- 
Posted from 
ppp-62-11-153-2.dialup.tiscali.it
 [62.11.153.2] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG