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:=1to n dofor j:=1to n do read (a[i,j]);
end;
procedure creat (a:matr; var s:vect);
var
i,j:1..n;
l,k:integer;
beginfor j:=1to n dobegin
s[j]:=0;
k:=0;
for i:=1to n dobeginif a[i]>0then k:=k+1;
s[j]:=s[j]+k;
end;
end;
min:=s[1];
l:=1;
for j:=2to n doif s[j]<min then l:=j;
for i:=1to 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;
beginfor i := 1to n dofor j := 1to n dobegin
write('mx[', i, ',', j, ']=');
readln(mx[i, j]);
end;
end;
procedure PrintMatrix(const mx: TMatrix); // печатаем матрицу
var
i, j: Integer;
begin
writeln;
for i := 1to n dobegin
writeln;
for j := 1to n do write(mx[i, j]:3);
end;
writeln;
end;
procedure PrintVector(const v: Tvector); // печатаем вектор
var
i: Integer;
begin
writeln;
for i := 1to 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 := 1to n doif (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 := 1to n dobegin
T := CountInCol(mx, i);
if (maxCol = 0) or (T > max) thenbegin
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 := 1to n do
v[i] := mx[i, Col];
end;
var
M: TMatrix;
V: TVector;
begin
clrscr;
Input(M);
PrintMatrix(M);
CreateVector(M, V);
PrintVector(V);
readln;
end.
зы Только я сделал поиск столбца с максимальным содержанием отр. элементов, так что надо просто знак поменять
or (T < max) thenbegin
--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
Марина, если честно твоя программа очень отдаленно напоминает то на что она должна быть похожа. Вот смотри, разбирай, будут вопросы задавай:
в своем варианте я попыталась посчитать в каждом столбце количество положительных, которые потом записываю в вектор размером в количество столбцов, после - найти в этом векторе минимальный элемент(его номер) и вывести столбец.
вроде, размышляю разумно, кажется напутала с записью в массив количества положительных из каждого столбца.
procedure creat (a:matr; var s:vect);
var
i,j:1..n;
min, l,k:integer; { MIN не был определен }beginfor j:=1to n dobegin
s[j]:=0;
k:=0;
for i:=1to n dobegin{ *** if a[i]>0 then k:=k+1;
s[j]:=s[j]+k; *** }if a[i, j] > 0then
s[j] := s[j] + 1;
end;
end;
min:=s[1];
l:=1;
for j:=2to n doif s[j]<min then l:=j;
for i:=1to n do writeln (a[i,l],' '); { <--- Нужно А вместо S }end;