esercizio

Topic sul pascal.

Postby hiras on Sun Dec 10, 2006 7:01 pm

ok a presto
User avatar
hiras
Newbies
 
Posts: 49
Joined: Mon Nov 27, 2006 9:48 am
Location: ichnusa

Sponsor

Sponsor


Postby hiras on Mon Dec 11, 2006 9:13 pm

Si richiede che l'utente debba inserire 10 voti (tipo real). fare la media, comunicarla in output e fare in modo che introducendo il numero del voto, il programma comunichi il voto rispettivo.
Code: Select all
Program voti;

uses crt;

var a,n:integer;
    v:array[1..100] of real; {100 Š il numero degli indici che pu• avere il vettore}
    tot,media:real;
    ris:char;

procedure caricamento; {caricamento del vettore}

begin
   clrscr;
   writeln('quanti sono i voti da inserire?'); {definisce la dimensione del vettore min 1 max 100}
   readln(n);

   for a:=1 to n do
    begin
      clrscr;
      writeln;
      writeln('Inserisci il ',a,'ø voto');
      readln(v[a])
    end
end;

procedure cal_media; {calcolo media}

  begin
   for a:=1 to n do
    begin
      tot:=tot+v[a];
      end;
     media:=tot/n;
     writeln('La media e'' ',media:3:2);
     readln;
end;

procedure verifica; {verifica dei voti}

      begin
        repeat
          clrscr;
          writeln('vuoi verificare qualche voto?');
          writeln('s - n');
          readln(ris);
           if ris='s' then
            begin
              writeln('quale voto vuoi verificare?');
              readln(a);
              writeln('il voto corrispondente e'' ',(v[a]):2:2);
            end
           else
             writeln('hai concluso premi un tasto per uscire');
             readln;
           until
             ris<>'s'
           end;

begin
caricamento;
cal_media;
verifica;
end.


questo è l'esercizio. sembra che vada bene :D

che ne dici? ;)
User avatar
hiras
Newbies
 
Posts: 49
Joined: Mon Nov 27, 2006 9:48 am
Location: ichnusa

Postby Fabriz on Mon Dec 11, 2006 9:18 pm

ottimo ottimo. Magari andrebbe meglio formattato l'output, ma va benissimo già così!



Qualcosa di più complesso:

Introdotti casualmente 50 numeri in un vettore, scrivere in un altro vettore i numeri pari, e in un altro i numeri dispari. Dopodichè con il vettore di numeri pari, sostituire i valori con posto multiplo di 5(quindi indice divisibile per 5) con 0.


Se non riesci al primo botto, dividi il programma in due parti. Ma non ti dovrebbe essere difficile con le conoscenze che hai.
Bit wrote:Ma sisi cosa? che ca**o c'è da ridere? bha


Dead on my sweet Piano.


IO NON SONO AMICO DI GOOGLE
User avatar
Fabriz
Diagramma a Blocchi
 
Posts: 209
Joined: Sun Jul 02, 2006 4:15 pm

Postby hiras on Mon Dec 11, 2006 9:30 pm

grazie amico. ma questo grazie alla tua guida che mi ha dato una mano.

per la formattazione non so cosa sia però col tempo si imparerà anche quella.

ciao e ancora grazie ;)
User avatar
hiras
Newbies
 
Posts: 49
Joined: Mon Nov 27, 2006 9:48 am
Location: ichnusa

Postby hiras on Mon Dec 11, 2006 9:49 pm

ciao sempre io.

una delucidazione: nalla dichiarazione del vettore cioè v:array[1..n] of...
quell''n' deve essere necessariamente una cifra o anche una lettera?

grazie :roll:
User avatar
hiras
Newbies
 
Posts: 49
Joined: Mon Nov 27, 2006 9:48 am
Location: ichnusa

Postby DaD on Mon Dec 11, 2006 10:00 pm

Anche una lettera.
User avatar
DaD
Php Guru
 
