Strutture iterative
| Pag. 310 | es. 17 | es. 19 | es. 20 | es. 21 | es. 22 | es. 23 | es. 24 |
| es. 25 | es. 26 | es. 27 | es. 28 | es. 29 |
PROGRAM POT; {es. 17 pag. 310}
VAR
X:INTEGER; {BASE}
Y:INTEGER; {ESPONENTE}
R:INTEGER; {RISULTATO}
CONT:INTEGER; {CONTATORE DI PRODOTTO}
BEGIN
WRITELN('DAMMI LA BASE');
READLN(X);
WRITELN('DAMMI L''ESPONENTE'); {3a istruzione}
READLN(Y);
R:=1;
CONT:=0; {6a istruzione}
REPEAT
R:=X*R;
CONT:=CONT+1; {9a istruzione}
UNTIL CONT=Y;
WRITELN('IL RISULTATO E'' ' ,R);
READLN;
END.
program limite; {es. 19}
var
n: integer; {numero di velocita}
vr: integer; {velocita registrata}
aslv: integer; {auto che hanno superato il limite di velocita}
cont: integer; {contatore di auto}
begin
writeln('inserisci il numero di velocit… registrate' );
readln(n); {2a istruzione}
aslv:=0;
for cont:=1 to n do
begin {5a istruzione}
writeln ('dammi la velocit…');
readln(vr);
if vr>120 then {8a istruzione}
aslv:=aslv+1;
end; {10a istruzione}
writeln(aslv , ' auto hanno superato il limite di velocit…');
readln;
end.
Program classe;{es. 20}
var
n:integer; {eta degli studenti}
s_m:integer; {numero studenti minore eta}
e:integer; {eta di uno studente}
risp:char; {risposta: indicatore di fine ciclo}
Begin
s_m:=0;
repeat
writeln('inserisci et…');
readln(e); {2a istruzione}
if e<18 then
s_m:=s_m+1;
writeln ('vuoi continuare?'); {5a istruzione}
readln (risp)
until (risp='n') or (risp = 'N');
writeln('il numero delle persone minorenni Š ', s_m); {8a istruzione}
readln;
end.
program problema; {es. 21}
var
r:char; {risposta}
n,s,v:integer; {non sufficienze, sufficienze, voto}
nome:string[10]; {nome studente}
begin
n:=0; {1a istruzione}
s:=0;
r:='s'; {3a istruzione}
writeln('dammi il nome');
readln(nome);
while r='s'do {6a istruzione}
begin
writeln('dammi un voto');
readln(v); {9a istruzione}
if v>=6 then
s:=s+1
else
n:=n+1; {13a istruzione}
writeln('vuoi continuare?');
readln(r);
end; {16a istruzione}
if (n>=1)and(n<=3) then
writeln('promosso con debito')
else {19a istruzione}
if n>3 then
writeln('respinto')
else {22a istruzione}
writeln('promosso');
readln;
end.
program albergo; {es. 22}
var
r:char;
na:string[15]; {nome albergo}
c:shortint; {categoria dell'albergo}
npd:integer; {numero posti disponibili}
npa:integer; {numero posti alberganti}
begin
repeat
writeln('dammi il nome dell''albergo');
readln(na);
writeln('dammi la categoria dell''albergo'); {3a istruzione}
readln(c);
writeln('dammi il numero dei posti disponibili');
readln(npd);
writeln('dammi il numero degli alberganti'); {7a istruzione}
readln(npa);
if npa>npd then
writeln('la prenotazione non pu• essere effettuata, perchŠ mancano ', npa-npd,' posti ) {10a istruzione}
else
begin
npd:=npd-npa; {13a istruzione}
writeln('la prenotazione pu• essere effettuata');
writeln(' rimangono disponibili ancora ' , npd,' posti');
end; {16a istruzione}
writeln('vuoi continuare?');
readln(r);
until r='n'; {19a istruzione}
readln;
end.
Program Elezioni;{es. 23}
var
TNI:INTEGER;
TNV:INTEGER;
TSN:INTEGER;
TSB:INTEGER;
NI:integer;
NV:integer;
NSN:integer;
NSB:integer;
N:integer;
CONT:integer;
PERC:real;
PERC_SB:real;
PERC_SN:real;
Begin
writeln('Dammi il numero dei seggi elettorali');
READLN(N);
TNI:=0; {3a istruzione}
TNV:=0;
TSN:=0;
TSB:=0; {6a istruzione}
FOR CONT:=1 TO N DO
Begin
writeln('Dammi il numero degli iscritti'); {9a istruzione}
readln(NI);
TNI:=TNI+NI;
writeln('Dammi il numero dei votanti'); {12a istruzione}
readln(NV);
TNV:=TNV+NV;
writeln('Dammi il numero delle schede nulle'); {15a istruzione}
readln(NSN);
TSN:=TSN+NSN;
writeln('Dammi il numero delle schede bianche'); {18a istruzione}
readln(NSB);
TSB:=TSB+NSB;
END; {21a istruzione}
PERC:=(100*N)/TNI;
PERC_SB:=(100*TSB)/TNV;
PERC_SN:=(100*TSN)/TNV; {24a istruzione}
writeln('Percentuale votanti su tutti i seggi ',PERC);
writeln('Percentuale schede bianche ',PERC_SB);
writeln('Percentuale schede nulle ',PERC_SN); {27a istruzione}
readln;
End.
program prodotto;{es. 24}
var
c:integer;
d:string[15];
p:real;
pmax:real;
r:char;
cmax:integer;
dmax:string[15];
begin
pmax:=0;
repeat
writeln('dammi il codice del prodotto'); {3a istruzione}
readln(c);
writeln('dammi la descrizione del prodotto');
readln(d); {6a istruzione}
writeln('dammi il prezzo del prodotto');
readln(p);
if p>pmax then {9a istruzione}
begin
pmax:=p;
cmax:=c; {12a istruzione}
dmax:=d;
end;
writeln('vuoi continuare?[s/n]'); {15a istruzione}
readln(r);
until (r='n') or (r='N');
writeln('il prodotto più costoso ha il codice ' ,cmax); {18a istruzione}
writeln('e la descrizione ' ,dmax);
readln;
end.
program dipendenti;{es. 25}
var
a:integer; {anno corrente}
d:integer; {numero dipendenti}
dip:integer; {indice del ciclo}
N:string[10]; {nome}
an:integer; {anno di nascita}
st:real; {stipendio}
e:shortint; {et…}
p,m:integer; {pensionabili e minorenni}
begin
p:=0;
m:=0; {2a istruzione}
writeln('dammi l''anno corrente');
readln(a);
writeln('dammi il numero dei dipendenti'); {5a istruzione}
readln(d);
for dip:=1 to d do
begin {8a istruzione}
writeln(' dammi il nome, l''anno di nascita e lo stipendio');
readln(N,an,st);
e:=a-an; {11a istruzione}
if e>=60 then
p:=p+1
else {14a istruzione}
if e<18 then
m:=m+1
end; {17a istruzione}
writeln('i pensionabili sono ',p);
writeln('i minorenni sono ',m); {19a istruzione}
readln;
end.
program stipendio;{es. 26}
const K = 22
var
g:integer;
nome:string;
stip,som:real;
begin
stip:=5; som :=0;
writeln('dammi il nome');
readln(nome); {3a istruzione}
for g:=1 to k do
begin
stip:=stip*2; {6a istruzione}
som:=som+stip;
end;
writeln('lo stipendio guadagnato in 22 gg Š ' ,som:5:2);
readln; {10a istruzione}
end.
program obesi; {es. 27}
const
k=0.33;
var
o:integer; {numero degli obesi}
n:integer; {numero di persone}
pers:integer; {indice del ciclo}
p:real; {peso}
h:real; {altezza}
i:real; {indice di obesit…}
begin
writeln('dammi il numero di persone che inserirai');
readln(n); {1a istruzione}
o:=0;
for pers:=1 to n do
begin {4a istruzione}
writeln('dammi il peso');
readln(p);
writeln('dammi l''altezza in cm'); {7a istruzione}
readln(h);
i:=p/h;
if i>k then {10a istruzione}
begin
o:=o+1;
writeln('il numero degli obesi é ',o); {13a istruzione}
end;
end;
readln; {16a istruzione}
end.
program copie;{es. 28}
var
gvm:shortint;{giorno corrispondente alla vendita massima}
vm:integer; {vendita massima}
ng:shortint;{numero di giorni complessivi}
ncop:integer;{numero di copie vendute in tutto}
g:integer;{numero del giorno del mese}
cop:integer;{numero copie vendute in un giorno}
ris:char;{risposta}
m:real;{vendita media}
begin
vm:=0;
ng:=0;
ncop:=0;
repeat
writeln('dammi il giorno');
readln(g);
ng:=ng+1;
writeln('dammi il numero di copie vendute');
readln(cop);
ncop:=ncop+cop;
if cop>vm then
begin
vm:=cop;
gvm:=g
end;
writeln('vuoi continuare?');
readln(ris);
until (ris='n') or (ris='N');
m:=ncop/ng;
writeln('la vendita massima Š stata giorno ' ,gvm ,' e la media Š di ' , m:5:2);
readln;
end.
program n29;
var
nab:longint; {numero abitanti}
natt:longint; {numero degli attivi}
iatt:real; {indice di attivit…}
c:string[15]; {citt…}
cmax:string[15]; {citt… con indice maggiore}
cmin:string[15]; {citt… con indice minore}
imax:real; {indice di attivit… massimo}
imin:real; {indice di attivit… minimo}
N:integer; {numero di citt…}
i:integer; {indice del ciclo}
begin
imax:=0;
imin:= 1;
writeln ('dammi il numero di citt…');
readln (n);
for i := 1 to N do
begin
writeln('dammi il nome della citt…');
readln(c);
writeln('dammi il numero degli abitanti');
readln(nab);
writeln('dammi il numero degli attivi');
readln(natt);
iatt:=natt/nab*100;
if iatt>imax then
begin
imax:=iatt;
cmax:=c;
end
else if iatt <= imin then
begin
imin:=iatt;
cmin:=c
end;
end;
writeln('La citt… con l''indice pi— alto Š ',cmax);
writeln('e la citt… con l''indice pi— basso Š ',cmin);
readln;
end.
program n29;
var
nab:longint; {numero abitanti}
natt:longint; {numero degli attivi}
iatt:real; {indice di attivit…}
c:string[15]; {citt…}
cmax:string[15]; {citt… con indice maggiore}
cmin:string[15]; {citt… con indice minore}
imax:real; {indice di attivit… massimo}
imin:real; {indice di attivit… minimo}
N:integer; {numero di citt…}
i:integer; {indice del ciclo}
begin
imax:=0;
imin:= 1;
writeln ('dammi il numero di citt…');
readln (n);
for i := 1 to N do
begin
writeln('dammi il nome della citt…');
readln(c);
writeln('dammi il numero degli abitanti');
readln(nab);
writeln('dammi il numero degli attivi');
readln(natt);
iatt:=natt/nab*100;
if iatt>imax then
begin
imax:=iatt;
cmax:=c;
end
else if iatt <= imin then
begin
imin:=iatt;
cmin:=c
end;
end;
writeln('La citt… con l''indice pi— alto Š ',cmax);
writeln('e la citt… con l''indice pi— basso Š ',cmin);
readln;
end.