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

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

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

 
 Ответить  Открыть новую тему 
> Задача на тему "Функции"
сообщение
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 81
Пол: Мужской

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


Условие:
Прикрепленное изображение

Немогу понять что такое норма и что обозначает та формула в конце, помогите разобраться плиз.

Вот пока что знаю набросал:
program wersdfg;
function f1(i,j:integer):integer;(p:array[1..m,1..n] of real):real;
begin
writeln('vvedite elementi matrici');
for i:=1 to n do begin
write(i:2, '-я строка: ');
for j:=1 to n do read(p[i,j]);
end;
const m=4;n=3;
var a,b,c:array[1..m,1..n] of real;i,j:integer;
begin
readln(f1(i,j,p));
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


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

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

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


на сколько я понял, речь идет об l-норме: Изображение

Требуется найти столбец с максимально суммой абсолютных величин значений.


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


Пионер
**

Группа: Пользователи
Сообщений: 81
Пол: Мужской

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


Цитата
Требуется найти столбец с максимально суммой абсолютных величин значений.

Абсолютных величин, это что такое?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Пионер
**

Группа: Пользователи
Сообщений: 81
Пол: Мужской

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


Как я понял тут должны быть 2 функции, первая производит ввод матрицы постолбцово, вторая находит столбец сума элементов которого больше всех. Так?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


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

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

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


Цитата
Абсолютных величин, это что такое?


Модуль числа ( |3| = |-3| = 3)


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


Пионер
**

Группа: Пользователи
Сообщений: 81
Пол: Мужской

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


Извиняюсь за случайно созданую ту тему, вот мой вариант решения но оно выводит совсем не то! помогите исправить ошибки пажалусто
program ersdf;
uses crt;
function max(s:real;i,j:integer):real;
var a:array[1..4,1..3] of real;
begin
for i:=1 to 4 do
begin
for j:=1 to 3 do
begin
s:=s+abs(a[i,j]);
max:=s;
end;
end;
end;
function mat(n,m:integer):real;
var i,j:integer; a:array[1..4,1..3] of real;
begin
writeln('vvod matrici:');
m:=3;
n:=4;
for i:=1 to n do
begin
for j:=1 to m do
begin
read(a[i,j]);
end;end;
end;
var a,b,c:real;
i,s,j:integer;s1,s2,s3,vmax:real;m,n:integer;
begin
clrscr;
a:=mat(m,n);
readln(a);
s1:=max(s,i,j);
b:=mat(m,n);
readln(b);
s2:=max(s,i,j);
c:=mat(m,n);
readln©;
s3:=max(s,i,j);
if s1>s2 then vmax:=s1 else vmax:=s2;
if s3>vmax then vmax:=s3;
writeln('max=',vmax);
end.

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


Пионер
**

Группа: Пользователи
Сообщений: 81
Пол: Мужской

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


Цитата(klem4 @ 20.05.2008 20:29) *

на сколько я понял, речь идет об l-норме: Изображение

Требуется найти столбец с максимально суммой абсолютных величин значений.

Как реализовать эту формулу в паскале?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Пионер
**

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

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


Ну я думаю так : Сначало поэлементно складываешь элементы одного столбца, все элементы делаешь по абсолютной величине, на паскале функция abs(a[i,j]);, потом элементы второго столбца так же складываешь, суммы запоминаешь в две переменные, и пусть сумма первого столбца будет называться max. ТОгда делаешь условие, если вторая переменная больше первой то max присваеиваешь вторую, а если нет то остается прежняя без изменений. Потом считаешь сумму 3 столбца, если сумма 3 больше max тогда max присваиваешь 3 и т.д. Потом так же делаешь со второй матрицей и так же заводишь переменную max1 и делаешь почти то же самое что и вначале я написал только уже с матрицами а не со столбцами. Просто присваиваешь max1 значение функции от первой матрице b значение второй матрице и сравниваешь, если b>max1 тогда b:=max1. И так же с третьей запоминаешь её в b и сравниваешь =) !

Цитата
Извиняюсь за случайно созданую ту тему, вот мой вариант решения но оно выводит совсем не то! помогите исправить ошибки пажалусто


Ну если клем4 был прав, то максимальный должен быть столбец в каждой матрице а у тебя считает полностью сумму всех эллементов

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


Пионер
**

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

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


Вот переделал функцию. Я писал тут, и не проверял, может где ошибся !. Но вроде правельно

function max(s:real;i,j:integer):real;
var a:array[1..4,1..3] of real;
max1:real;
begin
j:=1;
max1:=0;
repeat
for i:=1 to 4 do
s:=s+abs(a[i,j]);
if s>max1 then
max1:=s;
inc(j)
until j<>3 do
end;
max:=max1;
end;



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


Пионер
**

Группа: Пользователи
Сообщений: 81
Пол: Мужской

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


Блин немогу добиться чтобы матрица вводилась строго 4 на 3 вроде всё как положено прописываюmad.gif
function mat(n,m:integer):real;
var i,j:integer; a:array[1..4,1..3] of real;
begin
n:=4;
m:=3;
writeln('vvedite elementi matrici');
for i:=1 to n do begin
write(i:2, '-яya stroka : ');
for j:=1 to n do read(a[i,j]);
readln;
end;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Пионер
**

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

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


Ну во первых ты вводишь матрицу 4 на 4 а не 4 на 3

for i:=1 to n do
begin
write(i:2, '-яya stroka : ');
for j:=1 to n do
read(a[i,j]);

А надо
for i:=1 to n do
begin
write(i:2, '-яya stroka : ');
for j:=1 to m do
read(a[i,j]);

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


Пионер
**

Группа: Пользователи
Сообщений: 81
Пол: Мужской

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


function mat(n,m:integer):real;
var i,j:integer; a:array[1..4,1..3] of real;
begin
n:=4;
m:=3;
writeln('vvedite elementi matrici');
for i:=1 to n do begin
write(i:2, '-яya stroka : ');
for j:=1 to m do read(a[i,j]);
readln;
end;

Теперь после ввода четвёртой строки он просит ещё чёто ввести, только затем следующюю матрицу.

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


Пионер
**

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

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


У тебя в коде очень много неправильного. Щас сделаю правельно
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Пионер
**

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

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


Вот я написал. Однако почему то не вычисляется s1,s2,s3 если им передавать значение функции( наверно что то в функции напутал, но уже спать хочу не могу найти ошибку, попробуй завтра сам разобрать, может поймешь де я ошибся), а если без функции делать то все отлично вроде считается =). Короче подумай с функцией max- я что то в ней не так сделал( что то не так описал, либо в конце не правильно присвоил значение функции) =)
 Type matr=array[1..4,1..4] of real ;
function max(const a:matr):real;
var s,max1:real; i,j:integer;
begin
j:=1;
max1:=0;
repeat
begin
s:=0;
for i:=1 to 4 do
s:=s+abs(a[i,j]);
if s>max1 then
max1:=s;
inc(j)
end;
until j>3;
max:=max1;
end;

function mat(var a:matr):real;
var i,j:integer;
begin
writeln('vvod matrici:');
for i:=1 to 4 do
for j:=1 to 3 do
read(a[i,j]);
end;
var a,b,c:matr;
i,s,j:integer;
s1,s2,s3,max1,vmax:real;
m,n:integer;
begin
mat(a);
s1:=max(a);
mat(b);
s2:=max(b);
mat©;
s3:=max©;
if s1>s2 then
vmax:=s1
else
vmax:=s2;
if s3>vmax then
vmax:=s3;
writeln('max=',vmax);
end.



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

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

 





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