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

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

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

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





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

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


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


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

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

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


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


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
drsmoll
сообщение 6.11.2007 15:06
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 6.11.2007 15:24
Сообщение #4


Гость






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





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

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


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

А теперь попробуй ответить на простой вопрос: чему равны длины векторов X и Y? Без программы, просто, одним числом... Что ты подразумеваешь под "длиной вектора"? Количество элементов массива? Оно у тебя жестко задано еще на этапе компиляции и равно 10, чего же считать?
на сколько я помню, длина вектора равна Sqrt(Sqr(X1)+Sqr(X2)+...Sqr(Xn)), а количества элементов я взял чтобы увидеть, будет ли считать ваще....
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 7.11.2007 1:22
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 7.11.2007 1:41
Сообщение #7


Гость






Цитата(Lapp)
У тебя неверно считается сумма квадратов
У тебя тоже... Open Arrays всегда индексируются с 0...
 К началу страницы 
+ Ответить 
Lapp
сообщение 7.11.2007 1:50
Сообщение #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 
 К началу страницы 
+ Ответить 
volvo
сообщение 7.11.2007 9:11
Сообщение #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;

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


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

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

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


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

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

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

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


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





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

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


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

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

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

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

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

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

 



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