Newsgroup: it.comp.lang.pascal
Titolo: Cosa non funziona?

Premetto che sono alle primissime esperienze con pascal dovevo ricavare
inserendo i dati del primo giorno del mese a quale giorno della settimana
sarebbe corrisposto l'ultimo del mese.
Non riesco a compilarlo e non sono nemmeno sicuro che debba essere impostato
così. Un grazie anticipato a chi mi darà una mano.
program calendario;
var mese: string[10];
    giorno: string[10];
    n_giorni:integer;
    vg:integer;
    resto:integer;
    somma:integer;
procedure
 calcolo_giorni (mm:string;gg:string;ngg:integer);
begin
    writeln ('Inserisci il nome del mese');
    readln (mm);
    writeln ('Inserisci il numero dei giorni');
    readln (ngg);
    writeln ('Inserisci nome del 1ø giorno del mese');
    readln (gg);
case gg of
 if 'Luned    ': then vg:= 0;
else if 'Marted    ':then vg:= 1;
else if 'Mercoled  ':then vg:= 2;
else if 'Gioved    ':then vg:= 3;
else if 'Venerd    ':then vg:= 4;
else if 'Sabato    ':then vg:= 5;
else if 'Domenica  ':then vg:= 6;
else writeln ('errore giorno non inserito')
    resto:= ngg mod 7;
    somma:=resto+vg;
    if somma = 0 then writeln ('Ultimo gg S Luned ');
    if somma = 1 then writeln ('Ultimo gg S Marted ');
    if somma = 2 then writeln ('Ultimo gg S Mercoled ');
    if somma = 3 then writeln ('Ultimo gg S Gioved ');
    if somma = 4 then writeln ('Ultimo gg S Venerd ');
    if somma = 5 then writeln ('Ultimo gg S Sabato');
    if somma = 6 then writeln ('Ultimo gg S Domenica');
    end;
    writeln
    end;
(*main*)
begin
procedure calcolo_giorni;
end.
 

 
Ti consiglio di guardare a modo l'help del TP, e di riscrivere il
programma, l'algoritmo di calcolo del giorno non l'ho guardato.
Se vuoi una mano scrivimi!
Ciao
MaTTeO.

 end.
Di seguito il programma che "aggiustato" :)
===============================================
program calendario;
type MiaStringa=string[10]; {definisco un mio sottotipo che equivale
                            a una stringa di 10 caratteri}
{definisco una costante che e' un vettore di 7 elementi di tipo MiaStringa
e ci ficco dentro i giorni della settimana}
const Settimana: array [1..7] of
      MiaStringa=('Lunedi','Martedi','Mercoledi','Giovedi',
                 'Venerdi','Sabato','Domenica');
var
    {queste 3 var vengono lette nel MAIN}
    mese, giorno: MiaStringa;
    n_giorni:integer;
{procedura per il calcolo dell'ultimo giorno del mese}
procedure calcolo_giorni (mm,gg:MiaStringa;ngg:integer);
{per le var ho usato i nomi che avevi scelto tu anche
se forse hanno cambiato significato all'interno del programma}
var resto,somma,vg:integer;
    i: integer;
begin
     vg:=-1; {imposto inizialmente il valore di VG (
             che dovrebbe stare per valore giorno) a -1 ovvero nessun giorno
             della settimana}
     {con 1 ciclo enumerativo da 1 a 7 controllo se il GG che mi sono
     passato come parametro dal MAIN e' contenuto nella settimana}
     for i:=1 to 7 do {i assume i valori da 1 a 7} {Settimana[1] = 'Lunedi'
e cosi' via}
         if gg=Settimana[i] {se il GG e' nella settimana}
            then
                vg:=i; {allora VG e' uguale a I}
     if vg=-1 {se VG e' ancora -1, non e' stato modificato }
        then
            begin
                 {quindi....}
                 writeln('Giorno non valido');
                 readln; {attende la pressione di INVIO}
                 {ed esce dal programma}
                 halt;
            end;
     resto:= ngg - 29; {xche' 29? xche' il 29esimo giorno di un mese e'
uguale al 1o
                       e con questa sottrazione ottengo i giorni che mancano
                       alla fine del mese.
                       NB: se il mese e' di 28 ti da -1...qnd l'ultimo gg
                        del mese
                       e' il precedente a quello iniziale}
     somma:=resto+vg; {dopo li sommo al VG }
     if somma=-1 {se la somma e' -1 era un mese di 28 con Lunedi come primo
gg}
        then
            somma:=7; {e allora la somma la porto a 7, (domenica, il gg
prima del Lunedi ;)}
     {scrive l'ultimo gg del mese MM leggendo Settimana[somma]}
     writeln ('L''ultimo giorno del mese di ',mm,' e'' ', Settimana[somma]);
end;
(*main*)
begin
     write('Inserisci il nome del mese: ');
     readln(mese);
     write('Inserisci il numero dei giorni: ');
     readln(n_giorni);
     write('Inserisci nome del 1° giorno del mese: ');
     readln(giorno);
     {richiamo la procedura per il calcolo dell'ultmo gg
     passandogli come parametri i valori appena letti}
     calcolo_giorni(mese,giorno,n_giorni);
     {attende la pressione di INVIO}
     readln;
end.
==============================================
NB: non mi sono messo a fare controlli su maiuscole/minuscole....quindi
poter far funzionare tutto devi inserire i gg come li ho scritti nel vettore
Settimana (Lunedi, .....) rispettando le maiuscole/minuscole....inoltre
potresti aggiustare il tutto impedendo di far inserire per GG valori
superiori 31 e minori di 28....e altri test per verificare se il num di
giorni corrisponde al mese inserito, e così via!.....fai lavorare la
testolina.. :)))
Se qualcosa non ti quadra, in questi GG seguirò il thread, quindi puoi
postare....intanto comincia a guardarti l'help e magari qualche manuale (se
li hai....io no)
Ciao
--
DeViL!
=====================================
Togliere ILDISTURBO per rispondere :-)
=====================================
--------------------------------------------------------
"in tutti i tipi di unione, ciascuno dovrebbe comportarsi
secondo la sua naturale inclinazione" (Vatsayana)
--------------------------------------------------------

 end.
Ciao Teo