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

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

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

> модули элементов в двумерном массиве
18192123
сообщение 13.11.2006 16:42
Сообщение #1


Профи
****

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

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


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


я не соображу, как собственно вывести строку

и еще... при компиляции появляется ошибка 36 ( отсутствие begin), не знаю, где его пропустила


uses crt;
const n=2;
m=5;
type vect=array[1..n] of real;
matr=array[1..m] of vect;
procedure input(var a:matr);
var
i,j:byte;
begin
writeln ('vvedite elementi dvymernogo massiva');
for i:=1 to n do
for j:=1 to n do
read (a[i,j]);
end;
procedure stroka(a:matr; var:s,s1);
i,j:byte;
max:real;
begin
for i:=1 to n do
for j:=1 to m do
begin
s:=0;
s:=s+abs(a[1,j];
max:=s;
s1:=s1+abs(a[2,j]);
if max<s1 then
writeln ('nyshai stroka:2');
else writeln ('nysnai stroka :1');
writeln ('s=',s:4:1);
writeln ('s1=',s1:4:1); end;
end;
var
a:matr;
begin
input(a);
storka(a,s,s1);
readkey;
end.

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
Ответов(1 - 19)
volvo
сообщение 13.11.2006 16:47
Сообщение #2


Гость






blink.gif У тебя не только Begin пропущен... Внимательно смотри на исправления (программа только проходит компиляцию, о правильности работы сказать ничего пока не могу)...
Цитата
uses crt;
const n=2;
m=5;
type vect=array[1..n] of real;
matr=array[1..m] of vect;
procedure input(var a:matr);
var
i,j:byte;
begin
writeln ('vvedite elementi dvymernogo massiva');
for i:=1 to n do
for j:=1 to n do
read (a[i,j]);
end;
procedure stroka(a:matr; var s,s1: real);
var
i,j:byte;
max:real;
begin
for i:=1 to n do
for j:=1 to m do
begin
s:=0;
s:=s+abs(a[1,j]);
max:=s;
s1:=s1+abs(a[2,j]);
if max<s1 then
writeln ('nyshai stroka:2'){;}
else writeln ('nysnai stroka :1');
writeln ('s=',s:4:1);
writeln ('s1=',s1:4:1); end;
end;

var
a:matr;
s, s1: real;
begin
input(a);
stroka(a,s,s1);
readkey;
end.


Цитата - из-за оформления цветом...
 К началу страницы 
+ Ответить 
18192123
сообщение 13.11.2006 20:41
Сообщение #3


Профи
****

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

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


Цитата(volvo @ 13.11.2006 16:47) *

blink.gif У тебя не только Begin пропущен... Внимательно смотри на исправления (программа только проходит компиляцию, о правильности работы сказать ничего пока не могу)...
Цитата - из-за оформления цветом...


компиляция проходит успешно, но после того, как я ввожу первую строку массива, сразу прога выдает
значения суммы...


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 13.11.2006 20:46
Сообщение #4


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Компиляция чего проходит успешно ? Приведенный тобой код НЕ компилируется. С исправлениями volvo - компилируется, ты используешь его ? Гадалка заболела !


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
18192123
сообщение 13.11.2006 21:35
Сообщение #5


Профи
****

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

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


Цитата(klem4 @ 13.11.2006 20:46) *

Компиляция чего проходит успешно ? Приведенный тобой код НЕ компилируется. С исправлениями volvo - компилируется, ты используешь его ? Гадалка заболела !

да, я использую вариант volvo
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 13.11.2006 21:53
Сообщение #6


Гость






Ты вводишь матрицу n*n =4
а надо m*n =10
 К началу страницы 
+ Ответить 
klem4
сообщение 13.11.2006 21:56
Сообщение #7


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Гость, ты о чем ?

18192123, вот смотри, разбирайся

uses crt;

const
n = 2;
m = 3;

type
Tmx = array [1..n, 1..m] of Integer;

procedure Input(var mx: TMx);
var
i, j: Integer;
begin
for i := 1 to n do
for j := 1 to m do begin
write('mx[', i, ',', j, ']=');
readln(mx[i, j]);
end;
end;

procedure Print(const mx: TMx);
var
i, j: Integer;
begin
for i := 1 to n do begin
writeln;
for j := 1 to m do write(mx[i, j] : 3);
end;
writeln;
end;

function Sum(const mx: TMx; row: Integer): Integer;
var
i, S: Integer;
begin
S := 0;
for i := 1 to m do
S := S + abs(mx[row, i]);
Sum := S;
end;

procedure Main(const mx: TMx; var maxN, value: Integer);
var
i, s: Integer;
begin

maxN := 0;

for i := 1 to n do begin
s := Sum(mx, i);
if (maxN = 0) or (s > value) then begin
maxN := i;
value := s;
end;
end;

end;

var

Mx: TMx;
maxN, value: Integer;
begin
clrscr;
Input(Mx);
Print(Mx);
Main(Mx, maxN, value);
writeln('Row = ', maxN, ' value = ', value);
readln;
end.



--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 13.11.2006 22:04
Сообщение #8


Гость






Цитата
if (maxN = 0) or (maxN > 0) and (s > value) then begin

 К началу страницы 
+ Ответить 
klem4
сообщение 13.11.2006 22:07
Сообщение #9


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Гость, онаже Pola А если подумать ?


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 13.11.2006 22:17
Сообщение #10


Гость






Цитата
if s >= value then begin


и саму строку вывести в конце проги можно
Цитата
дан двумерный массив, вывести ту строку, ...
 К началу страницы 
+ Ответить 
klem4
сообщение 13.11.2006 22:19
Сообщение #11


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Более чем уверен, что имлось в виду вывести номер строки, что я сделал.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
18192123
сообщение 13.11.2006 23:14
Сообщение #12


Профи
****

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

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


Цитата(klem4 @ 13.11.2006 22:19) *

Более чем уверен, что имлось в виду вывести номер строки, что я сделал.

в условии сказано: вывести строку[size=2]


Я надеюсь хотябы это ты сама сможешь сделать ?
klem4
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
18192123
сообщение 13.11.2006 23:29
Сообщение #13


Профи
****

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

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


Цитата(klem4 @ 13.11.2006 21:56) *

Гость, ты о чем ?

18192123, вот смотри, разбирайся

uses crt;

const
n = 2;
m = 3;

type
Tmx = array [1..n, 1..m] of Integer;

procedure Input(var mx: TMx);
var
i, j: Integer;
begin
for i := 1 to n do
for j := 1 to m do begin
write('mx[', i, ',', j, ']=');
readln(mx[i, j]);
end;
end;

procedure Print(const mx: TMx);
var
i, j: Integer;
begin
for i := 1 to n do begin
writeln;
for j := 1 to m do write(mx[i, j] : 3);
end;
writeln;
end;

function Sum(const mx: TMx; row: Integer): Integer;
var
i: Integer;
begin
Sum := 0;
for i := 1 to m do
Sum := Sum + abs(mx[row, i]);
end;

procedure Main(const mx: TMx; var maxN, value: Integer);
var
i, s: Integer;
begin

maxN := 0;

for i := 1 to n do begin
s := Sum(mx, i);
if (maxN = 0) or (s > value) then begin
maxN := i;
value := s;
end;
end;

end;

var

Mx: TMx;
maxN, value: Integer;
begin
clrscr;
Input(Mx);
Print(Mx);
Main(Mx, maxN, value);
writeln('Row = ', maxN, ' value = ', value);
readln;
end.



что-то твоя программа не компилируется, появляется сообщение, что в процедуре сумма пропущена скобка

????????????????
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Гость
сообщение 14.11.2006 9:24
Сообщение #14


Гость






У тебя какая версия Паскаля?
может это на const в списке формальных параметров такая реакция? тогда поставь var
 К началу страницы 
+ Ответить 
klem4
сообщение 14.11.2006 10:06
Сообщение #15


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Цитата

может это на const в списке формальных параметров такая реакция? тогда поставь var


Const как раз ставится для того, чтобы исключить возможность изменения данных, но при этом передавать их не по значению, а по сссылке. Ну а если var поставить, то все наоброт будет, мы еще и увеличим эту возможность.

Так что рпосто попрбуй убрать const (в заголовках подпрограмм) и все.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 14.11.2006 11:29
Сообщение #16


Гость






klem4:

function Sum(const mx: TMx; row: Integer): Integer;
var
i: Integer;
begin
Sum := 0;
for i := 1 to m do
Sum {Это - обращение к результату функции, здесь проблем нет } :=
Sum {А Это? С точки зрения компилятора - рекурсия, только тогда
не хватает скобки, ибо ожидаются параметры}
+
abs(mx[row, i]);
end;

Теперь понятнее? wink.gif

Цитата
Const как раз ставится для того, чтобы исключить возможность изменения данных
Ты уверен, что данные, переданные со спецификатором Const нельзя изменить? Я бы сказал, Const ставится как защита от СЛУЧАЙНОГО изменения данных smile.gif ...
 К началу страницы 
+ Ответить 
klem4
сообщение 14.11.2006 11:38
Сообщение #17


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


Sum исправил. По поводу const это и имел в виду
Цитата
Const ставится как защита от СЛУЧАЙНОГО изменения данных
неправильно выразился.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
18192123
сообщение 14.11.2006 15:52
Сообщение #18


Профи
****

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

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


Цитата(klem4 @ 13.11.2006 21:56) *
18192123, вот смотри, разбирайся

объясни пожалуйста, что такое Row
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
klem4
сообщение 14.11.2006 18:34
Сообщение #19


Perl. Just code it!
******

Группа: Модераторы
Сообщений: 4 100
Пол: Мужской
Реальное имя: Андрей

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


 function Sum(const mx: TMx; row: Integer): Integer;


Функция возвращает значение суммы модулей элементов строки ROW матрицы MX.


--------------------
perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
18192123
сообщение 14.11.2006 22:34
Сообщение #20


Профи
****

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

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


Цитата(klem4 @ 14.11.2006 18:34) *

 function Sum(const mx: TMx; row: Integer): Integer;


Функция возвращает значение суммы модулей элементов строки ROW матрицы MX.

а откуда мы берем этот параметр (ROW), мы ведь его не где не задаем
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 



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