INFOPedia : PRGsol3

HomePage :: Categorie :: Indice :: Ultime modifiche :: Ultimi commenti :: Login/Registrazione

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]

Valid XHTML 1.0 Transitional :: Valid CSS :: Powered by Wikka Wakka Wiki 1.1.6.1
La pagina è stata generata in 0.3199 secondi