Posts: 322
Joined: Sat Nov 25, 2006 5:09 pm

Postby Fabriz on Mon Dec 11, 2006 10:37 pm

dad wrote:Anche una lettera.



si giusto ma chiariamo, che con i problemi di tipi si fa casino in due secondi.

Puoi dichiarare:

Code: Select all
v:array['a'...'n'] of ...


che il compilatore non da problemi. Ma quelle lettere sono considerati char.

Mentre invece
Code: Select all
v:Array[1..n] of...

è un errore. "Types Mismatch" direbbe il mio dev :P
Bit wrote:Ma sisi cosa? che ca**o c'è da ridere? bha


Dead on my sweet Piano.


IO NON SONO AMICO DI GOOGLE
User avatar
Fabriz
Diagramma a Blocchi
 
Posts: 209
Joined: Sun Jul 02, 2006 4:15 pm

Postby hiras on Mon Dec 11, 2006 11:10 pm

S3raph wrote:
Code: Select all
v:Array[1..n] of...

è un errore. "Types Mismatch" direbbe il mio dev :P


ed infatti era quello che dava anche a me per questo ho fatto la domanda.

grazie a presto spero.....
User avatar
hiras
Newbies
 
Posts: 49
Joined: Mon Nov 27, 2006 9:48 am
Location: ichnusa

Postby DaD on Tue Dec 12, 2006 4:25 pm

S3raph wrote:
dad wrote:Anche una lettera.



si giusto ma chiariamo, che con i problemi di tipi si fa casino in due secondi.

Puoi dichiarare:

Code: Select all
v:array['a'...'n'] of ...


che il compilatore non da problemi. Ma quelle lettere sono considerati char.

Mentre invece
Code: Select all
v:Array[1..n] of...

è un errore. "Types Mismatch" direbbe il mio dev :P


Ecco perchè non potrei mai fare il professore xD
User avatar
DaD
Php Guru
 
Posts: 322
Joined: Sat Nov 25, 2006 5:09 pm

Postby hiras on Wed Dec 13, 2006 4:39 pm

S3raph wrote:Qualcosa di più complesso:

Introdotti casualmente 50 numeri in un vettore, scrivere in un altro vettore i numeri pari, e in un altro i numeri dispari. Dopodichè con il vettore di numeri pari, sostituire i valori con posto multiplo di 5(quindi indice divisibile per 5) con 0.


Se non riesci al primo botto, dividi il programma in due parti. Ma non ti dovrebbe essere difficile con le conoscenze che hai.


piccolo dubbio. per "numeri" pari e dispari intendi gli "indici"? :?
User avatar
hiras
Newbies
 
Posts: 49
Joined: Mon Nov 27, 2006 9:48 am
Location: ichnusa

Postby Fabriz on Wed Dec 13, 2006 6:15 pm

no, i valori
Bit wrote:Ma sisi cosa? che ca**o c'è da ridere? bha


Dead on my sweet Piano.


IO NON SONO AMICO DI GOOGLE
User avatar
Fabriz
Diagramma a Blocchi
 
Posts: 209
Joined: Sun Jul 02, 2006 4:15 pm

Postby hiras on Wed Dec 13, 2006 7:14 pm

ok grazie provvederò
User avatar
hiras
Newbies
 
Posts: 49
Joined: Mon Nov 27, 2006 9:48 am
Location: ichnusa

Postby hiras on Thu Dec 14, 2006 4:13 pm

Ciao presumo di aver finito l’esercizio e come d’obbligo devo darti una spiegazione.

Procedure caricamento:
carico il vettore iniziale. Ho messo solo 10 numeri in quanto con 50 era troppo lungo da leggere, però se lo si vuole con 50 numeri basta cambiare il valore della costante max.

Procedure copia:
nel primo ciclo copio i valori pari;
nel secondo copio i valori dispari;
nel terzo sostituisco i gli indici divisibili per 5 con 0.

