Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
mehanik7
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 31
#1

Определить, пересекаются ли парабола и прямая (найдите ошибку) - C++

28.01.2013, 16:38. Просмотров 1402. Ответов 12
Метки нет (Все метки)

Определите, пересекаются ли парабола у=cx2+dx+f и прямая y=ax+b. При
положительном ответе найти точки пересечения.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<iostream>
#include <math.h>
using namespace std;
int main ()
{
float a, b, c, d, f, x, x1, x2, y, y1, y2;
cin>>a>>b>>c>>d>>f;
for(x=-5; x<=5;x++)
 
y1=c*x*x+d*x+f;
y2=a*x+b;
if(y1==y2)
cout<<"x="<<x<<"     "<<"y1="<<y1<<"    "<<"y2="<<
else
cout<<"net peresecheniy"<<
getchar();
}

http://www.cyberforum.ru/cpp-beginners/thread770484.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2013, 16:38
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Определить, пересекаются ли парабола и прямая (найдите ошибку) (C++):

Определить, пересекаются ли прямая и окружность
Задана окружность с центром в точке О(x0,y0) и радиусом R0 и прямая y=ax+b....

Определить, пересекаются ли прямая и окружность
Задана окружность с центром в точке О(x0,y0) и радиусом R и прямая у=ах+b....

Определить, пересекаются ли прямая и окружность, и найти точки пересечения
задана окружность с центром в точке х(нулевое) и(нулевое) у и радиусом Р и...

Оператор условия. Определить, пересекаются ли заданные кривая и прямая
Определить пересекаются ли кривая y=ax³+bx²+cx+d и прямая y=fx+g. При...

Определить месторасположение точки в декартовой системе координат (найдите ошибку)
Задана точка M с координатами (x,y). Определить месторасположение этой точки в...

12
Lexp
5 / 5 / 1
Регистрация: 02.07.2012
Сообщений: 45
28.01.2013, 16:44 #2
Я так понимаю, пересечение ищется в отрезке x = [ -5, 5 ]?

Добавлено через 3 минуты
И в чем именно ошибка - не находит пересечение, или находит неверно?
0
mehanik7
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 31
28.01.2013, 16:49  [ТС] #3
пишет что ошибка в else

Добавлено через 1 минуту
нет отрезок вообще не трош нужно найти точки пересечения если они есть
0
phuongham
0 / 0 / 0
Регистрация: 25.01.2013
Сообщений: 2
28.01.2013, 16:50 #4
1. Там х принимает нетолько целые значения. В твой проге х лишь принадлежит [-5,5]. Что будет если пересечение находится вне этого интервала?
2. Парабол и линия пересекаются если уравнение cx^2 + dx + f = ax + b имеет хоть один корень. А это уравнение второго порядка и условие существования корней есть ... (сам узнаешь) . Попробуй по этому пути.
0
Lexp
5 / 5 / 1
Регистрация: 02.07.2012
Сообщений: 45
28.01.2013, 16:54 #5
C++
1
cout<<"x="<<x<<"     "<<"y1="<<y1<<"    "<<"y2="<<
Тут у тебя незавершенная строка. Это можно исправить, поставив в конце (после "<<") endl;
Анологично с:
C++
1
cout<<"net peresecheniy"<<
Добавлено через 1 минуту
Цитата Сообщение от phuongham Посмотреть сообщение
1. Там х принимает нетолько целые значения. В твой проге х лишь принадлежит [-5,5]. Что будет если пересечение находится вне этого интервала?
2. Парабол и линия пересекаются если уравнение cx^2 + dx + f = ax + b имеет хоть один корень. А это уравнение второго порядка и условие существования корней есть ... (сам узнаешь) . Попробуй по этому пути.
Он сказал это не трогать, типа так и надо
0
Kgfq
74 / 37 / 3
Регистрация: 23.09.2012
Сообщений: 408
28.01.2013, 17:09 #6
mehanik7, позвольте, а зачем решаете фором? Решайте аналитически (на бумаге) и вбивайте формулы
0
Catstail
Модератор
23531 / 11640 / 2034
Регистрация: 12.02.2012
Сообщений: 18,979
28.01.2013, 17:19 #7
Надо примерно так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<iostream>
#include <math.h>
using namespace std;
int main ()
{
  float a, b, c, d, f, x, x1, x2, y, y1, y2;
  cin>>a>>b>>c>>d>>f;
  for(x=-5; x<=5;x++)
   {
     y1=c*x*x+d*x+f;
     y2=a*x+b;
     if(fabs(y1-y2) <= 0.000001) 
        cout<<"x="<<x<<"     "<<"y1="<<y1<<"    "<<"y2=";
     else
        cout<<"net peresecheniy";
    }
getchar();
}
0
mehanik7
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 31
28.01.2013, 17:20  [ТС] #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<iostream>
#include <math.h>
using namespace std;
int main ()
{
float a, b, c, d, f, x, x1, x2, y, y1, y2;
cin>>a>>b>>c>>d>>f;
 
 
y1=c*x*x+d*x+f;
y2=a*x+b;
if(y1==y2)
else{
cout<<"x="<<x<<"     "<<"y1="<<y1<<"    "<<"y2="<<endl;
cout<<"net peresecheniy"<<endl;}
getchar();
}
паже самая хрень что с endl что без endl
0
Lexp
5 / 5 / 1
Регистрация: 02.07.2012
Сообщений: 45
28.01.2013, 17:23 #9
А тут сразу после if идет else
Надо что-то после if и перед else написать, а то неправославно
0
mehanik7
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 31
28.01.2013, 17:27  [ТС] #10
я все перепробовал все равно del c++ выдает в else ошибку

