Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [pascal] вычислить длины! Про 4 точки и их координаты 
V
    Опции темы
xF1x
Дата 11.9.2008, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 18.3.2008

Репутация: 0
Всего: 0



Всем доброго времени суток! Такая вот школьная задача! Даны 4 точки у каждой точки две координаты(x y)  (всего 8 входных параметров т.е x1 x2 x3 x4 y1 y2 y3 y4) по этим парметрам вычислить длины соединений координат(т.е длины сторон этой фигуры, и диагонали, вообще все длины) и найти наибольшую длину в этой фигуре! только что у нас прошел первый урок по ПОДПРОГРАММАМ! сказали нужно через них( procedure) если можно то как можно проще! очень нужно к субботе! ВСЕМ ЗАРАНЕЕ СПАСИБО!
PM MAIL   Вверх
xF1x
Дата 11.9.2008, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 18.3.2008

Репутация: 0
Всего: 0



Блин неужели никто не знает как это сделать?
PM MAIL   Вверх
mr.Anderson
Дата 11.9.2008, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 16
Всего: 128



xF1x, все достаточно просто.

1. Пишешь подпрограмму, принимающую четыре координаты - x1,y1 и x2,y2 - соответственно, координаты первой и второй точек, длину отрезка между которыми надо вычислить. Подпрограмма должна считать длину по известной формуле. Запишу, как это выглядит:
Код

function calcLength( x1, y1, x2, y2: Integer ): Real;
begin
 calcLength := sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2));
end;

2. Пишешь основную часть, где запрашиваешь все координаты у юзера и читаешь их в переменные. Вычисляешь с помощью вышесозданной функции все... ммм... 6 длин (четыре стороны и две диагонали). Затем сравниваешь шесть полученных значений, находишь максимальное, выводишь его.

Все.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
xF1x
Дата 11.9.2008, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 18.3.2008

Репутация: 0
Всего: 0



Во первых! я же сказал школьная задача, function calcLength вот этогго я в помине не знаю! я же знаю что для вас програмистов это раз плюнутьб, ну помогите школьнику!
PM MAIL   Вверх
mr.Anderson
Дата 11.9.2008, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 16
Всего: 128



xF1x, так, стоп, ты же сказал, что вы прошли подпрограммы? Function/procedure - это подпрограммы, просто функция возвращает какой-то результат, а процедура нет. Так в чем проблема?


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
xF1x
Дата 11.9.2008, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 18.3.2008

Репутация: 0
Всего: 0



у нас был первый урок подпрограмм! учитель дал попробовать сможем или нет! только слово procedure изучили! 1 ое домашнее задание
PM MAIL   Вверх
mr.Anderson
Дата 11.9.2008, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 16
Всего: 128



xF1x, через процедуры эту задачу решать глупо. Можно, конечно, извратиться с глобальными переменными. Знаешь, что это такое? Если знаешь, сейчас напишу.

Добавлено через 5 минут и 6 секунд
В общем, если извращаться с глобалками, то так. ЭТО ФРАГМЕНТ, не целая программа. Додумай, чего там не хватает.
Код

program YourProgram;
var
 lengths : Array [1..6] of Real; //сюда длины запихаем

procedure calcLength( x1, y1, x2, y2, lenPos: Integer ): Real;
begin
 if (lenPos<1 or lenPos>6) then
  return;
 
 lengths[lenPos] := sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2)); //считаем длину с номером lenPos (1-4 стороны, 5-6 диагонали, это к примеру)
end;

begin
 //тут сам допишешь, что нужно, т.е. ввод координат, подсчет шести длин, вычисление максимума
end.


Добавлено через 6 минут и 3 секунды
Вообще, мой совет: делай через function и блесни на уроке знаниями. Почитай, кстати, про function, чтобы понять, что делают функции и в чем отличие от процедур (хотя я об этом уже тут говорил). Меньше головной боли.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
xF1x
Дата 11.9.2008, 21:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 18.3.2008

Репутация: 0
Всего: 0



вообщем она сказала! вот  вам procedure!  и решайте! программа большая получается а глобальные переменные не слышал!  она сказала что по простому вводишь координаты потом формулул для длины отрезков по координатам и вывести наибольшую длину! все! это же ШКОЛА! я програмирование изучаю год от силы! ))
PM MAIL   Вверх
mr.Anderson
Дата 11.9.2008, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: 16
Всего: 128



xF1x, делай, как я говорю, хуже не будет, если ты знаешь больше, чем дали в школе. Если, конечно, действительно знаешь. Если про глобалки не слышал, тем более. Ссылочные аргументы процедуры знаешь? Если нет, то я не вижу другого метода делать через процедуры. Вообще, это как в Москву из Иванова через Владивосток ехать.


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
xF1x
Дата 11.9.2008, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 18.3.2008

Репутация: 0
Всего: 0



я плохо знаю програмирование! если бы знал хорошо сюда бы не обращался! поэтому и прошу мне помочь написать программу! она сказала делать через метки label ты об этом?
PM MAIL   Вверх
Rodman
Дата 11.9.2008, 22:33 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

Репутация: 26
Всего: 122



Цитата(xF1x @  11.9.2008,  21:42 Найти цитируемый пост)
метки label ты об этом? 

