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

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

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

 
 Ответить  Открыть новую тему 
> массивы и подпрограммы, Проще наверна не бывает
сообщение
Сообщение #1





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

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


Помогите плиз... Не могу по поиску найти
Заданы 2 вектора X=(X1,...,Xm) Y(Y1,...Yn). Сравнить их длины и напечатать большую из них. Длину вектора вычислять в подрпограмме.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


А у самого какие идеи? Сделал что-нить? начал?..
Покажи..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





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

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


Цитата(Lapp @ 6.11.2007 14:19) *

А у самого какие идеи? Сделал что-нить? начал?..
Покажи..
идей масса, вот тока бред выходит...
program zad;
uses crt;
var
i:integer;
Lx,Ly,L,K:real;
const
x:array[1..10] of integer = (1,2,3,4,5,6,7,8,9,10);
y:array[1..10] of integer = (1,1,1,1,1,1,1,1,1,1);
procedure S(a:array of integer);
begin
for i:=1 to 9 do
begin
L:= Sqr(a[i])+Sqr(a[i+1]);
end;
K:= Sqrt(L);
end;
begin
S(x);
S(y);
if Lx > Ly then writeln ('Big X',Lx)
else writeln ('Big Y',Ly);
end.


М
Используй теги, пожалуйста (выделить текст, вырать нужный тип в меню CODE)
-- Лопарь

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


Гость






А теперь попробуй ответить на простой вопрос: чему равны длины векторов X и Y? Без программы, просто, одним числом... Что ты подразумеваешь под "длиной вектора"? Количество элементов массива? Оно у тебя жестко задано еще на этапе компиляции и равно 10, чего же считать?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





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

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


Цитата(volvo @ 6.11.2007 16:24) *

А теперь попробуй ответить на простой вопрос: чему равны длины векторов X и Y? Без программы, просто, одним числом... Что ты подразумеваешь под "длиной вектора"? Количество элементов массива? Оно у тебя жестко задано еще на этапе компиляции и равно 10, чего же считать?
на сколько я помню, длина вектора равна Sqrt(Sqr(X1)+Sqr(X2)+...Sqr(Xn)), а количества элементов я взял чтобы увидеть, будет ли считать ваще....
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


У тебя неверно считается сумма квадратов. Надо так:
    begin
L:=0;
for i:=1 to 10 do
begin
L:= L + Sqr(a[i]);
end;
K:= Sqrt(L);
end;

Кроме того - как ты выводишь результат из процедуры?
Хотя бы так сделай:
S(x);
Lx := K;
S(y);
Ly := K;

- хотя я бы сделал функцию вместо процедуры.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Цитата(Lapp)
У тебя неверно считается сумма квадратов
У тебя тоже... Open Arrays всегда индексируются с 0...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(volvo @ 7.11.2007 1:41) *

У тебя тоже... Open Arrays всегда индексируются с 0...

Верно, недогляд. Спасибо, volvo.

drsmoll, сделай тип для вектора. Вот так:
type
tVector = array[1..10] of integer;
const
x: tVector = (1,2,3,4,5,6,7,8,9,10);
y: tVector = (1,1,1,1,1,1,1,1,1,1);

procedure S(a:tVector);




--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






А вот это напрасно... Судя по первому посту, автор хочет передавать в процедуру массивы разного размера. При жестко заданном типе это становится проблематичным... Гораздо лучше передавать массив (как открытый) и его размер:

procedure S(const a: array of integer; const Len: integer);
var
i: integer; { <-- Нельзя использовать глобальные переменные в качестве счетчика циклов }

begin
L:=0;
for i:=0 to pred(Len) do begin
L := L + Sqr(a[i]);
end;
K:= Sqrt(L);
end;

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


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(volvo @ 7.11.2007 9:11) *

А вот это напрасно... Судя по первому посту, автор хочет передавать в процедуру массивы разного размера.

Упс, эту возможность я действительно упустил.. Видимо, судил по чему-то другому smile.gif. Sorry, виноват.

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


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11





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

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


Цитата(Lapp @ 8.11.2007 4:46) *

Упс, эту возможность я действительно упустил.. Видимо, судил по чему-то другому smile.gif. Sorry, виноват.

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

исходя из условия, вероятнее всего необходимо ввести X1,X2,...Xm, замем Y1,Y2,...Yn с клавиатуры, в результате получить "Большая длина - Х=...."

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

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

 





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