Soluzioni esercizi proposti il 07 e 09/11/2006
Esercizio 1 - Equazione di 2 grado
program Equazione;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
w: integer; {Variabile per l'intestazione}
a,b,c: integer; {Coefficenti della equazione di secondo grado}
delta: integer; {variabile dove mettiamo il delta}
begin
{non avevo forse niente di meglio da fare...;) }
write(char(201)); for w:=1 to 77 do write(char(205));write(char(187));
writeln;
write(char(186)); for w:= 1 to 77 do write(char(000)); write(char(186));
writeln;
write(char(186)); for w:= 1 to 77 do write(char(000)); write(char(186));
writeln;
write(char(186)); for w:= 1 to 19 do write(char(000));write('Risoluzione equazioni di secondo grado');for w:= 1 to 20 do write(char(000)); write(char(186));
writeln;
write(char(186)); for w:= 1 to 77 do write(char(000)); write(char(186));
writeln;
write(char(200)); for w:=1 to 77 do write(char(205));write(char(188));
writeln; writeln; writeln;
{qui finisce il cazzeggio}
{*************************INIZIO PROGRAMMA*********************************}
Writeln('Inserire i coefficenti della equazione di secondo grado');
Writeln;
repeat
if a=0 then write('Il termine della x^(2) non deve essere 0. ');
Write('Coefficiente della x^(2): '); readln(a);
until a<>0;
Write('Coefficiente della x: '); readln(b);
Write('Inserire il termine noto: '); readln(c);
writeln;
{calcolo il discriminante}
delta:=(sqr(b)-(4*(a*c)));
if delta<0 then Write('Non ci sono soluzioni possibili');
if delta=0 then
begin
Write('Le due soluzioni sono coincidenti, ed e'': ');
write(-1*(b/(2*a)):0:3);
end;
if delta>0 then
begin
Writeln('Le soluzioni sono distinte e sono:');
writeln('x1= ',((-b)+(sqrt(delta)))/(2*a):0:5);
writeln('x2= ',((-b)-(sqrt(delta)))/(2*a):0:5);
end;
readln
end.
Esercizio 2 - Serie Armonica
program SerieArmonica;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
i: integer; {Variabile contatore}
tot: real; {Variabile che conterrà i risultati parziali,deve essere real perchè 1/n non è sempre intero}
n: integer; {Variabile che conterrà l'intero inserito dall'utente}
q: char; {Variabile di controllo per uscire dal programma}
begin
repeat {serve solo per ripetere l'intero programma più volte}
writeln;
Writeln('Il programma calcola la successione dei primi n termini della serie armonica');
writeln;
Writeln('Inserire il numero n');
readln(n);
tot:= 0; {necessario inizializzare il totale a zero}
for i:=1 to n do
begin
tot := tot + (1/i);
Write('Passo ',i,': 1/',i,' Il risultato parziale e'': ' ,tot:5:10); {uso questa notazione per avere un numero in notazione decimale con 10 cifre dopo la virgola}
writeln;
end;
writeln;
Writeln('La somma dei primi ',n,' termini della serie armonica e'': ',tot:3:10);
{--la parte sottostante serve solo per far ripeter il programma infinite volte--}
repeat
Writeln('Vuoi continuare? s/n ');
readln(q);
until (q='s') or (q ='n');
until q='n';
end.
Esercizio 3 - estremo superiore della serie armonica
program LimiteSerieArmonica;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
i: integer; {Variabile "denominatore"}
tot: real; {Variabile che conterrà i risultati parziali,deve essere real perchè 1/n non è sempre intero}
n: integer; {Variabile che conterrà l'intero inserito dall'utente}
q: char; {Variabile di controllo per uscire dal programma}
begin
repeat {serve solo per ripetere l'intero programma più volte}
writeln;
Writeln('Il programma calcola quanti termini della successione siano necessari per superare il numero dato');
writeln;
Writeln('Inserire il numero n');
readln(n);
tot:= 0; {necessario inizializzare il totale a zero}
i:= 1;
while tot <= n do
begin
tot := tot + (1/i);
Write('Passo ',i,': 1/',i,' la somma parziale e'': ' ,tot:5:10); {uso questa notazione per avere un numero in notazione decimale con 10 cifre dopo la virgola}
{notare che se disabilitiamo il write delle somme parziali la procedura risulta **molto** più rapida}
writeln;
i:=i+1
end;
writeln;
Writeln('Sono necessari ',i-1,' termini della serie armonica per superare ',n);
writeln;
{--la parte sottostante serve solo per far ripeter il programma infinite volte--}
repeat
Writeln('Vuoi continuare? s/n ');
readln(q);
until (q='s') or (q ='n');
until q='n';
end.
Esercizio 5 - Esponenziale
program Esponenziale;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
w: integer; {Variabile per il cazzeggio del titolo}
n: integer; {numero inserito dall'utente}
tot: integer; {somma parziale}
potenza: integer; {tiene conto delle volte che viene calcolata la potenza}
begin
{non avevo forse niente di meglio da fare...;) }
{**} write(char(201)); for w:=1 to 77 do write(char(205));write(char(187));
{**} writeln;
{**} write(char(186)); for w:= 1 to 77 do write(char(000)); write(char(186));
{**} writeln;
{**} write(char(186)); for w:= 1 to 77 do write(char(000)); write(char(186));
{**} writeln;
{**} write(char(186)); for w:= 1 to 15 do write(char(000));write('Qual''e'' la potenza di due piu'' vicina ad n?');for w:= 1 to 19 do write(char(000)); write(char(186));
{**} writeln;
{**} write(char(186)); for w:= 1 to 77 do write(char(000)); write(char(186));
{**} writeln;
{**} write(char(200)); for w:=1 to 77 do write(char(205));write(char(188));
{**} writeln; writeln; writeln;
{qui finisce il cazzeggio}
{*************************INIZIO PROGRAMMA SERIO*********************************}
Writeln('Inserire il numerdo n.');
Writeln;
readln(n);
tot:=1;
potenza:=0;
repeat
tot:=tot*2;
potenza:=potenza+1;
until tot>=n;
writeln('La potenza che si avvicina per difetto e'': ', potenza-1);
readln
end.
Esercizio 4 - Massimo Comun Divisore
program CalcolaMDC;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
w: integer;
x,y: integer;
e: real;
r: integer;
MCD: integer;
begin
{*********************************************}
write(char(201)); for w:=1 to 77 do write(char(205));write(char(187));
writeln;
write(char(186)); for w:= 1 to 77 do write(char(000)); write(char(186));
writeln;
write(char(186)); for w:= 1 to 77 do write(char(000)); write(char(186));
writeln;
write(char(186)); for w:= 1 to 25 do write(char(000));write('Programma per il calcolo del MCD');for w:= 1 to 20 do write(char(000)); write(char(186));
writeln;
write(char(186)); for w:= 1 to 77 do write(char(000)); write(char(186));
writeln;
write(char(200)); for w:=1 to 77 do write(char(205));write(char(188));
writeln; writeln; writeln;
{****************************************************************}
x:=0;
y:=0;
repeat
if x>y then Writeln('Il primo numero deve essere maggiore del secondo');
Writeln('Inserisci il primo numero');
read(x);
Writeln('Inserisci il secondo numero');
read(y);
until x>y;
repeat
r:=x mod y;
x:= y;
y:= r;
until r=0;
writeln('MCD ',x);
end.
Torna a Programmazione e Lab.
Non ci sono commenti in questa pagina. [Scrivi commento]