Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
2 / 1 / 2
Регистрация: 09.11.2017
Сообщений: 66

Для каждой пары точек найти коэффициенты прямой, которая проходит через две заданные точки

09.11.2017, 18:53. Показов 1670. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Program lab5;
type
   mas=array [1..6] of real;
var x,y,A,B:mas; i,n:integer;
begin
writeln('n='); read(n);
 
for i:=1  to n do
  begin
   write('x[', i, ']='); readln(x[i]);
    write('y[', i, ']='); readln(y[i]);
 end;
 for i:=n downto 1 do
 begin
   A[i]:=(y[i]-y[i+1])/(y[i]*x[i+1]-x[i]*y[i+1]);
   B[i]:=(x[i+1]-x[i])/((y[i]*x[i+1])-(x[i]*y[i+1]));
 end;
   for i:=n downto 1 do
  begin
   writeln('A[',i, ']=',A[i]:1:2);
   writeln('B[',i,']=',B[i]:1:2);
 end;
 
end.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.11.2017, 18:53
Ответы с готовыми решениями:

Составить уравнение прямой, проходящей через две заданные точки
Составить уравнение прямой, проходящей через 2 заданные точки.

Дано множество точек на плоскости. Сколько точек не принадлежит прямой, проходящей через две первые точки?
Доброго вечера! Подскажите, пожалуйста, по следующей задаче: Дано множество точек на плоскости. Сколько точек не принадлежит прямой,...

Верно ли, что для любой пары точек из множества все оставшиеся точки лежат по одну сторону от прямой, проведённой через эту пару
Даны действительные числа x1,....x15, y1,....y15, которые рассматриваются как координаты 15 точек на плоскости. Верно ли, что для каждой из...

4
1 / 1 / 0
Регистрация: 25.04.2016
Сообщений: 25
09.11.2017, 19:53
Возможно, ты задаешь n>6, хотя у тебя массив от 1 до 6

Добавлено через 18 минут
хотя, я бы еще исправил цикл
Pascal
1
2
3
4
5
for i:=n downto 1 do
 begin
   A[i]:=(y[i]-y[i+1])/(y[i]*x[i+1]-x[i]*y[i+1]);
   B[i]:=(x[i+1]-x[i])/((y[i]*x[i+1])-(x[i]*y[i+1]));
 end;
на
Pascal
1
2
3
4
5
for i:=n-1 downto 1 do
 begin
   A[i]:=(y[i]-y[i+1])/(y[i]*x[i+1]-x[i]*y[i+1]);
   B[i]:=(x[i+1]-x[i])/((y[i]*x[i+1])-(x[i]*y[i+1]));
 end;
так как ты берешь i+1
1
2 / 1 / 2
Регистрация: 09.11.2017
Сообщений: 66
09.11.2017, 20:02  [ТС]
Мой вариант задания:

На плоскости заданы точки Mi(xi, yi), i=1..n. Для каждой пары точек Mi(xi, yi) и Mi+1(xi+1, yi+1) найти коэффициенты Ai, Bi прямой Aix+Biy=1, которая проходит через эти две точки. Коэффициенты Ai, Bi вычислить по формулам:

https://www.cyberforum.ru/cgi-bin/latex.cgi?<br />
A_i=\frac{y_i-y_{i+1}}{y_ix_{i+1}-x_iy_{i+1}^{\,}},\qquad B_i=\frac{x_{i+1}-x_i}{y_ix_{i+1}-x_iy_{i+1}^{\,}}<br />

Входные данные: n=6,

i123456
xi0.50.91.41.54.15.1
yi4.12.10.83.14.28.3

