Visualizzazione dei risultati da 1 a 3 su 3

Discussione: pascal: inizi

  1. #1

    pascal: inizi

    Salve a tutti.
    Ho cominciato a provare a guardare un pò di pascal per iniziarmi ai concetti della programmazione e vorrei fare un es. del tipo:
    Introducendo un num da 1 a 12 vorrei che mi venisse restituito il mese e il numero dei giorni da cui questo è formato.

    Ho fatto un tentativo che funziona ma che mi pare scorretto.
    Vorrei poterlo scrivere in un modo più sintetico, così non mi pare prorpio che vada bene.

    questo è il tutto:


    program prova;
    Uses crt;
    Var n:integer;
    mese:string;
    Begin
    clrscr;
    Writeln('Inserisci il numero del mese: ');
    readln(n);
    if (n<0) and (n>12) then
    Writeln('Devi inserire un numero compreso tra 1 e 12')else
    begin
    case n of
    1: mese:='gennaio';
    2: mese:='febbraio';
    3: mese:='marzo';
    4: mese:='aprile';
    5: mese:='maggio';
    6: mese:='giugno';
    7: mese:='luglio';
    8: mese:='agosto';
    9: mese:='settembre';
    10:mese:='ottobre';
    11:mese:='novembre';
    12:mese:='dicembre';
    end;
    if (n=4) or (n=6) or (n=9) or (n=11) then
    writeln('Il mese di ',mese,' Š di 30 giorni');
    if n=2 then
    writeln('Il mese di ',mese,' Š di 28 giorni');
    if (n=1) or (n=3) or (n=5) or (n=7) or (n=8) or (n=10) or (n=12) then
    writeln('Il mese di ',mese,' Š di 31 giorni');

    readln;
    end;
    end.



    Qualcuno potrebbe suggerirmi qualcosa?

    tnx 1000.

  2. #2
    Si, è un pò bruttino.
    Comunque per gli inizi è un ottimo modo per imparare gli if e i select case.
    Comunque ti scrivo lo stesso programma in meno righe, utilizzando due array, uno per i mesi, l'altro per i giorni:
    codice:
    Program prova;
    Uses
      crt;
    Const
      mesi : array [1 .. 12] of String [9] = ('Gennaio', 'Febbraio', 'Marzo', 'Aprile', 'Maggio', 'Giugno', 'Luglio', 'Agosto', 'Settembre', 'Ottobre', 'Novembre', 'Dicembre');
      gg : array [1 .. 12] of Integer = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);
    Var
      x : Integer;
    Begin
      clrscr;
      write ('Inserisci il mese: ');
      readln (x);
      writeln ('Il mese è ', mesi [x] ,' ed ha ', gg [x] ,' giorni. ');
    readln;
    End.
    Saluti :quipy:

  3. #3
    Grazie, così è decisamente più economico!! :quipy:

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.