{ File: somvett2.pas }

{ Scopo: esempio di uso array unidimensionali
         parametri di tipo vettore }

program SommaVettori;
{ Calcola la somma di due vettori a 3 componenti.
  Utilizza procedure per la lettura e la stampa di un vettore. }

const
  DIM = 3;

type
  TipoIndice  = 1..DIM;
  TipoVettore = array [TipoIndice] of integer;

var
  v1, v2, somma : TipoVettore;


  procedure StampaVettore (vet: TipoVettore);
  { Stampa il vettore passato come parametro. }
  var
    i : 1..DIM;

  begin { StampaVettore }
    for i := 1 to DIM do
      writeln('Componente ', i, ' : ', vet[i]);
  end; { StampaVettore }


  procedure LeggiVettore (var vet: TipoVettore);
  { Restituisce un vettore le cui componenti vengono lette in input. }

  { N.B. NON e` possibile utilizzare una funzione perche` deve essere
         restituito un valore di tipo vettore, che non e` un tipo semplice. }
  var
    i : 1..DIM;

  begin { LeggiVettore }
    writeln('Immetti un vettore !');
    for i := 1 to DIM do
    begin
      write('Componente ', i, ' ? ');
      readln(vet[i])
    end;
  end; { LeggiVettore }


  procedure Somma2Vettori (vet1,vet2: TipoVettore;
                           var som: TipoVettore);
  var
    i : 1..DIM;

  begin { Somma2Vettori }
    for i := 1 to DIM do
      som[i] := vet1[i] + vet2[i];
  end; { Somma2Vettori }


begin { SommaVettori }
  LeggiVettore(v1);
  writeln;
  LeggiVettore(v2);
  writeln;

  Somma2Vettori(v1, v2, somma);

  writeln('Il vettore somma e'':');
  StampaVettore(somma)
end. { SommaVettori }