[Pascal] Problem z tablicami


(Hunterc92) #1

Witam mam do napisania taki oto program:

Napisz program, który dla wektora W zawierającego liczby całkowite odejmie od elementów wektora średnią arytmetyczną dla tego wektora. Wyświetlić elementy wektora.

Wszystko idzie dobrze aż do momentu gdy muszę zamienić wektor typu integer, żeby potem móc od niego odjąć średnią i go wyświetlić.

Kod programu:

program Project1_1;


{$APPTYPE CONSOLE}


uses

  System.SysUtils;


 type

tab1=array of integer;

tab2=array of real;


 var

 W:tab1;

 Y:tab2;

 n,S:integer;

 SS:real;


 procedure podaj_n ();

 begin

   Writeln ('Podaj jaką tablice zaalokować');

 end;


 procedure wczytaj_n(var n1:integer);

 begin

   Readln (n1);

   Writeln ('Podałeś: ', n);

 end;


procedure ust_dl_wektora (var t_1:tab1; var n1:integer);

begin

  SetLength(t_1, n1);

end;


procedure wcz_wektor (var t_1:tab1; var n1:integer);

var

i:integer;

begin

randomize;

  for i:=0 to n-1 do

  t_1[i]:= random (20);

end;


procedure wys_wektor (var t_1:tab1; var n1:integer);

var

i:integer;

begin

for i:=0 to n-1 do  

  Write (t_1[i], ' ');

end;


procedure sum (var t_1:tab1; var n1,suma:integer);

var

i:integer;

begin

  for i:=0 to n-1 do

    suma:=suma + t_1[i];

    Writeln;

    Writeln ('Suma wynosi: ', suma);

end;


procedure sr_a(var suma,n1:integer; var sr:real);

begin

  sr:=suma/n;

  Writeln;

  Writeln ('Średnia wynosi: ', sr:0:3);

end;


procedure przypisz (var t_1:tab1; var t_2:tab2; var n1:integer);

var

i,j:integer;

  begin

  for i:=0 to n-1 do

    for j:=0 to n-1 do

    begin

    t_2[j]:=t_1[i];

    write (t_2[j]:0:3, ' ');

    end;

  end;







  begin

podaj_n;

wczytaj_n(n);

ust_dl_wektora(W,n);

wcz_wektor(W,n);

wys_wektor(W,n);

sum(W,n,S);

sr_a(S,n,SS);

przypisz(W,Y,n);




Readln;

  end.

Windows wywala błąd po wpisaniu procedury przypisz :confused: Szczerze mówiąc nie mam pojęcia co z tym zrobić (jestem dość zielony w te klocki).

Jeżeli jakaś dobra dusza wie jak napisać procedurę przypisania tej tablicy W do Y będę naprawdę wdzięczny za pomoc.


(Pablo_Wawa) #2

Masz ustawianie długości wektora dla liczb całkowitych a nie masz dla liczb rzeczywistych (ja bym to zrobił w tej samej jednej procedurze).


(Hunterc92) #3

Pablo_Wawa dzięki, taki mały szczegół, a nie mogłem tego znaleźć :confused: