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

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

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

 
 Ответить  Открыть новую тему 
> модуль, не получается в главной прграмме
сообщение
Сообщение #1


Гость






Вот задача: написать модуль с введением, выведением массива и подсчетом суммы его элементов.Присоединяю к главной программе - ошибка переполнения стека(202) даже при массиве 2*2... Помогите, пожалуйста

Код
unit l11;
interface
const ms=5;ns=5;
type massiv=array[1..ms,1..ns] of real;
procedure input(var mas:massiv;m,n:byte);
procedure output(mas:massiv; m,n:byte);
function sum(mas:massiv; m,n:byte):real;
implementation
procedure input;
var i,j:byte;
begin
write('m=');
readln(m);
write('n=');
readln(n);
for i:=1 to m do
for j:=1 to n do
begin
write('mas[',i,',',j,']=');
readln(mas[i,j]);
end;
end;
procedure output;
var i,j:byte;
begin
for i:=1 to m do
begin
for j:=1 to n do
write(mas[i,j]:4);
writeln;
end;
end;
function sum;
var i,j:byte;
begin
sum:=0;
for i:=1 to m do
for j:=1 to n do
sum:=sum(mas,m,n)+mas[i,j];
end;
end.

извините, но теги что-то не работают...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Во-первых, теги работают, а насчет переполнения стека -
Код
function sum;
var i,j:byte;
begin
sum:=0;
for i:=1 to m do
for j:=1 to n do
sum:=sum(mas,m,n)+mas[i,j]; { < --- это что, рекурсия? }
end;

если это действительно рекурсия, то она неправильно оформлена. Но мне почему-то кажется, что требовалось сделать вот так:
Код
function sum;
var
 i,j:byte;
 s: real;
begin
 s:=0;
 for i:=1 to m do
   for j:=1 to n do
     s:=s+mas[i,j];
 sum := s
end;


P.S. Еще один вопрос:
В процедуру Input передаются значения m и n... Зачем же их вводить еще раз. Если же их нужно вводить в процедуре, то ее заголовок нужно изменить на вот такой:
Код
procedure input(var mas:massiv;var m,n:byte);

иначе введенные m и n просто не передадутся вызывающей программе...
 К началу страницы 
+ Ответить 

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

 





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