IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> вектор из столбца с наименьшим количеством положительных
сообщение
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


сформировать вектор, содержащий столбец матрицы с наименьшим количеством положительных элементов



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.



Сообщение отредактировано: 18192123 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Программа и процедура не могут называться одинаково... Меняй чье-то имя...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Цитата(volvo @ 19.11.2006 19:56) *

Программа и процедура не могут называться одинаково... Меняй чье-то имя...

ой, спасибо!
даже не подумала об этом!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Цитата(18192123 @ 19.11.2006 19:57) *

ой, спасибо!
даже не подумала об этом!

компилирую дальше, в итоге - несоответствие типов
????
наверно здесь намудрила:

s[j]:=s[j]+k;



 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Perl. Just code it!
******

Группа: Пользователи
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

Репутация: -  44  +


Марина, если честно твоя программа очень отдаленно напоминает то на что она должна быть похожа. Вот смотри, разбирай, будут вопросы задавай:

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;

var
M: TMatrix;
V: TVector;

begin
clrscr;

Input(M);
PrintMatrix(M);
CreateVector(M, V);
PrintVector(V);

readln;
end.



зы Только я сделал поиск столбца с максимальным содержанием отр. элементов, так что надо просто знак поменять
or (T < max) then begin


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Цитата(klem4 @ 19.11.2006 20:22) *

Марина, если честно твоя программа очень отдаленно напоминает то на что она должна быть похожа. Вот смотри, разбирай, будут вопросы задавай:



в своем варианте я попыталась посчитать в каждом столбце количество положительных, которые потом записываю в вектор размером в количество столбцов, после - найти в этом векторе минимальный элемент(его номер) и вывести столбец.

вроде, размышляю разумно, кажется напутала с записью в массив количества положительных из каждого столбца.

можно как-нибудь исправить мой вариант решения?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Вот твоя ошибка:

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;

 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Профи
****

Группа: Пользователи
Сообщений: 920
Пол: Женский
Реальное имя: Марина

Репутация: -  2  +


Цитата(volvo @ 27.11.2006 19:43) *

Вот твоя ошибка:



Большое спасибо! Теперь программа работает просто отлично!!! applause.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 23.04.2021 0:44
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name