program wskazana_kolumna;
uses crt;
type
tab2=array[1..10,1..10] of byte;
procedure info(var wybor:byte);
begin
clrscr;
writeln('Program generuje i wyswietla tabilce dwuwymiarowa.');
write('Ktorej kolumny chcesz obliczyc srednia: '); readln(wybor);
writeln;
end;
procedure generuj(var tab2x2:tab2);
var
i,j:byte;
begin
randomize;
for j:=1 to 10 do
begin
for i:=1 to 10 do
begin
tab2x2[i,j]:=random(10);
end;
end;
end;
procedure drukuj(tab2x2:tab2);
var
i,j:byte;
begin
for j:=1 to 10 do
begin
for i:=1 to 10 do
begin
write(tab2x2[i,j],' ');
end;
writeln;
end;
end;
procedure srednia_kolumny(tab2x2:tab2; wybor:byte ; var srednia:integer);
var
j:byte;
begin
j:=wybor;
end;
var
tab2x2:tab2;
wybor:byte;
begin
info(wybor);
generuj(tab2x2);
drukuj(tab2x2);
readln;
end.
wiem, że na początku trzeba wybrać której kolumny średnią chcę obliczyć, chciałem to zrobić w ten sposób, że na samym początku wybrać kolumnę przechować w zmiennej wybor i przez przypisane jej do kolumny później liczyć średnią, tylko nie wiem jak dalej to zrobić. plox help
PS. jaka była zależność aby liczyć średnią nad przekątną w tab 2 wymiarowych?
program wskazana_kolumna;
uses crt;
type
tab2=array[1..10,1..10] of byte;
procedure info(var wybor:byte);
begin
clrscr;
writeln('Program generuje i wyswietla tabilce dwuwymiarowa.');
write('Ktorej kolumny chcesz obliczyc srednia: '); readln(wybor);
writeln;
end;
procedure generuj(var tab2x2:tab2);
var
i,j:byte;
begin
randomize;
for j:=1 to 10 do
begin
for i:=1 to 10 do
begin
tab2x2[i,j]:=random(10);
end;
end;
end;
procedure drukuj(tab2x2:tab2);
var
i,j:byte;
begin
for j:=1 to 10 do
begin
for i:=1 to 10 do
begin
write(tab2x2[i,j],' ');
end;
writeln;
end;
end;
procedure srednia_kolumny(tab2x2:tab2; wybor:byte ; var srednia:real);
var
j,i:byte;
suma:integer;
begin
suma:=0;
srednia:=0;
for j:=wybor to 10 do
begin
for i:=1 to 10 do
begin
suma:=suma+tab2x2[i,wybor];
srednia:=suma/10;
end;
writeln;
end;
writeln('Srednia ',wybor,' kolumny wynosi ',srednia);
end;
var
tab2x2:tab2;
wybor:byte;
srednia:real;
begin
info(wybor);
generuj(tab2x2);
drukuj(tab2x2);
srednia_kolumny(tab2x2,wybor,srednia);
readln;
end.
sklepałem coś takiego tyle, że źle oblicza(chyba bo jak suma liczb ktora liczylem w pamieci wyszla 39 to powinna srednia wyjsc 3.9 a wyszla 3.87) ;/ gdzie zrobiłem błąd? (pewnie liczę średnią wiersza, ta?)
program wskazana_kolumna;
uses crt;
type
tab2=array[1..10,1..10] of byte;
procedure info(var wybor:byte);
begin
clrscr;
writeln('Program generuje i wyswietla tabilce dwuwymiarowa.');
write('Ktorej kolumny chcesz obliczyc srednia: '); readln(wybor);
writeln;
end;
procedure generuj(var tab2x2:tab2);
var
i,j:byte;
begin
randomize;
for j:=1 to 10 do
begin
for i:=1 to 10 do
begin
tab2x2[i,j]:=random(10);
end;
end;
end;
procedure drukuj(tab2x2:tab2);
var
i,j:byte;
begin
for j:=1 to 10 do
begin
for i:=1 to 10 do
begin
write(tab2x2[i,j],' ');
end;
writeln;
end;
end;
procedure srednia_kolumny(tab2x2:tab2; wybor:byte ; var srednia:real);
var
j,i:byte;
suma:integer;
begin
suma:=0;
for j:=1 to 10 do
begin
for i:=1 to 10 do
begin
suma:=suma+tab2x2[i,wybor];
end;
writeln;
end;
srednia:=0;
srednia:=suma/10;
writeln('Srednia ',wybor,' kolumny wynosi ',srednia);
end;
var
tab2x2:tab2;
wybor:byte;
srednia:real;
begin
info(wybor);
generuj(tab2x2);
drukuj(tab2x2);
srednia_kolumny(tab2x2,wybor,srednia);
readln;
end.
po kolei ;o
i tu mam problem wlasnie bo kurde gdzie bym nie wstawił tego wyboru to mi liczy średnią wiersza a nie kolumny
Błąd tkwi w procedurze srednia_kolumny. W tej procedurze kilkadziesiąt razy wewnątrz pętli zapisujesz pewną wartość do zmiennej srednia (a powinieneś tylko raz na końcu procedury)
Dla przykładu procedura obliczająca średnią wybranego wiersza:
procedure SredniaWiersza(tab2x2: tab2; wybor:byte; var srednia: real);
var i: byte;
suma: integer;
begin
suma:=0;
for i:=1 to 10 do suma:= suma+tab2x2[i, wybor];
srednia:= suma/10;
end;
A co wpisać, aby wyświetlała się średnia kolumny?
procedure SredniaKolumny(tab2x2: tab2; wybor:byte; var srednia: real);
var i: byte;
suma: integer;
begin
suma:=0;
for i:=1 to 10 do suma:= suma+tab2x2[?, ?]; (* Co wstawisz zamiast znaków "?" *)
srednia:= suma/10;
end;