Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

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

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

28.01.2013, 16:38. Просмотров 1255. Ответов 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();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2013, 16:38     Определить, пересекаются ли парабола и прямая (найдите ошибку)
Посмотрите здесь:
C++ Определить, пересекаются ли парабола и прямая
Определить, пересекаются ли прямая и окружность C++
C++ Определить, пересекаются ли прямая и окружность
Определить, пересекаются ли прямая и окружность, и найти точки пересечения C++
C++ Оператор условия. Определить, пересекаются ли заданные кривая и прямая
Определить месторасположение точки в декартовой системе координат (найдите ошибку) C++
Определить, пересекаются ли контур прямоугольника и окружность C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Lexp
3 / 3 / 1
Регистрация: 02.07.2012
Сообщений: 45
28.01.2013, 16:44     Определить, пересекаются ли парабола и прямая (найдите ошибку) #2
Я так понимаю, пересечение ищется в отрезке x = [ -5, 5 ]?

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

Добавлено через 1 минуту
нет отрезок вообще не трош нужно найти точки пересечения если они есть
phuongham
Сообщений: n/a
28.01.2013, 16:50     Определить, пересекаются ли парабола и прямая (найдите ошибку) #4
1. Там х принимает нетолько целые значения. В твой проге х лишь принадлежит [-5,5]. Что будет если пересечение находится вне этого интервала?
2. Парабол и линия пересекаются если уравнение cx^2 + dx + f = ax + b имеет хоть один корень. А это уравнение второго порядка и условие существования корней есть ... (сам узнаешь) . Попробуй по этому пути.
Lexp
3 / 3 / 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 имеет хоть один корень. А это уравнение второго порядка и условие существования корней есть ... (сам узнаешь) . Попробуй по этому пути.
Он сказал это не трогать, типа так и надо
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
28.01.2013, 17:09     Определить, пересекаются ли парабола и прямая (найдите ошибку) #6
mehanik7, позвольте, а зачем решаете фором? Решайте аналитически (на бумаге) и вбивайте формулы
Catstail
Модератор
22443 / 10848 / 1766
Регистрация: 12.02.2012
Сообщений: 17,965
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();
}
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
Lexp
3 / 3 / 1
Регистрация: 02.07.2012
Сообщений: 45
28.01.2013, 17:23     Определить, пересекаются ли парабола и прямая (найдите ошибку) #9
А тут сразу после if идет else
Надо что-то после if и перед else написать, а то неправославно
mehanik7
0 / 0 / 0
Регистрация: 24.01.2013
Сообщений: 31
28.01.2013, 17:27  [ТС]     Определить, пересекаются ли парабола и прямая (найдите ошибку) #10
я все перепробовал все равно del c++ выдает в else ошибку

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

Добавлено через 1 минуту
В твоем случае эту строчку
Цитата Сообщение от mehanik7 Посмотреть сообщение
cout<<"x="<<x<<" * * "<<"y1="<<y1<<" * *"<<"y2="<<endl;
Надо перенести из else в if
phuongham
Сообщений: n/a
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 то нельзя сразу говорить что линии не пересекаются. А это только после выхода из цикла.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2013, 21:02     Определить, пересекаются ли парабола и прямая (найдите ошибку)
Еще ссылки по теме:
По координатам отрезков определить, пересекаются ли они C++
Определить в скольких точках пересекаются окружности C++
C++ Структуры (Создайте структуру Прямая с элементами x1, y1, x2, y2 – координаты двух точек, через которые проходит прямая)
Определить, пересекаются ли прямые, совпадают или параллельны C++
Определить, когда круг и квадрат касаются (пересекаются) C++

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

Или воспользуйтесь поиском по форуму:
Catstail
Модератор
22443 / 10848 / 1766
Регистрация: 12.02.2012
Сообщений: 17,965
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;
}
Yandex
Объявления
28.01.2013, 21:02     Определить, пересекаются ли парабола и прямая (найдите ошибку)
Ответ Создать тему
Опции темы

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