Procedure verifica:
verifico la veridicità dell’esercizio con un appunto.
Quando vado a stampare i vettori si nota che mi fa vedere il valore di ogni singolo indice per ogni vettore.
Se io invece dei primi due volessi vedere solo i numeri pari o dispari o indici multipli di 5=0 dovrei mettere per ogni ciclo for di lettura, quindi la terza procedura, la condizione che ho inserito per copiare e sostituire i vari numeri.

Ho preferito fare in questa maniera in modo da dimostrare che il programma processi effettivamente quello che ho chiesto.

Spero di essere stato chiaro.

Questo è l’esercizio:
Code: Select all
Program paridisp;

uses crt;
const
max=10;
type
vettore= array[1..max] of integer;
var
v,p,d,s: vettore;

procedure caricamento;
var i:integer;
BEGIN
  clrscr;
   for i:=1 to max do
    begin
      writeln('inserisci il ',i,'ø numero');
      readln(v[i]);
      writeln;
    end;
END;

procedure copia;
var i:integer;
BEGIN
  for i:=1 to max do
   if (v[i] mod 2)=0 then
    (p[i]):=(v[i]);

  for i:=1 to max do
   if (v[i] mod 2)=1 then
    (d[i]):=(v[i]);

  for i:=1 to max do
   if (i mod 5) =0 then
    (p[i]):=0;
END;

procedure verifica; {verifica l'effettivo caricamento dei vettori}
var i:integer;
BEGIN
  for i:=1 to max do
    write(p[i],' '); {vettore con numeri pari e indici multipli di 5=0}
    writeln;

  for i:=1 to max do  {vettore con numeri dispari}
    write(d[i],' ');
    writeln;

  for i:=1 to max do  {vettore iniziale}
    write(v[i],' ');
    readln;
END;

BEGIN

  caricamento;
  copia;
  verifica;
END.


cosa ne pensi? :shock:
User avatar
hiras
Newbies
 
Posts: 49
Joined: Mon Nov 27, 2006 9:48 am
Location: ichnusa

Postby Fabriz on Thu Dec 14, 2006 6:51 pm

ottimo ottimo :shock: migliori a vista d'occhio!


Piccole info:

1.
Code: Select all
a[i]:=3+2;


è inutile mettere le parentesi su a[i]. Il compilatore capisce anche senza, ed è più chiaro!

2.

quando metti nel writeln ' ' , è sostanzilamente scorretto. Pascal fornisce un metodo di formatazione più formale e giusto(...). Ovvero:

Code: Select all
write(a[i]:3)

dici di scrivere il numero contenuto in a[i] in 3 spazi. Scriverà il numero a partire dal posto più a destra, e se li occuperà tutti o più andrà a occupare più spazi, metnre invece se il numero di cifre è < 3 lascierà i restanti "buchi" vuoti, in modo da avere un minimo di formattazione dell'output (quando parlo di formattazione dell'output intendo l'organizzazione visuale del output).

Spero di essere stato chiaro!


Altro esercizio :roll:

Caricati due vettori, calcolare il prodotto scalare( sapendo che è la somma di tutti i prodotti dei valori di indice uguale: v[i]*w[i] + v[i+1]*w[i+1] ... ).
Bit wrote:Ma sisi cosa? che ca**o c'è da ridere? bha


Dead on my sweet Piano.


IO NON SONO AMICO DI GOOGLE
User avatar
Fabriz
Diagramma a Blocchi
 
Posts: 209
Joined: Sun Jul 02, 2006 4:15 pm

Postby hiras on Thu Dec 14, 2006 7:10 pm

ok chiaro.

per l'esercizio adesso ci provo
User avatar
hiras
Newbies
 
Posts: 49
Joined: Mon Nov 27, 2006 9:48 am
Location: ichnusa

PreviousNext

Return to Pascal

Who is online

Users browsing this forum: No registered users and 1 guest