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

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

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

2 страниц V < 1 2  
 Ответить  Открыть новую тему 
> модули элементов в двумерном массиве
сообщение
Сообщение #21


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


это формальный параметр.
вместо него при вызоые подставляется фактический - i.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #22


Профи
****

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

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


Цитата(мисс_граффити @ 14.11.2006 22:41) *

это формальный параметр.
вместо него при вызоые подставляется фактический - i.

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


Профи
****

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

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


Цитата(18192123 @ 14.11.2006 22:55) *

большое спасибо!

а у меня тут еще один вариант "родился", только, по-моему, где-то напутала с формальными и фактическими параметрами, т.к. программа не идет дальше вывода исходной матрицы...


program zach_6;
uses crt;

const
n = 2;
m = 3;

type
matr= array [1..n, 1..m] of real;
vect=array[1..n] of real;
procedure Input(var a:matr);
var
i, j: Integer;
begin
for i := 1 to n do
for j := 1 to m do begin
write('a[', i, ',', j, ']=');
readln(a[i, j]);
end;
end;

procedure Print(const a:matr);
var
i, j: Integer;
begin
for i := 1 to n do begin
writeln;
for j := 1 to m do write(a[i, j] : 3);
end;
writeln;
end;
procedure modyl(var a:matr; s:vect);
var k,i:1..n;
j:1..m;
t:real;
begin
for i:=1 to n do s[k]:=0;
t:=0;
for k:=1 to n do
for i:=1 to n do begin
for j:=1 to m do begin
s[k]:=abs(a[i,j]);
t:=t+s[k];
end;
s[k]:=t;
end;
end;
procedure poisk (var s:vect;a:matr);
var
k,j:integer;
max:real;
begin
max:=s[1];
for k:=1 to n do
if max<s[k] then for j:=1 to n do writeln (a[k,j])
end;
Var
a:matr; k:integer; t:real;
s:vect;
Begin
clrscr;
input(a);
print(a);
modyl(a,s);
poisk(s,a);
readkey;
end.



Сообщение отредактировано: 18192123 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #24


Профи
****

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

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


Цитата(18192123 @ 15.11.2006 18:08) *

а у меня тут еще один вариант "родился", только, по-моему, где-то напутала с формальными и фактическими параметрами, т.к. программа не идет дальше вывода исходной матрицы...


program zach_6;
uses crt;

const
n = 2;
m = 3;

type
matr= array [1..n, 1..m] of real;
vect=array[1..n] of real;
procedure Input(var a:matr);
var
i, j: Integer;
begin
for i := 1 to n do
for j := 1 to m do begin
write('a[', i, ',', j, ']=');
readln(a[i, j]);
end;
end;

procedure Print(const a:matr);
var
i, j: Integer;
begin
for i := 1 to n do begin
writeln;
for j := 1 to m do write(a[i, j] : 3);
end;
writeln;
end;
procedure modyl(var a:matr; s:vect);
var k,i:1..n;
j:1..m;
t:real;
begin
for i:=1 to n do s[k]:=0;
t:=0;
for k:=1 to n do
for i:=1 to n do begin
for j:=1 to m do begin
s[k]:=abs(a[i,j]);
t:=t+s[k];
end;
s[k]:=t;
end;
end;
procedure poisk (var s:vect;a:matr);
var
k,j:integer;
max:real;
begin
max:=s[1];
for k:=1 to n do
if max<s[k] then for j:=1 to n do writeln (a[k,j])
end;
Var
a:matr; k:integer; t:real;
s:vect;
Begin
clrscr;
input(a);
print(a);
modyl(a,s);
poisk(s,a);
readkey;
end.



ну почему мне никто не хочет помочь!
неужели трудно объяснить, что я делаю не так! пожалуйста, объясните, в чем я ошибаюсь!!!

Сообщение отредактировано: 18192123 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #25


Профи
****

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

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


Цитата(18192123 @ 15.11.2006 22:46) *

ну почему мне никто не хочет помочь!
неужели трудно объяснить, что я делаю не так! пожалуйста, объясните, в чем я ошибаюсь!!!

кто-нибудь меня слышит? wacko.gif !help.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #26


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

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


послушай:
1. никто не обязан круглосуточно следить за твоими темами. когда будет время - все всё увидят. крики вроде "кто-нибудь меня слышит?" ничего, кроме раздражения, не вызывают. тем более с огромными скопированными кусками кода.
2. тебе дали рабочую программу? она тебе не нравится? тогда переделывай САМА. отлаживай. сравнивай с тем, что дали.

procedure modyl(var a:matr; s:vect);

ты хочешь тут изменять только a, оставляя s неизменным? нет? вот и пиши, что это var.


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #27


Профи
****

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

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


Цитата(мисс_граффити @ 15.11.2006 23:53) *

послушай:
1. никто не обязан круглосуточно следить за твоими темами. когда будет время - все всё увидят. крики вроде "кто-нибудь меня слышит?" ничего, кроме раздражения, не вызывают. тем более с огромными скопированными кусками кода.
2. тебе дали рабочую программу? она тебе не нравится? тогда переделывай САМА. отлаживай. сравнивай с тем, что дали.

procedure modyl(var a:matr; s:vect);

ты хочешь тут изменять только a, оставляя s неизменным? нет? вот и пиши, что это var.

вот я и переделываю!


Цитата(18192123 @ 16.11.2006 0:09) *


согласна, это я погорячилась. понимаю, что мне здесь никто ничего не должен

теперь о задаче:
я делаю, как ты говоришь, но теперь прога выдает элементы 2-й строки, причем всегда и только первые два
????????????

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #28


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Первое замечание: соблюдай отступы! после каждого begin текст идет на 2 позиции правее, после end - левее. Посмотри на мой код внизу - сразу видно, где задаются переменные, где тело процедуры, а где тело цикла, правда?

В процедуре Модыл (modyl) понаворочено..
1. В тройном цикле самый внешний (по k) - лишний.
2. Соответственно, сам параметр k - лишний. Все k заменить на i.
3. Тело цикла упростить так: s[i]:=s[i]+abs(a[i,j])
4. Тогда переменная t больше не нужна - убрать (она все равно неправильно использовалась)
5. Для краткости, убери цикл с занулением s[i] и сделай зануление во внешнем цикле двойного перед внутренним.

Должно получиться что-то вроде этого:
procedure modyl(var a:matr; var s:vect);
var
i:1..n;
j:1..m;
begin
for i:=1 to n do begin
s[k]:=0;
for j:=1 to m do t:=t+abs(a[i,j])
end
end;

В процедуре Поиск что-то совсем странное..
Ты печатаешь ВСЕ строчки, у которых s[k] больше чем s[1]. При этом первую строчка не напечатается, даже если s[1] больше всех остальных значений. Кроме того, ты перепутала n и m, поэтому выводятся не 3, а 2 элемента..
Как нужно делать:
1. Запоминаешь s[1] в max (это у тебя есть).
2. Заводишь еще один параметр (скажем, L) для номера искомой строки.
3. Кладешь в L единицу (номер первой строки).
4. Устраиваешь цикл по строчкам со 2-й (потому что первый элемент сравнивать с самим собой бессмысленно) до m.
5. В этом цикле, если s[k] больше чем max, то запоминаешь параметр цикла в L.
6. Выходишь из цикла и печатаешь строку с номером L.

Последнее замечание: почему ты в процедуре Модыл параметры цикла определяла диапазоном, а в процедуре Поиск аналогичные параметры у тебя integer? Типа при поиске проверка диапазона тебе не важна? Вот потому-то у тебя и получаются ошибки от путаницы m и n. Уж если делаешь диапазоном, делай везде. Когда перестанешь делать очевидные ошибки (или хотя бы научишься их искать) - тогда делай intrger.. smile.gif


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #29


Профи
****

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

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


Цитата(lapp @ 16.11.2006 5:28) *

Первое замечание: соблюдай отступы! после каждого begin текст идет на 2 позиции правее, после end - левее. Посмотри на мой код внизу - сразу видно, где задаются переменные, где тело процедуры, а где тело цикла, правда?

В процедуре Модыл (modyl) понаворочено..
1. В тройном цикле самый внешний (по k) - лишний.
2. Соответственно, сам параметр k - лишний. Все k заменить на i.
3. Тело цикла упростить так: s[i]:=s[i]+abs(a[i,j])
4. Тогда переменная t больше не нужна - убрать (она все равно неправильно использовалась)
5. Для краткости, убери цикл с занулением s[i] и сделай зануление во внешнем цикле двойного перед внутренним.

Должно получиться что-то вроде этого:
procedure modyl(var a:matr; var s:vect);
var
i:1..n;
j:1..m;
begin
for i:=1 to n do begin
s[k]:=0;
for j:=1 to m do t:=t+abs(a[i,j])
end
end;

В процедуре Поиск что-то совсем странное..
Ты печатаешь ВСЕ строчки, у которых s[k] больше чем s[1]. При этом первую строчка не напечатается, даже если s[1] больше всех остальных значений. Кроме того, ты перепутала n и m, поэтому выводятся не 3, а 2 элемента..
Как нужно делать:
1. Запоминаешь s[1] в max (это у тебя есть).
2. Заводишь еще один параметр (скажем, L) для номера искомой строки.
3. Кладешь в L единицу (номер первой строки).
4. Устраиваешь цикл по строчкам со 2-й (потому что первый элемент сравнивать с самим собой бессмысленно) до m.
5. В этом цикле, если s[k] больше чем max, то запоминаешь параметр цикла в L.
6. Выходишь из цикла и печатаешь строку с номером L.

Последнее замечание: почему ты в процедуре Модыл параметры цикла определяла диапазоном, а в процедуре Поиск аналогичные параметры у тебя integer? Типа при поиске проверка диапазона тебе не важна? Вот потому-то у тебя и получаются ошибки от путаницы m и n. Уж если делаешь диапазоном, делай везде. Когда перестанешь делать очевидные ошибки (или хотя бы научишься их искать) - тогда делай intrger.. smile.gif


кажется, я в очередной раз запуталась в процедурах modyl и poisk , программа мне выводит три строчки по 2 элемента, я наверное снова путаю m и n?
вот кусок для этих процедур:

procedure modyl(var a:matr; var s:vect);
var i:1..n;
j:1..m;
begin
for i:=1 to n do
begin
s[i]:=0;
for j:=1 to m do
begin
s[i]:=s[i]+abs(a[i,j]);
end;
end;
end;
procedure poisk (var s:vect;a:matr);
var
j:1..m;l,i:1..n;
max:integer;
begin
max:=s[1];
l:=1;
for i:=2 to n do
begin
if max<s[i] then l:=i;
end;
for j:=1 to m do writeln (s[l]);
end;



wink.gif ох! wacko.gif

Сообщение отредактировано: 18192123 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #30


Профи
****

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

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


Цитата(18192123 @ 16.11.2006 19:31) *

кажется, я в очередной раз запуталась в процедурах modyl и poisk , программа мне выводит три строчки по 2 элемента, я наверное снова путаю m и n?
вот кусок для этих процедур:

procedure modyl(var a:matr; var s:vect);
var i:1..n;
j:1..m;
begin
for i:=1 to n do
begin
s[i]:=0;
for j:=1 to m do
begin
s[i]:=s[i]+abs(a[i,j]);
end;
end;
end;
procedure poisk (var s:vect;a:matr);
var
j:1..m;l,i:1..n;
max:integer;
begin
max:=s[1];
l:=1;
for i:=2 to n do
begin
if max<s[i] then l:=i;
end;
for j:=1 to m do writeln (s[l]);
end;



wink.gif ох! wacko.gif

теперь поняла в чем ошибка: вместо
for    j:=1  to m  do writeln  (s[l]);

нужно
for j:=1 to m  do write(a[L,j],' ');


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #31


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(18192123 @ 16.11.2006 22:27) *

теперь поняла в чем ошибка

Уррррааа!
smile.gif smile.gif smile.gif
Ты делаешь громадные успехи, кроме шуток. Продолжай в том же духе!

PS
При ответе, пожалуйста, оставляй из цитаты сообщения, на которое отвечаешь, только то, что нужно, а остальное удаляй - вот как я сейчас сделал, видишь?


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





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