Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> нужно из множества прямых выбрать определенные 
:(
    Опции темы
Сашенька
Дата 21.4.2008, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



ребята у мя появилась проблема,в школе не было паскаля,а в универе надо написать прогу,пытаюсь написать,но никак не получаеться,просто не представляю что делать,но преподаватель без сдачи этой проги зачет не ставит(((((((((если можете то помогите,оч прошу)))))вот условие: Из множества прямых М, заданных коэффициентами уравнения Ах +Ву +С=0, выбрать прямые или совокупности прямых, обладающие определенными свойствами.
1. Прямая параллельна оси у
2. Все пары прямых, образующих при пересечении равные углы.
3. Две параллельные прямые, между которыми - наибольшее  расстояние
очень прошу помогите)))))))))) 


Это сообщение отредактировал(а) Сашенька - 21.4.2008, 21:06
PM MAIL   Вверх
bombaka
Дата 22.4.2008, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Сложная какая то у тебя программа..)
PM MAIL   Вверх
Сашенька
Дата 22.4.2008, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



я понимаю,что непростая,поэтому и обратилась за помощью!!!!!!!!!!!!!
PM MAIL   Вверх
Letov
Дата 25.4.2008, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Нужно определиться:
1. Как программа получит коэффициенты (файл, клавиатура, др.).
2. Как будут храниться коэффициенты.

Для первого случая:
Вроде, если коэффициент B будет равен 0, то эта прямая параллельны оси oY.
То есть если коэффициент B храниться в массиве b, то
Код

...
const M = ...;{количество прямых}
var i: integer;
      a, b, c: array[1..M] of real;{массивы с коэффициентами}
begin
{заполнение массивов}
...
for i:=1 to m do
   begin
      if (b[i]=0) and (c[i]<>0) and (a[i]<>0) {сравниваем коэффициенты}
         then writeln('Прямая под номером ', i, 'параллельна оси oY и не совпадает с ней')
         else writeln('Прямая под номером ', i, 'параллельна оси oY и совпадает с ней');{если коэффициент b = 0 и c = 0, то прямая совпадает с осью oY}
   end;
...
end.


Поправьте, если не прав.


--------------------
Не бывает плохих языков программирования. Бывают плохие программисты...

PM MAIL   Вверх
NEeHoT
Дата 27.4.2008, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



1.для математика нет разницы, совпадает прямая с осью или нет, можно ограничиться проверкой if B[i]=0 then ''прямая палаллельна у''

2. угол между прямыми равен arctg(X1)-arctg(X2).
если прямых 5 штук, то будет 4+3+2+1=10 пар прямых, проверяем равентво углов и все.
вся трудность - как все это вводить и выводить, надо уточнять требования к задаче

3.
Код

for i:=1 to M do
   for j:=
c[i]<>0
PM MAIL   Вверх
Dobermann
Дата 4.5.2008, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Это код проверки второго условия задачи:
Код

  for i:=1 to N {эта N - из твоего последнего кода - количество строк} do
    if (m[i,1] = m[i,3]) and (m[i+1,1] = m[i+1,3]) then
    begin
       writeln(m[i,1],' ',m[i,2],' ',m[i,3],' --- 1 совпад. прямая ');
       writeln(m[i+1,1],' ',m[i+1,2],' ',m[i+1,3],' --- 2 совпад. прямая ');
    end;

Этот код вставишь после того как проreadlnишь все введеные прямые...
Говорю тебе.....заканаешься вводить столько строк....

Это сообщение отредактировал(а) Dobermann - 4.5.2008, 21:52
PM   Вверх
Сашенька
Дата 4.5.2008, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



чет я не поняла,при чем тут это,во втором условии прямые у мя должны пересекать под одним углом,а это что такое???????по моему совсем не то((((((((((((
PM MAIL   Вверх
Dobermann
Дата 5.5.2008, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Прямым ведь что бы пересечься нужно находиться в разных строках!?

Цитата(NEeHoT @  27.4.2008,  14:32 Найти цитируемый пост)
2. угол между прямыми равен arctg(X1)-arctg(X2).

Здесь тебе этим не поможешь....
У тебя в строке - 3 точки (А,В,С - из уравнения) => у тебя декартова сис-ма координат => из этих 3-х коэффициентов ты построишь только точку, причем одну.
У меня в коде небольшая хитрость:
Цитата(Dobermann @  4.5.2008,  21:51 Найти цитируемый пост)

  for i:=1 to N {эта N - из твоего последнего кода - количествострок} do  
    if (m[i,1] = m[i,3]) and (m[i+1,1] = m[i+1,3]) then    
      begin   
        writeln(m[i,1],' ',m[i,2],' ',m[i,3],' --- 1 совпад. прямая ');   
        writeln(m[i+1,1],' ',m[i+1,2],' ',m[i+1,3],' --- 2 совпад. прямая ');   
      end;

Здесь если 1-я и 3-я точки разных строк(прямых) равны => с точки зрения матем-ки они полюбому пересекаются с равными углами...

user posted image

Т.е. хитрость в построении прямых из точек разных строк...
PM   Вверх
Filon
Дата 23.5.2008, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Полностью программа smile 
Ввод из файла input.txt, если надо, можно убрать.
Вывод на экран.
Код

{$N+}
var
  a, b, c: array [1..50] of integer;
  n, i, j, k, e, m1, m2: integer;
  max: extended;
  angles: array [1..50, 1..50] of integer;

function angle(num: integer): extended; { угол наклона прямой }
begin
  if a[num] = 0 then angle := pi / 2 else angle := arctan(b[num] / a[num]);
end;

function Parallel(num1, num2: integer): extended; { расстояние между прямыми }
begin
  if angle(num1) <> angle(num2) then Parallel := 0
    else Parallel := abs(c[num1] - c[num2]) / sqrt(sqr(a[num1]) + sqr(b[num1]));
end;

begin
  clrscr;
  assign(input, 'input.txt'); reset(input);
  readln(n);
  for i := 1 to n do readln(a[i], b[i], c[i]);

  {1}
  writeln('=========== 1 ============');
  for i := 1 to n do
    if b[i] = 0 then writeln('Линия ', i, 'параллельна оси OY);

  {2}
  writeln('=========== 2 ============');
  for i := 1 to n do
    for j := i + 1 to n do
      for k := 1 to n do
        for e := k + 1 to n do
          if not ((i = k) and (j = e)) then
            if abs((angle(i) - angle(j)) - (angle(k) - angle(e))) < 1e-9 then
              writeln('Пары прямых образуют равные углы при пересечении: ', i, ' ', j, ' и ', k, ' ', e);

  {3}
  writeln('=========== 3 ============');
  max := 0;
  for i := 1 to n do
    for j := 1 to n do
      if max < Parallel(i, j) then
      begin
        max := Parallel(i, j);
        m1 := i;
        m2 := j;
      end;

  if max < 1e-9 then writeln('Нет параллельных линий')
                else writeln('Наибольшее растояние между прямыми ', m1, ' и ', m2, ' и равно ', max:0:3);
end.


Это сообщение отредактировал(а) Filon - 23.5.2008, 18:39
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

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


 




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


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

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