1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
вектор из столбца с наименьшим количеством положительных
сформировать вектор, содержащий столбец матрицы с наименьшим количеством положительных элементов
program creat1; uses crt; const n=3; type matr=array[1..n,1..n]of integer; vect=array[1..n]of integer; procedure input(var a:matr); var i,j:1..n; begin writeln ('vvedite elementi'); for i:=1 to n do for j:=1 to n do read (a[i,j]); end; procedure creat (a:matr; var s:vect); var i,j:1..n; l,k:integer; begin for j:=1 to n do begin s[j]:=0; k:=0; for i:=1 to n do begin if a[i]>0 then k:=k+1; s[j]:=s[j]+k; end; end; min:=s[1]; l:=1; for j:=2 to n do if s[j]<min then l:=j; for i:=1 to n do writeln (s[i,l],' '); end; var a;matr; s:vect; begin clrscr; input(a); creat(a,s); readkey; end.
Марина, если честно твоя программа очень отдаленно напоминает то на что она должна быть похожа. Вот смотри, разбирай, будут вопросы задавай:
uses crt;
const n = 3;
type TVector = array [1..n] of Integer; TMatrix = array [1..n] of TVector;
procedure Input(var mx: TMatrix); // заполняем матрицу var i, j: Integer; begin for i := 1 to n do for j := 1 to n do begin write('mx[', i, ',', j, ']='); readln(mx[i, j]); end; end;
procedure PrintMatrix(const mx: TMatrix); // печатаем матрицу var i, j: Integer; begin writeln; for i := 1 to n do begin writeln; for j := 1 to n do write(mx[i, j]:3); end; writeln; end;
procedure PrintVector(const v: Tvector); // печатаем вектор var i: Integer; begin writeln; for i := 1 to n do write(v[i]:3); end;
// ф-я возвращает кол-во отрицательных элментов в столбце с номером Col function CountInCol(const mx: TMatrix; col: Integer): Integer; var i, count: Integer; begin count := 0; for i := 1 to n do if (mx[i, col] < 0) then inc(count); CountInCol := count; end;
// ф-я возвращает номер столбца матрицы, количство отрицательных элементов в котором максимально function GetMaxCol(const mx: TMatrix): Integer; var maxCol, i, max, T: Integer; begin maxCol := 0; for i := 1 to n do begin T := CountInCol(mx, i); if (maxCol = 0) or (T > max) then begin max := T; maxCol := i; end; end; GetMaxCol := maxCol; end;
// заполняем вектор по заданию procedure CreateVector(const mx: TMatrix; var v: TVector); var i, Col: Integer; begin Col := GetMaxCol(mx); for i := 1 to n do v[i] := mx[i, Col]; end;
Марина, если честно твоя программа очень отдаленно напоминает то на что она должна быть похожа. Вот смотри, разбирай, будут вопросы задавай:
в своем варианте я попыталась посчитать в каждом столбце количество положительных, которые потом записываю в вектор размером в количество столбцов, после - найти в этом векторе минимальный элемент(его номер) и вывести столбец.
вроде, размышляю разумно, кажется напутала с записью в массив количества положительных из каждого столбца.
procedure creat (a:matr; var s:vect); var i,j:1..n; min, l,k:integer; { MIN не был определен } begin for j:=1 to n do begin s[j]:=0; k:=0; for i:=1 to n do begin { *** if a[i]>0 then k:=k+1; s[j]:=s[j]+k; *** } if a[i, j] > 0 then s[j] := s[j] + 1; end; end;
min:=s[1]; l:=1; for j:=2 to n do if s[j]<min then l:=j; for i:=1 to n do writeln (a[i,l],' '); { <--- Нужно А вместо S } end;