SOLUZIONE 22-06-99 (PASCAL)

Questionario cartaceo

  1. Vero; infatti i numeri in base 3 rappresentabili con 20 cifre decimali sono 3 elevato alla 20 (più di 3 elevato alla 10 = 59049),
    mentre quelli in base 5 rappresentabili con 5 cifre sono 3125.

  2. (Notare che tutti i parametri delle varie funzioni sono parametri valore)
    2.3   7.8 
    2.3   7.8
  3. Un disco rigido oppure un CD.

  4. program ESAME2;
    
       procedure RIGHE;
      {la procedura RIGHE costruisce un file su disco di nome 'righe.text' }
      {che contiene tante righe con esattamentre un solo carattere }
      {quante sono le righe del file su disco di nome 'rows.text'}
          var  c: char;
    		   F, G: text;
    	begin
    		reset(F, 'rows.text');
    		rewrite(G, 'righe.text');
    		while not EOF(F) do
    		begin
    			while not EOLN(F) do
    				read(F, c);
    			readln(F);
    			writeln(G, ' ');
    		end;
    		close(F);
    		close(G);
    	end;
    
    begin
    	RIGHE;
    end.

Parte laboratorio

program ESAME3;
 const
  MAX = 100;
 type
  POLI = array[0..MAX] of integer;

    {gli elementi del tipo POLI sono i polinomi in una variabile di grado massimo MAX }
    {con coefficienti  interi}
    {si assume che i valori di tutti i coefficenti devono essere fissati}
    {quindi 3 e rappresentato dall 'array dove il primo coefficente e'}
    {uguale a 3 e tutti gli altri sono uguali a 0}
 var
  A, B, C: POLI;
  I: integer;

 procedure STAMPA (P: POLI);
  var
   i: integer;
 begin
  for i := MAX downto 2 do
  begin
   if P[i] > 0 then
    write('+', P[i] : 2, 'X^', i : 1, ' ');
   if P[i] < 0 then
    write(P[i] : 2, 'X^', i : 1, ' ');
  end;
  if P[1] > 0 then
   write('+', P[1] : 2, 'X ');
  if P[1] < 0 then
   write(P[1] : 2, 'X ');
  if P[0] > 0 then
   write('+', P[0] : 2, ' ');
  if P[0] < 0 then
   write(P[0] : 2, ' ');
  writeln;
 end;

 procedure SOMMA (P1, P2: POLI;
       var P3: POLI);
  var
   i: integer;
 begin
  for i := MAX downto 0 do
   P3[i] := P1[i] + P2[i];
 end;

 procedure DERIVA (P1: POLI;
       var P2: POLI);
  var
   i: integer;
 begin
  for i := 0 to MAX - 1 do
   P2[i] := P1[i + 1] * (i + 1);
  P2[MAX] := 0;
 end;

begin
{assegnare ad A il polinomio 3 X3 + 7x -8}
 for I := 0 to MAX do
  A[i] := 0;
 A[3] := 3;
 A[1] := 7;
 A[0] := -8;

{assegnare a B  il polinomio 2 X2 - 7x + 18}
 for I := 0 to MAX do
  B[i] := 0;
 B[2] := 2;
 B[1] := -7;
 B[0] := +18;

{stampare A e B}
 STAMPA(A);
 STAMPA(B);

{stampare la somma di A e B}
 SOMMA(A, B, C);
 STAMPA(C);

{stampare la derivata di A}
 DERIVA(A, C);
 STAMPA(C);

end.