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

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

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

 
 Ответить  Открыть новую тему 
> матрица
лоен
сообщение 20.12.2007 19:37
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

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


по идеи этот код должен находить минимальную сумму столбцов.
помогите исправить.
Const
max=20;
type
mat:array[1..max,1..max] of integer;
var
i,j,x,y,s:integer;
min:longint;
procedure vvod_m;
Begin
Writeln('Введите мерность матрици');
Write('i='); readln(i);
Write('j='); readln(j);
Writeln('Введите массив:');
for x:=1 to i do
for y:=1 to j do
Begin
write('a[',x,',',y,']=');
readln(a[x,y]);
End;
End;
begin
vvod_m;
Min:=0;
for y:=1 to j do
begin
s:=0
for x:=1 to i do
begin
s:=s+A[x,y];
if s<min then min:=s;
end;
end;
writeln(‘Минимальная сумма=’, min);
readln;
end.



Добавлено через 15 мин.
не знаю еще как сумму задать. написал ноль. но это по умолчанию неверно.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Client
сообщение 20.12.2007 20:12
Сообщение #2


Профи
****

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

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


А ты где описываешь САМ массив (не как тип)?
Основная твоя ошибка здесь:
Min:=0; //А если все элементы положительные?
for y:=1 to j do
begin
s:=0
for x:=1 to i do
begin
s:=s+A[x,y];
if s<min then min:=s; //эту строчку надо вынести в верхний цикл
end;
Вот что получилось:
uses crt;
Const
max=20;
type
mat=array[1..max,1..max] of integer;
var
i,j,x,y,s:integer;
min:longint;
a:mat;
procedure vvod_m;
Begin
Writeln('size');
Write('i='); readln(i);
Write('j='); readln(j);
Writeln('matrix:');
for x:=1 to i do
for y:=1 to j do
Begin
write('a[',x,',',y,']=');
readln(a[x,y]);
End;
End;
begin
clrscr;
vvod_m;
for x:=1 to i do begin
for y:=1 to j do
WRITE(a[x,y]:5);
writeln
end;
Min:=0;
for x:=1 to j do
min:=min+a[x,1];

for y:=1 to j do
begin
s:=0;
for x:=1 to i do
s:=s+A[x,y];
if s<min then min:=s;
end;
writeln(' MIN= ', min);
readln;
end.

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


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

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


спасибо.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
лоен
сообщение 20.12.2007 23:49
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

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


проверил. почему-то не работает.
задаю матрицу вида:
1 2
3 4
5 6
говорит, что минимум 4 blink.gif
вроде ж ужо все красиво.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 21.12.2007 0:35
Сообщение #5


Гость






Индексы надо в порядок привести:
 Min:=0;
for x:=1 to i do { <--- Число строк - это I, а не J }
min:=min+a[x,1];
Хотя я бы вместо этого просто присвоил в Min какое-нибудь очень большое значение. Желательно - самое большое: MaxInt
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 20.07.2025 10:50
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"