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

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

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

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


Гость






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.


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


Профи
****

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

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


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

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


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


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


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

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

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


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


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


Профи
****

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

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


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

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

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


Гость






Ты вводишь матрицу n*n =4
а надо m*n =10
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






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

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


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

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

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


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


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


Гость






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


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


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

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

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


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


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


Профи
****

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

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


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

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

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


Я надеюсь хотябы это ты сама сможешь сделать ?
klem4
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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


Гость






У тебя какая версия Паскаля?
может это на const в списке формальных параметров такая реакция? тогда поставь var
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 ...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


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

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

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


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


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


Профи
****

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

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


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

объясни пожалуйста, что такое Row
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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

 





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