не вздумай метки делать
PM MAIL WWW Skype GTalk YIM MSN   Вверх
volvo877
Дата 11.9.2008, 22:40 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 34
Всего: 116



xF1x, понимаешь, в чем засада-то:
Цитата(xF1x @  11.9.2008,  21:18 Найти цитируемый пост)
она сказала что по простому вводишь координаты потом формулул для длины отрезков по координатам
- это функция, о чем тебе было сказано, поскольку формула тебе возвращает какой-то результат (что и делает функция).

А уж вот это:
Цитата(xF1x @  11.9.2008,  21:42 Найти цитируемый пост)
она сказала делать через метки label 
вообще ни в какие ворота... Ты Паскаль изучаешь? Процедуры вам объяснили? И после этого приплести еще метки??? Может нам попробовать еще через Goto переходить внутрь процедуры? Вообще-то нельзя, но может быть получится, раз очень надо...  smile 

Цитата(xF1x @  11.9.2008,  21:00 Найти цитируемый пост)
я же знаю что для вас програмистов это раз плюнуть
Угу... Особенно если на каждый ответ всплывают ограничения: функции не использовать, про глобальные переменные не слышал (можно подумать, ты про какие-то другие слышал. Чем же ты пользовался ДО того, как тебе рассказали про процедуры для хранения значений? Воздухом), вот теперь еще Goto обязательно. Круто...

Нужно с функциями (или с процедурами + Var параметры) - сделаем... А нет - так извиняй...

PM MAIL   Вверх
xF1x
Дата 11.9.2008, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 18.3.2008

Репутация: 0
Всего: 0



да да кстати и goto она тоже делала! )) ну уж помогите! а для вас это наоборот лучше! разнообразие! мне к субботе нужно!
PM MAIL   Вверх
orthrus
Дата 12.9.2008, 05:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 30.10.2007
Где: г. Усть-Илимск(Ир кутская обл.)

Репутация: 5
Всего: 16



Вот, вроде работает, пытался написать по школьному smile function не используется зато используется procedure:
Код

VAR
   lengths : Array [1..6] of Real;
   x1,x2,x3,x4:integer;
   y1,y2,y3,y4:integer;
   i,n:integer;
   max:real;

PROCEDURE CalcLength(in_x1,in_y1,in_x2,in_y2:integer;var length:real);
BEGIN
  length := sqrt((in_x1-in_x2)*(in_x1-in_x2) + (in_y1-in_y2)*(in_y1-in_y2));
END;

BEGIN
  WriteLn('Введите координаты точки 1:');
  Write('x1 = '); ReadLn(x1);
  Write('y1 = '); ReadLn(y1);
  WriteLn('Введите координаты точки 2:');
  Write('x2 = '); ReadLn(x2);
  Write('y2 = '); ReadLn(y2);
  WriteLn('Введите координаты точки 3:');
  Write('x3 = '); ReadLn(x3);
  Write('y3 = '); ReadLn(y3);
  WriteLn('Введите координаты точки 4:');
  Write('x4 = '); ReadLn(x4);
  Write('y4 = '); ReadLn(y4);
  CalcLength(x1,y1,x2,y2,lengths[1]);
  CalcLength(x2,y2,x3,y3,lengths[2]);
  CalcLength(x3,y3,x4,y4,lengths[3]);
  CalcLength(x4,y4,x1,y1,lengths[4]);
  CalcLength(x1,y1,x3,y3,lengths[5]);
  CalcLength(x2,y2,x4,y4,lengths[6]);
  max := lengths[1];
  n := 1;
  for i := 2 to 6 do
  begin
    if max<lengths[i] then
       begin
         max := lengths[i];
         n := i;
       end;
  end;

  WriteLn('максимально длинная прямая');
  case n of
   1 : begin
         WriteLn('Из точки 1 в точку 2');
         Write('её длинна равна'); WriteLn(lengths[1]);
       end;
   2 : begin
         WriteLn('Из точки 2 в точку 3');
         Write('её длинна равна'); WriteLn(lengths[2]);
       end;
   3 : begin
         WriteLn('Из точки 3 в точку 4');
         Write('её длинна равна'); WriteLn(lengths[3]);
       end;
   4 : begin
         WriteLn('Из точки 4 в точку 1');
         Write('её длинна равна'); WriteLn(lengths[4]);
       end;
   5 : begin
         WriteLn('Из точки 1 в точку 3');
         Write('её длинна равна'); WriteLn(lengths[5]);
       end;
   6 : begin
         WriteLn('Из точки 2 в точку 4');
         Write('её длинна равна'); WriteLn(lengths[6]);
       end;
  end;
  ReadLn;
END.



--------------------
У того, кто ничего не делает, всегда много помощников.© Л.Н. Толстой
user posted image
PM MAIL ICQ   Вверх
xF1x
Дата 12.9.2008, 06:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 130
Регистрация: 18.3.2008

Репутация: 0
Всего: 0



CalcLength не изучали и мы про 3 точки делали без массива! без массива нельзя?case n of тоже не изучали! а так все отлично!

Это сообщение отредактировал(а) xF1x - 12.9.2008, 15:24
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0954 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.