Galbine, А[6], B[6] выводит что равно 0(
0
Модератор
10411 / 5698 / 3401
Регистрация: 17.08.2012
Сообщений: 17,350
10.11.2017, 00:59
Лучший ответ Сообщение было отмечено Дима1408 как решение

Решение

Дима1408, точек 6, тогда пар точек будет 5. Если написать программу именно для тех исходных данных, которые указаны в Вашем задании, то можно, например, так (ничего не вводится, все данные задаются в программе):
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
const n = 6;
type point = (x, y);
     mp = array[point, 1..n] of real;
     mk = array[1..n-1] of real;
const m: mp = ((0.5, 0.9, 1.4, 1.5, 4.1, 5.1),
               (4.1, 2.1, 0.8, 3.1, 4.2, 8.3));
var i: integer;
    z: real;
    a, b: mk;
begin
  writeln('Заданы точки:');
  for i := 1 to n do writeln('M[', i, '] = (', m[x, i] :13 :10, ', ', m[y, i] :13 :10, ')');
  writeln('Коэффициенты прямых:');
  for i := 1 to n - 1 do
    begin
      z := m[y, i] * m[x, i+1] - m[x, i] * m[y, i+1];
      a[i] := (m[y, i] - m[y, i+1]) / z;
      b[i] := (m[x, i+1] - m[x, i]) / z;
      writeln('A[', i, '] = ', a[i] :13 :10, ', B[', i, '] = ', b[i] :13 :10)
    end;
  readln
end.
Если сделать с ручным вводом данных, то программа должна быть достаточно универсальной, в первую очередь не обязательно, что n=6, иначе зачем вводить n. Тогда можно, например, так:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
const maxn = 12;
type point = (x, y);
     mp = array[point, 1..maxn] of real;
     mk = array[1..maxn-1] of real;
var i, n: integer;
    z: real;
    m: mp;
    a, b: mk;
begin
  writeln('Введите количество точек n в диапазоне [2..', maxn, ']:');
  repeat
    write('n = ');
    readln(n)
  until n in [2..maxn];
  writeln('Введите координаты точек:');
  for i := 1 to n do
    begin
      writeln('Точка ', i, ':');
      write('x = ');
      readln(m[x, i]);
      write('y = ');
      readln(m[y, i])
    end;
  writeln('Заданы точки:');
  for i := 1 to n do writeln('M[', i, '] = (', m[x, i] :13 :10, ', ', m[y, i] :13 :10, ')');
  writeln('Коэффициенты прямых:');
  for i := 1 to n - 1 do
    begin
      z := m[y, i] * m[x, i+1] - m[x, i] * m[y, i+1];
      a[i] := (m[y, i] - m[y, i+1]) / z;
      b[i] := (m[x, i+1] - m[x, i]) / z;
      writeln('A[', i, '] = ', a[i] :13 :10, ', B[', i, '] = ', b[i] :13 :10)
    end;
  readln
end.
Прогон программы для Ваших исходных данных
Code
Введите количество точек n в диапазоне [2..10]:
n = 6
Введите координаты точек:
Точка 1:
x = 0.5
y = 4.1
Точка 2:
x = 0.9
y = 2.1
Точка 3:
x = 1.4
y = 0.8
Точка 4:
x = 1.5
y = 3.1
Точка 5:
x = 4.1
y = 4.2
Точка 6:
x = 5.1
y = 8.3
Заданы точки:
M[1] = ( 0.5000000000,  4.1000000000)
M[2] = ( 0.9000000000,  2.1000000000)
M[3] = ( 1.4000000000,  0.8000000000)
M[4] = ( 1.5000000000,  3.1000000000)
M[5] = ( 4.1000000000,  4.2000000000)
M[6] = ( 5.1000000000,  8.3000000000)
Коэффициенты прямых:
A[1] =  0.7575757576, B[1] =  0.1515151515
A[2] =  0.5855855856, B[2] =  0.2252252252
A[3] =  0.7324840764, B[3] = -0.0318471338
A[4] = -0.1716068643, B[4] =  0.4056162246
A[5] =  0.3251387787, B[5] = -0.0793021412


Добавлено через 9 минут

Не по теме:

Да, чуть не забыл. Дима1408, правила форума прочитайте.
Фотографии текста запрещены. Официальные языки форума - русский и английский.
Для форматирования текста старайтесь использовать BB-коды, для большинства из них есть кнопки в шапке редактора сообщения.
Для написания формул старайтесь использовать редактор формул (ниже окна редактора сообщений, формулу копировать из нижнего поля после просмотра). Можете и не использовать редактор формул: разрешено выкладывать фотографии формул, но без обрамляющего их текста.



Добавлено через 1 час 38 минут
Так. Превила прочитаны не были, начались нарушение правил, да, Дима1408? Не нужно так поступать. На первый раз - устное предупреждение.

Не по теме:

Дима1408, ещё один клон этой темы - и я поступлю с Вами нехорошо. Ещё одно нарушение правил форума - и я перестану быть к Вам снисходительным.

Запрещено дублирование тем (создание тем с одинаковым вопросом в одном и том же подразделе форума) и кросспостинг (создание тем с одинаковыми вопросами в разных подразделах одного раздела форума).

Не нужно полагать, что, если Вы наплодите кучу тем, то Вам быстрее помогут. При таких Ваших действиях теряется контекст обсуждения. Оправдания типа того, что изначальная тема потеряла актуальность, и поэтому была создана новая тема, не принимаются: если в тему написано новое сообщение, тема автоматически оказывается наверху списка тем подраздела, поэтому создавать дублей для поднятия актуальности Вашего вопроса бессмысленно.

Дубли этой темы удалены.

Да, и по какой причине Вы проигнорировали моё требование по ознакомлению с правилами форума? Можете не отвечать, и так знаю: либо лень, либо отмазка про нехватку времени.


Теперь по существу Вашего вопроса. Что не так? Вас не устроило приведённое мной решение? Напишите, почему, и я постараюсь написать решение, которое Вам понравится.
1
2 / 1 / 2
Регистрация: 09.11.2017
Сообщений: 66
10.11.2017, 01:51  [ТС]
Спасибо за ответ, он очень хороший, извиняюсь за нарушение правил, больше не повторится!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.11.2017, 01:51
Помогаю со студенческими работами здесь

Написать программу, определяющую наклон прямой, проходящей через две заданные точки
пожалуйста помогите с составлением кода 5.Напишите программу, которая после получения значений координат двух точек на плоскости ...

Через две точки проведен отрезок прямой. Найти среди заданных трех точек такую, что также относится к этому отрезку
Собственно сама задача. Через две точки проведен отрезок прямой. Найти среди заданных трех точек такую, что также относится к этому...

Коэффициенты интерполяционного многочлена Лагранжа, проходящего через заданные точки
Найдите коэффициенты интерполяционного многочлена Лагранжа, проходящего через указанные точки (x1,y1)…(x7,y7) и нужно построить график в...

Найти прямую (в пространстве), которая проходит через точку и две прямые
Найти прямую, которая проходит через точку P(0,3,-2) и прямые {L}_{1}\ :\ \frac{x-2}{1}=\frac{y+1}{-3}=\frac{z}{1};\ {L}_{2}\ :\...

Вывести координаты точек кривой Безье для всех целочисленных x построенных через заданные точки
3: Программа ожидает ввода трёх пар целочисленных значений, представляющих собой точки в двумерном пространстве Формат: x1 y1 x2 y2...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK сделайте это, JDK, то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера . . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru