Помощь - Поиск - Пользователи - Календарь
Полная версия: Двумерный Массив
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
forMator
Не получается найти последние f столбцы и вычислить их среднее арифметическое. Размерность матрицы k на l.
Запутался в циклах!Последние f столбцы нашёл,а при вычислении среднего арифметического выдаётся неправильный ответ.
volvo
Цитата
при вычислении среднего арифметического выдаётся неправильный ответ.
Код в студию...
forMator
Код
Program primer;
const k=4;
const l=5;
Var M:array[1..k,1..l] of integer;
i,j,f,c:integer;
begin
for i:=1 to k do
for j:=1 to l do
begin
write('M[',i,',',',j,']=');
readln(M[i,j]);
end;
write('vvedi f poslednix ctolbcov=');
for i:=1 to k do
for c:=f to l do

а дальше загнался, хотя в голове заранее продумывал, вроде получалось....
volvo
Ты меня, конечно извини, но здесь НИКАКОГО ответа не выдается, ибо что ты дальше делаешь - известно только тебе... Думай дальше, если не хочешь показывать весь код... Телепаты в отпуске.
forMator
Ну хорошо,сможешь хотябы подсказать как найти среднее арифметическое последних столбцов в двумерном массиве..
klem4
среднее арфиметическое последних f столбцов :

s := 0;
for i := 1 to RowCount do
for j := ColCount - f + 1 to ColCount do
s := s + x[i, j];
s := s / (RowCount * f);


RowCount - количество строк
ColCount - количество столбцов
forMator
Код

Program primer;
Const k=3;l=3;
Var M:array[1..k,1..l] of integer;
i,j,s,f:integer;  sum:real;
begin
for i:=1 to k do
for j:=1 to l do
begin
write('M[',i,',',j,']=');
readln(M[i,j]);
end;
write('vvedi f=');read(f);
s:=0;
for i:=1 to k do
for j:=l-f+1 to l do
s:=M[i,j]+s;
sum:=s/(k*f);
readln;
writeln('crednee ariphmeticheckoe=',sum:3:2);
readln;
end.

Посидел помозговал, вот такое получилось..
Воспользовался советом, но не работает..
выдаёт не правильное среднее арифметическое..
мисс_граффити
правильно.
просто у тебя выводится на экран построчно. то есть последние 3 числа, которые ты видишь - это не последний столбец, а последняя строка.

вставь такой фрагмент:

Код
for i:=1 to k do
begin
  for j:=1 to l do
    write(m[i,j], ' ');
  writeln;
end;

и сам все увидишь smile.gif
forMator
Всем большое спасибо за помощь!!1
forMator
А как сосчитать сумму первых p-элементов в двумерном массиве?
klem4
Это зависит от того как ты собираешься идти по матрице. Сверху вниз справа на лево, а может быть по спирали из центра ? Гадать никто не собирается.
forMator
Сверху вниз слева направо! Пробовал сам не получается!
volvo
Цитата
Пробовал сам
Как пробовал, можно посмотреть?
klem4
i := 1;
j := 1;
s := 0;

count := 0;

repeat

inc(count);

s := s + x[i, j];

if (j = m) then begin
inc(i);
j := 1;
end
else inc(j);

until (count = p) or (i > n);
forMator
Конечно!
Код

Program Primer;
Const n=3;m=4;
Var X:array[1..n,1..m] of integer;
i,j,p,s:integer;
begin
s:=0;
writeln('vvod matrici');
for i:=1 to n do
begin
for j:=1 to m do read(X[i,j]);
readln;
end;
write('vvedi pervie p elementi=');
read(p);
for i:=1 to n do
for j:=1 to p do
s:=s+X[i,j];
writeln('summa pervix p elementov=',s);
readln;
end.
forMator
А можно ещё вопрос??!!
Нужно поменять местами элементы к-го и р-го столбцов! Написал! А элементы программа меняет только в последней строке!
Код

Program ne;
Const n=3;l=4;
Var m:array[1..n,1..l] of integer;
i,j,k,p,c:integer;
begin
writeln('vvod matrici');
for i:=1 to n do
begin
for j:=1 to l do read(M[i,j]);
readln;
end;
write('vvedi k-i ctolbec=');
read(k);
write('vvedi p-i ctolbec=');
read(p);
c:=m[n,k];
m[n,k]:=m[n,p];
m[n,p]:=c;
for i:=1 to n do
begin
for j:=1 to l do
write(m[i,j],' ');
writeln;
readln;
end;
end.
мисс_граффити
ты что-то с циклами и begin/end намудрил....

Код
c:=m[n,k];
m[n,k]:=m[n,p];
m[n,p]:=c;

это не внутри цикла. вот и выполняется один раз...

в первом у тебя неправильно пределы циклов расставлены.
она сумму не p элементов посчитает, а p*n элементов.
klem4
forMator, Смотри пост №14 я открыл ...
forMator
Большое СПАСИБО!!
forMator
Пытаюсь решить задачу!Опять же с двумерном массивом!!
Дана квадратная матрица разм. n на n. Вычислить сумму элементов тех столбцов первый элемент которых равен 1!
Нужен ли здесь одномерный массив для вывода этих сумм? Или же можно обойтись и без него!!
И как можно посчитать сумму столбцов где 1, описывая через string что ли??? Я делаю через string, а TP мне сразу выдаёт ошибку!! Подскажите пожалуйста как найти эту сумму!!!!!
Код

Program lo;
Const n=5;
Var a:array[1..n,1..n] of integer;
b:array[1..n] of integer;
i,s:integer;j:string;
begin
writeln('vvod matrici');
for i:=1 to n do
begin
for j:=1 to n read(a[i,j]);
readln;
end;
if j='1' then begin
for i:=1 to n do begin
s:=0;
for i:=1 to n do begin s:=s+a[i,j];
end;
b[j]:=s;
end;
end;
volvo
{ Цикл по столбцам ... }
for j := 1 to n do
if arr[1, j] = 1 then begin
s := 0;
{ Цикл по строкам }
for i := 1 to n do s := s + arr[i, j];
writeln('Столбец №', j:2, ' ; сумма = ', s);
end;
forMator
СПАСИБО ОГРОМНОЕ!!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.