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

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

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

 
 Ответить  Открыть новую тему 
> Работа с двумерными массивами., процедуры
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


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

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

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


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


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

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


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


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

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

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


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

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


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


Гость






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





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

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


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


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

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

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


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


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


Гость






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





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

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


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


Гость






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


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

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

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


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

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

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

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


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


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

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

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


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

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



--------------------
Dum spiro spero!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.
Еще возражения будут?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


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

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

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


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


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


Гость






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

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

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


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

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

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


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

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

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


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


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

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

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


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


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

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

 





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