Не получается найти последние f столбцы и вычислить их среднее арифметическое. Размерность матрицы k на l. Запутался в циклах!Последние f столбцы нашёл,а при вычислении среднего арифметического выдаётся неправильный ответ.
Автор: volvo 23.09.2006 22:26
Цитата
при вычислении среднего арифметического выдаётся неправильный ответ.
Код в студию...
Автор: forMator 23.09.2006 23:01
Код
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 23.09.2006 23:19
Ты меня, конечно извини, но здесь НИКАКОГО ответа не выдается, ибо что ты дальше делаешь - известно только тебе... Думай дальше, если не хочешь показывать весь код... Телепаты в отпуске.
Автор: forMator 23.09.2006 23:24
Ну хорошо,сможешь хотябы подсказать как найти среднее арифметическое последних столбцов в двумерном массиве..
Автор: klem4 24.09.2006 19:53
среднее арфиметическое последних 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 24.09.2006 20:51
Код
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.
Посидел помозговал, вот такое получилось.. Воспользовался советом, но не работает.. выдаёт не правильное среднее арифметическое..
Автор: мисс_граффити 25.09.2006 2:54
правильно. просто у тебя выводится на экран построчно. то есть последние 3 числа, которые ты видишь - это не последний столбец, а последняя строка.
вставь такой фрагмент:
Код
for i:=1 to k do begin for j:=1 to l do write(m[i,j], ' '); writeln; end;
и сам все увидишь
Автор: forMator 29.09.2006 19:53
Всем большое спасибо за помощь!!1
Автор: forMator 1.10.2006 21:27
А как сосчитать сумму первых p-элементов в двумерном массиве?
Автор: klem4 1.10.2006 22:14
Это зависит от того как ты собираешься идти по матрице. Сверху вниз справа на лево, а может быть по спирали из центра ? Гадать никто не собирается.
Автор: forMator 3.10.2006 20:24
Сверху вниз слева направо! Пробовал сам не получается!
Автор: volvo 3.10.2006 20:26
Цитата
Пробовал сам
Как пробовал, можно посмотреть?
Автор: klem4 3.10.2006 20:28
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 3.10.2006 20:29
Конечно!
Код
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 3.10.2006 21:13
А можно ещё вопрос??!! Нужно поменять местами элементы к-го и р-го столбцов! Написал! А элементы программа меняет только в последней строке!
Код
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.
Автор: мисс_граффити 3.10.2006 22:45
ты что-то с циклами и begin/end намудрил....
Код
c:=m[n,k]; m[n,k]:=m[n,p]; m[n,p]:=c;
это не внутри цикла. вот и выполняется один раз...
в первом у тебя неправильно пределы циклов расставлены. она сумму не p элементов посчитает, а p*n элементов.
Автор: klem4 3.10.2006 22:46
forMator, Смотри пост №14 я открыл ...
Автор: forMator 4.10.2006 1:17
Большое СПАСИБО!!
Автор: forMator 9.10.2006 22:08
Пытаюсь решить задачу!Опять же с двумерном массивом!! Дана квадратная матрица разм. 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 9.10.2006 22:13
{ Цикл по столбцам ... } 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;