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

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

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

 
 Ответить  Открыть новую тему 
> Работа с двумерными массивами., процедуры
Jangle
сообщение 18.03.2007 19:56
Сообщение #1





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

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


Дан двумерный массив. Найти номера первых положительных элементов каждого столбца.


Uses Crt;
type
mas=array [1..100,1..100] of integer;
mass=array [1..100] of integer;
var
q,w:integer;k:byte;l:mas;S:mass;
procedure vvod(n,m:integer;var A:mas);
var
i,j:integer;
begin
ClrScr;
Randomize;
Textcolor(white);
for i:=1 to n do
begin
for j:=1 to m do
begin
A[i,j]:=Random(100);
A[i,j]:=A[i,j]-random(290);
end;
end;
Textcolor(green);
Writeln('MACCUB:');
For i:=1 to n do
For j:=1 to m do
begin
Write(a[i,j]:5,' ');
If j=m then WriteLn;
end;
end;
procedure obr (n,m:integer;a:mas; var b:mass);
var
i,j,x:integer;
begin
j:=1;
while j<=m do
begin
for i:=n downto 1 do
if A[i,j]>0 then x:=A[i,j];
b[j]:=X;
j:=j+1;x:=0;
end;
end;
procedure vivod (m:integer;b:mass);
var
j:integer;
begin
ClrScr;
for j:=1 to m do
if b[j]=0 then WriteLn('HET POLOZITELNYX B ',j,'Ctolbche')
else Writeln(j,'Ctolbech=',b[j]);
end;

begin
ClrScr;
Writeln('Pazmernost:');
Read(q,w);
Repeat
Writeln('1-BBOD');
Writeln('2-OBRAB');
Writeln('3-vivod');
Writeln('4-exit');
Writeln('vibor:');
Read(k);
case k of
1:vvod(q,w,l);
2:obr(q,w,l,S);
3:vivod(w,S);
4:halt;
end;
until k>4;
Readkey;
end.
ReadKey;
end.


Подскажете в чем ошибка... При выполнении задачи вылетает и пишет,что ошибка 202 (Переполнение стека). Как исправить? В чем ошибка? Заранее спасибо...

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


Человек
*****

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

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


Цитата(Jangle @ 18.03.2007 18:56) *


Неподскажете в чем ошибка... При выполнении задачи вылетает и пишет,что ошибка 202 (Переполнение стека). Как исправить? В чем ошибка? Заранее спасибо...

у меня все компилируется(FP)


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Артемий
сообщение 18.03.2007 20:02
Сообщение #3


Помощник капитана
****

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

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


у меня все компилируется(FP)

Compiler, а какой тут раздел,а? dry.gif Из простоты тема была создана?!


--------------------
Dum spiro spero!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Алена
сообщение 18.03.2007 20:03
Сообщение #4


Гость






procedure obr (n,m:integer; CONST a:mas; var b:mass);
 К началу страницы 
+ Ответить 
Jangle
сообщение 18.03.2007 20:09
Сообщение #5





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

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


Алена большое спасибо...работает... А все таки что эта Const обозначает?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Артемий
сообщение 18.03.2007 20:10
Сообщение #6


Помощник капитана
****

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

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


Константа, которую уже нельзя изменить в этой процедуре..


--------------------
Dum spiro spero!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Алена
сообщение 18.03.2007 20:11
Сообщение #7


Гость






У тебя матрица большая. При передаче без Const, происходит передача по значению, т.е. вся матрица копируется в стек, его размера не хватает, и получаешь Stack Overflow... Поэтому передавай по ссылке.
 К началу страницы 
+ Ответить 
Jangle
сообщение 18.03.2007 20:12
Сообщение #8





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

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


Отлично.... всем большое спасибо.. понял
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Алена
сообщение 18.03.2007 20:12
Сообщение #9


Гость






Цитата
Константа, которую уже нельзя изменить в этой процедуре..
Уверен?
 К началу страницы 
+ Ответить 
compiler
сообщение 18.03.2007 20:12
Сообщение #10


Человек
*****

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

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


Цитата(Артемий2 @ 18.03.2007 19:02) *

у меня все компилируется(FP)

Compiler, а какой тут раздел,а? dry.gif Из простоты тема была создана?!

я просто не понял проблемы...


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Артемий
сообщение 18.03.2007 20:15
Сообщение #11


Помощник капитана
****

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

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


Цитата
Уверен?

Ну а ты попробуй сделать это в процедуре.. smile.gif



--------------------
Dum spiro spero!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Алена
сообщение 18.03.2007 20:33
Сообщение #12


Гость






Цитата(Артемий2 @ 18.03.2007 19:15)
Ну а ты попробуй сделать это в процедуре.. smile.gif
Попробовала. Получилось.
type
mass = array[1 .. 10] of integer;

procedure x(const a: mass);
var
p: ^mass;
begin
p := @a;
p^[1] := 15;
end;

var
i: integer;
arr: mass;
begin
for i := 1 to 10 do arr[i] := i;
for i := 1 to 10 do
write(arr[i]:4);
writeln;

x(arr);
for i := 1 to 10 do
write(arr[i]:4);
writeln;
end.
Еще возражения будут?
 К началу страницы 
+ Ответить 
Артемий
сообщение 18.03.2007 22:09
Сообщение #13


Помощник капитана
****

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

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


Посты получше читай!Нужна была просто определение const и покажи мне ту книгу где показывается твой "образцовый" способ,который кстати барахлит на xp и не работает на vista! Зачем оно тебе надо изобретать велосипед и изменять ее?


--------------------
Dum spiro spero!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Алена
сообщение 18.03.2007 22:29
Сообщение #14


Гость






Артемий2
А грубить это что, принято, когда нет других аргументов?
Цитата
покажи мне ту книгу где показывается твой "образцовый" способ
А зачем книга? Я тебе СПОСОБ показала... Мало ли чего в книгах не пишется...

Цитата
который кстати барахлит на xp и не работает на vista!
Это чья проблема? Моя? Вообще-то у меня на XP это не барахлит никогда, а если это не работает на Vista, то и половина тех программ, что ты выложил на форуме работать тоже не будет...

Цитата
Зачем оно тебе надо изобретать велосипед и изменять ее?
Чтобы ты не говорил того, чего нет... Ты сказал, что ее нельзя изменить, да еще и ухмылялся, когда я сказала, что можно...
 К началу страницы 
+ Ответить 
compiler
сообщение 19.03.2007 20:58
Сообщение #15


Человек
*****

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

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


Цитата(Алена @ 18.03.2007 21:29) *
А грубить это что, принято, когда нет других аргументов?
А что ему остается делать, после выпада отступать тяжело... а нагрубить всегда можно... можна правда игнорировать ответы другой стороны...

и всеже ребята, давайте жить дружно!

Сообщение отредактировано: compiler - 19.03.2007 21:01


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Артемий
сообщение 19.03.2007 21:05
Сообщение #16


Помощник капитана
****

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

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


Да ладно,Стас, я сам виноват.. mega_chok.gif


--------------------
Dum spiro spero!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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