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

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

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

 
 Ответить  Открыть новую тему 
> Двумерные массивы, Помогите, пожалуйста, найти ошибку
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

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

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


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


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

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

 





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