![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
18192123 |
![]()
Сообщение
#1
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
дан двумерный массив, вывести ту строку, сумма модулей элементов в которой максимальна.
использовать процедуры. я не соображу, как собственно вывести строку и еще... при компиляции появляется ошибка 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.
|
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
![]() Цитата 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 |
![]()
Сообщение
#3
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
![]() Цитата - из-за оформления цветом... компиляция проходит успешно, но после того, как я ввожу первую строку массива, сразу прога выдает значения суммы... |
klem4 |
![]()
Сообщение
#4
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Компиляция чего проходит успешно ? Приведенный тобой код НЕ компилируется. С исправлениями volvo - компилируется, ты используешь его ? Гадалка заболела !
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
18192123 |
![]()
Сообщение
#5
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
|
Гость |
![]()
Сообщение
#6
|
Гость ![]() |
Ты вводишь матрицу n*n =4
а надо m*n =10 |
klem4 |
![]()
Сообщение
#7
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Гость, ты о чем ?
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";'
|
Гость |
![]()
Сообщение
#8
|
Гость ![]() |
Цитата if (maxN = 0) or (maxN > 0) and (s > value) then begin |
klem4 |
![]()
Сообщение
#9
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Гость, онаже Pola А если подумать ?
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
Гость |
![]()
Сообщение
#10
|
Гость ![]() |
Цитата if s >= value then begin и саму строку вывести в конце проги можно Цитата дан двумерный массив, вывести ту строку, ... |
klem4 |
![]()
Сообщение
#11
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Более чем уверен, что имлось в виду вывести номер строки, что я сделал.
-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
18192123 |
![]()
Сообщение
#12
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
|
18192123 |
![]()
Сообщение
#13
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
Гость, ты о чем ? 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.
что-то твоя программа не компилируется, появляется сообщение, что в процедуре сумма пропущена скобка ???????????????? |
Гость |
![]()
Сообщение
#14
|
Гость ![]() |
У тебя какая версия Паскаля?
может это на const в списке формальных параметров такая реакция? тогда поставь var |
klem4 |
![]()
Сообщение
#15
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Цитата может это на const в списке формальных параметров такая реакция? тогда поставь var Const как раз ставится для того, чтобы исключить возможность изменения данных, но при этом передавать их не по значению, а по сссылке. Ну а если var поставить, то все наоброт будет, мы еще и увеличим эту возможность. Так что рпосто попрбуй убрать const (в заголовках подпрограмм) и все. -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
volvo |
![]()
Сообщение
#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;
Теперь понятнее? ![]() Цитата Const как раз ставится для того, чтобы исключить возможность изменения данных Ты уверен, что данные, переданные со спецификатором Const нельзя изменить? Я бы сказал, Const ставится как защита от СЛУЧАЙНОГО изменения данных ![]() |
klem4 |
![]()
Сообщение
#17
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
Sum исправил. По поводу const это и имел в виду
Цитата Const ставится как защита от СЛУЧАЙНОГО изменения данных неправильно выразился.-------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
18192123 |
![]()
Сообщение
#18
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
|
klem4 |
![]()
Сообщение
#19
|
![]() Perl. Just code it! ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 100 Пол: Мужской Реальное имя: Андрей Репутация: ![]() ![]() ![]() |
function Sum(const mx: TMx; row: Integer): Integer;
Функция возвращает значение суммы модулей элементов строки ROW матрицы MX. -------------------- perl -e 'print for (map{chr(hex)}("4861707079204E6577205965617221"=~/(.{2})/g)), "\n";'
|
18192123 |
![]()
Сообщение
#20
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 920 Пол: Женский Реальное имя: Марина Репутация: ![]() ![]() ![]() |
|
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 4:29 |