Добавлено через 3 минуты
например что написать
0
Lexp
5 / 5 / 1
Регистрация: 02.07.2012
Сообщений: 45
28.01.2013, 17:29 #11
То, что должно выполниться, если условие в if окажется верным

Добавлено через 1 минуту
В твоем случае эту строчку
Цитата Сообщение от mehanik7 Посмотреть сообщение
cout<<"x="<<x<<" * * "<<"y1="<<y1<<" * *"<<"y2="<<endl;
Надо перенести из else в if
0
phuongham
0 / 0 / 0
Регистрация: 25.01.2013
Сообщений: 2
28.01.2013, 19:23 #12
Цитата Сообщение от Lexp Посмотреть сообщение
Он сказал это не трогать, типа так и надо
Не знаю зачем так сложно. mehanik7 если можно то напиши все условия задачи.

Цитата Сообщение от Catstail Посмотреть сообщение
Надо примерно так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<iostream>
#include <math.h>
using namespace std;
int main ()
{
  float a, b, c, d, f, x, x1, x2, y, y1, y2;
  cin>>a>>b>>c>>d>>f;
  for(x=-5; x<=5;x++)
   {
     y1=c*x*x+d*x+f;
     y2=a*x+b;
     if(fabs(y1-y2) <= 0.000001) 
        cout<<"x="<<x<<"     "<<"y1="<<y1<<"    "<<"y2=";
     else
        cout<<"net peresecheniy";
    }
getchar();
}
Ну вот код почти правильный. Только на каждой шаге если y1 != y2 то нельзя сразу говорить что линии не пересекаются. А это только после выхода из цикла.
0
Catstail
Модератор
23531 / 11640 / 2034
Регистрация: 12.02.2012
Сообщений: 18,979
28.01.2013, 21:02 #13
Небрежно написанная программа. Вот рабочий вариант:

C++
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
#include <iostream.h>
#include <math.h>
 
int main ()
{
  float a, b, c, d, f, x, y1, y2;
  int k=0;
  cin>>a>>b>>c>>d>>f;
  for(x=-5; x<=5;x++)
   {
 
     y1=c*x*x+d*x+f;
     y2=a*x+b;
     
     if(fabs(y1-y2) <= 0.000001) 
     {
        cout << "x=" << x << "     " << "y1=" << y1 << "    " << "y2=" << y2 << endl;
        k=-1;
        break;
     }
 
   }
 
   if (k == 0)  cout<<"net peresecheniy" << endl;
    
    return 0;
}
1
28.01.2013, 21:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2013, 21:02
Привет! Вот еще темы с решениями:

Определить пересекаются прямоугольники
Даны два прямоугольника, стороны которых параллельны или перпендикулярны осям...

По координатам отрезков определить, пересекаются ли они
Добрый день! По координатам отрезков требуется определить пересекаются ли они....

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

Определить в скольких точках пересекаются окружности
Заданы две окружности: с центром в точке О1(x0, y0) и радиусом R0 и с центром в...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru