![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
мисс_граффити |
![]()
Сообщение
#21
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
это формальный параметр.
вместо него при вызоые подставляется фактический - i. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
18192123 |
![]()
Сообщение
#22
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
|
18192123 |
![]()
Сообщение
#23
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
большое спасибо! а у меня тут еще один вариант "родился", только, по-моему, где-то напутала с формальными и фактическими параметрами, т.к. программа не идет дальше вывода исходной матрицы...
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 - 15.11.2006 18:31 |
18192123 |
![]()
Сообщение
#24
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
а у меня тут еще один вариант "родился", только, по-моему, где-то напутала с формальными и фактическими параметрами, т.к. программа не идет дальше вывода исходной матрицы...
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 - 15.11.2006 23:32 |
18192123 |
![]()
Сообщение
#25
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
|
мисс_граффити |
![]()
Сообщение
#26
|
![]() просто человек ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 3 641 Пол: Женский Реальное имя: Юлия Репутация: ![]() ![]() ![]() |
послушай:
1. никто не обязан круглосуточно следить за твоими темами. когда будет время - все всё увидят. крики вроде "кто-нибудь меня слышит?" ничего, кроме раздражения, не вызывают. тем более с огромными скопированными кусками кода. 2. тебе дали рабочую программу? она тебе не нравится? тогда переделывай САМА. отлаживай. сравнивай с тем, что дали. procedure modyl(var a:matr; s:vect);
ты хочешь тут изменять только a, оставляя s неизменным? нет? вот и пиши, что это var. -------------------- Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения! |
18192123 |
![]()
Сообщение
#27
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
послушай: 1. никто не обязан круглосуточно следить за твоими темами. когда будет время - все всё увидят. крики вроде "кто-нибудь меня слышит?" ничего, кроме раздражения, не вызывают. тем более с огромными скопированными кусками кода. 2. тебе дали рабочую программу? она тебе не нравится? тогда переделывай САМА. отлаживай. сравнивай с тем, что дали. procedure modyl(var a:matr; s:vect);
ты хочешь тут изменять только a, оставляя s неизменным? нет? вот и пиши, что это var. вот я и переделываю! согласна, это я погорячилась. понимаю, что мне здесь никто ничего не должен теперь о задаче: я делаю, как ты говоришь, но теперь прога выдает элементы 2-й строки, причем всегда и только первые два ???????????? |
Lapp |
![]()
Сообщение
#28
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
Первое замечание: соблюдай отступы! после каждого 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.. ![]() -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
18192123 |
![]() ![]()
Сообщение
#29
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
Первое замечание: соблюдай отступы! после каждого 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.. ![]() кажется, я в очередной раз запуталась в процедурах 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;
![]() ![]() Сообщение отредактировано: 18192123 - 16.11.2006 19:37 |
18192123 |
![]()
Сообщение
#30
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
кажется, я в очередной раз запуталась в процедурах 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;
![]() ![]() теперь поняла в чем ошибка: вместо for j:=1 to m do writeln (s[l]);
нужно for j:=1 to m do write(a[L,j],' ');
|
Lapp |
![]()
Сообщение
#31
|
![]() Уникум ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: ![]() ![]() ![]() |
теперь поняла в чем ошибка Уррррааа! ![]() ![]() ![]() Ты делаешь громадные успехи, кроме шуток. Продолжай в том же духе! PS При ответе, пожалуйста, оставляй из цитаты сообщения, на которое отвечаешь, только то, что нужно, а остальное удаляй - вот как я сейчас сделал, видишь? -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
![]() ![]() |
![]() |
Текстовая версия | 18.07.2025 0:42 |