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

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

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

 
 Ответить  Открыть новую тему 
> Двумерные массивы, Помогите, пожалуйста, найти ошибку
Eichhorn
сообщение 6.01.2011 9:19
Сообщение #1


Пионер
**

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

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


Есть задача:
Дана матрица M*N Найти номер её столбца с наименьшим произведением элементов и вывести данный номер, а также значение наименьшего произведения.
Вот текст моей программы:

const
n=4;
m=6;
var
a:array[1..m, 1..n] of integer;
i,j,p,min,f:integer;

begin
p:=1;
randomize;
for i:=1 to m do
begin
for j:=1 to n do
begin
a[i,j]:=random(51);
writeln(a[i,j]);
end;
writeln;
readln;
end;

for i:=1 to m do
begin
for j:=1 to n do
min:=p*a[1,j];
begin
p:=p*a[i,j];
if p<min then
begin
min:=p;
f:=i;
end;
end;


end;
writeln(min);
writeln(f);
readln;
end.



У меня программа выводит все элементы массива, а дальше ломается. Сначала без readln она сразу ломалась, но когда я его поставила, стала выводить массив. А вот дальше я никак не могу найти ошибку, почему не выводит остальное...


--------------------
Жизнь похожа на собачью упряжку: если не идёшь впереди, то всё время видишь одно и то же...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 6.01.2011 9:45
Сообщение #2


Гость






Банальное переполнение. Вот, сравни с тем, что было у тебя:


const
m = 6; { строки }
n = 4; { столбцы }

var
a: array[1..m, 1..n] of integer;
i, j, f: integer;
p, min: longint; { Так избегаем переполнения }

begin
randomize;

{ генерируем матрицу - как обычно: }
for i := 1 to m do { строки }
begin
for j:=1 to n do { элементы строк }
begin
a[i,j] := random(51);
write(a[i,j] : 3);
end;
writeln;
end;

min := maxlongint;
f := 0;

for j := 1 to n do { J => идем по столбцам !!! }
begin
p := 1;
for i := 1 to m do { I => а внутри - по строкам, т.е., по элементам столбцов }
p := p * a[i, j];

writeln('p[', j, '] = ', p); { <--- Только для теста, можешь убрать... }

if p < min then
begin
min := p; f := j;
end;
end;

writeln(min);
writeln(f);
readln;
end.
 К началу страницы 
+ Ответить 
Eichhorn
сообщение 6.01.2011 10:04
Сообщение #3


Пионер
**

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

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


Спасибо огромное!!! Я про longint даже не знала...


--------------------
Жизнь похожа на собачью упряжку: если не идёшь впереди, то всё время видишь одно и то же...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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