Děkuji za odpověď, ale až postupem mi došlo, že vlastně pole deklarovat nemusím (respektive, mám již vyřešeno vlastně obdobným postupem, který píšeš).
Jedná se o program do OOP, tedy jsem si vytvořil objekt, jehož součástí je i deklarace pole. Až nyní jsem ale zjistil, že nebudu do deklarace procedury vkládat datový typ pole, ale že tam vložím ony objekty.
Největší problém v OOP zatím mám s proměnnými a právě v deklaracích podprogramů. mohu ještě poprosit o kouknutí na tento program?
program vektory;
uses crt;
type
TVektor = object
rozmeru: integer;
hodnoty: array [1..10] of integer;
procedure zadej_hodnoty (x: integer);
procedure vypis_hodnoty;
procedure vektor1;
procedure secti;// (vektor1x, vektor2x: TVektor; var vektor_vysledekx: TVektor);
end;
TMenu = object
f: boolean; // Proměnná jež používáme v menu
procedure Zobraz; // Procedura, která vypíše volby menu na obrazovku
function volba: char; // Funkce, která načte uživatelskou volbu
procedure A1;
procedure A2;
procedure A3;
end;
var vektor1, vektor2, vektor_vysledek: TVektor;
Menu0: TMenu;
x, y, i, rozmeru: integer;
procedure TVektor.zadej_hodnoty (x: integer);
begin
for i := 1 to x do
begin
writeln ('Hodnota ',i,' :');
readln (x);
hodnoty [i] := x;
end;
end;
procedure TVektor.vypis_hodnoty;
begin
i := 1;
while hodnoty [i] > 0 do
begin
write (hodnoty [i],', ');
i := i+1;
end;
writeln ();
writeln ();
end;
procedure TVektor.secti;// (vektor1x, vektor2x: TVektor; var vektor_vysledekx: TVektor);
var i:integer;
begin
for i:= 1 to x do
begin
vektor_vysledekx.hodnoty [i] := vektor1x.hodnoty [i] + vektor2x.hodnoty [i];
end;
end;
procedure TMenu.Zobraz;
begin
clrscr;
writeln ('Zadali jste hodnoty vektoru:');
writeln ('Hodnoty vektoru 1:');
vektor1.vypis_hodnoty;
writeln ('Hodnoty vektoru 2:');
vektor2.vypis_hodnoty;
writeln ('Stisknete cislo, jez odpovida operaci se kterou chcete pracovat:');
gotoxy(20,11);writeln ('1 Nasobeni vektoru cislem k');
gotoxy(20,13);writeln ('2 Soucet dvou vektoru');
gotoxy(20,15);writeln ('3 Skalarni soucet dvou vektoru');
end;
function TMenu.volba: char;
begin
volba := readkey;
end;
procedure TMenu.A1;
begin
end;
procedure TMenu.A2;
begin
secti;// (vektor1.hodnoty, vektor2.hodnoty: TVektor; var vektor_vysledek.hodnoty: TVektor);
end;
procedure TMenu.A3;
begin
end;
begin
writeln ('Tento program bude provadet matematicke operace s vicerozmernymi vektory.');
writeln ('Je mozno pocitat s maximalne 10 rozmery. S kolika rozmery chcete pracovat?: ');
readln (x);
if x > 10 then
repeat
writeln ('Bohuzel, pocet rozmeru vektoru je omezeno na 10.');
writeln ('Zadejte prosim znovu, s kolikati vektory chcete pracovat? (Maximum je 10): ');
readln (x)
until x < 10;
rozmeru := x;
writeln ();
writeln ('Hodoty vektoru 1:');
vektor1.zadej_hodnoty (rozmeru);
writeln ();
writeln ('Hodoty vektoru 2:');
vektor2.zadej_hodnoty (rozmeru);
Menu0.f:= false;
repeat
Menu0.Zobraz;
case Menu0.volba of
'1': Menu0.A1;
'2': Menu0.A2;
'3': Menu0.A3;
end;
until Menu0.f;
readln ();
end.
Zadání je použít menu a počítat vektory (operace dle menu). Kdyby jsem věděl, že uživatel chce pracovat s 3mi rozměry, vytvořím jen proměnnou A, B a C a ty si už nějak mezi procedurami předám. Já ale nevím, kolik rozměrů bude chtít uživatel dělat, takže jsem se rozhodl pro to pole a hodnoty se ukládají. V programu mi tedy funguje zadání hodnot, ošetření ať jich není více než 10 (to se ale pak dá změnit třeba na 1000, podle toho jak velké pole si vytvořím) a funguje mi vypsání těch zadaných hodnot. Předpokládal jsem, že nyní už jen stačí vytvořit procedury na ty výpočty. Udělal jsem ted první na součet, ale stále mi to vyhazuje chyby a právě v deklaracích proměnných.
Vidí v tom přímo nějakou chybu? Já na tom dělám už týden po večerech a jsem v této fázi :o/