INFOPedia : PRGsol4

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

Soluzioni esercizi proposti il 14 e 16/11/2006


Esercizio 1 - Stabilire se due vettori sono uguali
Questo esercizio dovrebbe in realtà essere fatto con un while o con un repeat, perchè con il for (com l'ho fatto io) l'algoritmo scorre TUTTI gli elementi di un vettore, mentre ciò non è necessario, perchè basta trovarne due diversi che il vettore a è diverso dal vettore b.


program Esercizio1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
matrice=array[1..10] of integer;

var
u,v : matrice;
i,uguale: integer;

begin
randomize;
uguale:=1;
for i:=1 to 10 do
  begin
  u[i]:=(random(100));
  v[i]:=(random(100));
  end;
for i:=1 to 10 do write(u[i],' ');
writeln;
for i:=1 to 10 do write(v[i],' ');

for i:=1 to 10 do if u[i]=v[i] then uguale:= uguale+1;
writeln;
if (uguale=10) then writeln('sono uguali') else writeln('sono diversi');



readln
end.


Esercizio 2 - Invertire un vettore
program Esercizio2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const
n=11;

type
matrice=array[1..n] of integer;

var
A,B: matrice;
i: integer;
begin
randomize;
for i:=1 to n do
  begin
  a[i]:=(random(n));
 end;
for i:=1 to n do write(a[i],' ');
writeln;
for i:=n downto 1 do
  begin
  b[n+1-i]:=a[i]
  end;
for i:=1 to n do write(B[i],' ');
writeln;
readln
end.



Esercizio 3 - Invertire un vettore by my self

program Esercizio3;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const
n=11;

type
matrice=array[1..11] of integer;

var
A: matrice;
i,x: integer;


begin
randomize;
for i:=1 to n do
  begin
  a[i]:=(random(100));
  end;

for i:=1 to n do write(a[i],' ');
writeln;


for i:=((n div 2)) downto 1 do
  begin
  x:=a[i];
  a[i]:=a[12-i];
  a[12-i]:= x;
  end;

for i:=1 to n do write(a[i],' ');
writeln;



readln
end.


Esercizio 4 - Ricerca di un elemento in un vettore
program Esercizio4;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const
n=10;

type
matrice=array[1..n] of integer;

var
A: matrice;
i,x: integer;
found: boolean;


begin
randomize;
for i:=1 to n do
  begin
  a[i]:=(random(100));
  end;

for i:=1 to n do write(a[i],' ');
writeln;
writeln('inserisci il valore cercato');
readln(x);
i:=n;
found:=false;
repeat
if A[i]=x then found:=true;
i:=i-1;
until  (found=true) or (i=1);
if (found=true) then writeln('ho trovato un l'' utima occorrenza nella posizione ',i+1) else writeln('Elemento non trovato');


readln
end.



Esercizio 5 - Ricerca di un elemento in una matrice
Per questo esercizio ho realizzato un'altra matrice dove salvare le coordinate degli elementi trovati..forse uno spreco.se ho un minuto lo rifaccio.
program Esercizio5;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const
n=10;


type
Vettore=array[1..n] of integer;
Matrice=array[1..n,1..n] of integer;

var
M:matrice;
r:array[1..n*n,1..2] of integer;
x,i,j,s: integer;
found: boolean;


begin
randomize;
for i:=1 to n do
  for j:=1 to n do
    M[i,j]:=random(100);


for i:=1 to n do
  begin
  for j:=1 to n do
    begin
    write(M[i,j]:3,' ');
    end;
  writeln;
  end;
writeln('Inserisci il numero da ricercare');

readln(x);
s:=1;
for i:=1 to n do
  for j:=1 to n do
    begin
    if M[i,j]=x then
      begin
      found:= true;
      r[s,1]:=i;
      r[s,2]:=j;
      s:= s+1;
      end;
    end;


if found = true then
  begin
    writeln('Le coordinate delle occorrenze sono:');
    for s:=1 to n*n do
      if r[s,1]> 0 then
        begin
          write('Riga: ',R[s,1]:2,' ');
          write('Colonna: ',R[s,2]:2);
          writeln;
        end;
    end

else
writeln('Non esiste alcuna occorrenza del numero ',x,' nella matrice M');





readln
end.



Esercizio 6 - Calcola traccia e verifica simmetria
Qui penso di aver fatto un lavoro discreto, perchè non verifico tutta la matrice ma soltanto gli elementi "sopra" la diagonale principale. un buon numero di cicli in meno.

program Esercizio6;

{$APPTYPE CONSOLE}

uses
  SysUtils;
const
  n=10;
type
  Matrice=array[1..n,1..n] of integer;

var
i,j,tot,x: integer;
M: matrice;
different: boolean;

begin
randomize;
for i:=1 to n do
  begin
  for j:=1 to n do
    begin
    M[i,j]:=10;{random(100);}
    write(m[i,j]:3,' ');
    end;
  writeln;
  end;

{calcola traccia}
tot:= 0;
j:=1;
for i:=1 to n do
  begin
  tot:= tot+m[i,j];
  j:=j+1;
  end;

writeln('La traccia di questa matrice e'': ',tot);

{calcolo se è diagonale}
different:=false;   {è la variabile che mi segnala se ho trovato un elemento diverso dall'altro}
i:=1;
x:=1; {variabile che mi serve a scopo "didattico" per contare quanti cicli fa l'algoritmo}
while (different=false) and (i<=n) do
  begin
 {l'indice di colonna "j" ad ogni passaggio assume il val dell'indice di riga più uno}
 {questo perchè per verificare la diagonalità di una matrice basta verificarne una metà}
   j:=i+1;
    while (different=false) and (j<=n) do
       begin
        if M[i,j]<>M[j,i] then different:= true;
         writeln(x);
         x:=x+1{variabile per stampare le iterazioni}
         j:=j+1;   {incremento l'indice di colonna}
       end;
    i:=i+1    {incremento il numero di riga}
  end;

if different=true then writeln('non simmetrica') else writeln('simmetrica');

readln;
end.


Esercizio 7 - Shift di un vettore
Penso che rifarò l'esercizio creando una procedura per "shift-are" un vettore. cmq così funziona.

program Esercizio;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const
  n=15;
type
  Vettore=array[1..n] of char;
  Matrice=array[1..n,1..n] of char;
var
  M: matrice;
  v: vettore;
  i,j,k:Integer;
  x: char; {var appoggio}

begin
randomize;

writeln('Inserire ',n,'caratteri');

for i:=1 to n do v[i]:=char((random(122))+64);


for i:=1 to n do
   write(V[i], ' ');


   writeln;
   writeln;


{ readln(V[i]);}




for i:=1 to n do
  begin
  for j:=1 to n do
    M[i,j]:=V[j];
    {shifto il vettore}
      x:=V[n];
      for k:=n downto 2 do
      begin
      V[k]:=V[k-1];
      end;
      V[1]:=x;
      {vettore shiftato}
  end;



for i:=1 to n do
  begin
    for j:=1 to n do
    write(M[i,j],' ');

  writeln;
  end;

readln;
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.3204 secondi