Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 13.03.2019
Сообщений: 3
1

Составить программу которая выдаёт одно из сообщений Да/Нет/На границе

13.03.2019, 15:58. Просмотров 1422. Ответов 31
Метки нет (Все метки)

Не могу понять почему и где ошибка, а так же как её исправить корректно http://ru.convdocs.org/pars_do... 64878c.png

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
    float x, y;
    setlocale(LC_ALL, "Russian");
    cout << "Введите x"; cin >> x;
    cout << "Введите y"; cin >> y;
    if ((x * x + y * y <= 625) && (x*x + y * y >= 225)); cout << "Да";
    if else cout << "Нет";
    if else cout << "На границе";
system("pause");
return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.03.2019, 15:58
Ответы с готовыми решениями:

Составить программу, которая выдает одно из сообщений «Да», «Нет», «На границе»
Помогите пожалуйста. Знаю, что для многих это легко, но я только начинающий. Надеюсь на вашу...

Дана точка на плоскости с координатами (х, у). Составить программу, которая выдает одно из сообщений "Да", "Нет", "На

Составить программу, которая выдает одно из сообщений «Да», «Нет», «На границе»
Помогите мне пожалуйста! Дана точка на плоскости с координатами (х, у). Составить программу,...

Составить программу, которая выдает одно из сообщений «Да», «Нет», «На границе»
Дана точка на плоскости с координатами (х, у). Составьте программу, которая выдает одно из...

31
1246 / 570 / 240
Регистрация: 11.10.2018
Сообщений: 3,157
13.03.2019, 16:07 2
Цитата Сообщение от Fmacbeth Посмотреть сообщение
C++
1
if((x * x + y * y <= 625) && (x*x + y * y >= 225)); cout << "Да";
- вот это вот так по-моему:
C++
1
if((x*x + y*y >= 625) || (x*x + y*y <= 225)); cout << "Да";
Знаки сравнения надо было поменять просто. И знак логики не "&&" - И, а "||" - ИЛИ, потому что точка не может быть в 2-ух местах одновременно.

Добавлено через 1 минуту
Цитата Сообщение от Fmacbeth Посмотреть сообщение
C++
1
if else cout << "Нет";
- тут либо новый if, либо else - продолжение старого if-a.

Добавлено через 35 секунд
В 12 строчке такая же ошибка.
1
Модератор
Эксперт CЭксперт С++
3862 / 3314 / 585
Регистрация: 07.10.2015
Сообщений: 6,821
13.03.2019, 16:09 3
Лучший ответ Сообщение было отмечено Fmacbeth как решение

Решение

Fmacbeth, например, так:
C++
1
2
3
4
5
6
7
8
9
    float x,y,d;
//...
    d = x * x + y * y; 
    if ((d < 625) && (d > 225))
       cout << "Да";
    else if ((d == 625) || (d == 225))
       cout << "На границе";
    else
       cout << "Нет";
1
1246 / 570 / 240
Регистрация: 11.10.2018
Сообщений: 3,157
13.03.2019, 16:09 4
Чтобы проверить: лежит ли точка на границе, нужно написать те же условия, только со строгим равно: == - в С++. А из верхнего условия == убрать.
0
Модератор
Эксперт CЭксперт С++
3862 / 3314 / 585
Регистрация: 07.10.2015
Сообщений: 6,821
13.03.2019, 16:11 5
Да - это внутри или вне кольца?

Добавлено через 1 минуту
Сделано да - внутри.
0
1246 / 570 / 240
Регистрация: 11.10.2018
Сообщений: 3,157
13.03.2019, 16:12 6
Цитата Сообщение от liv Посмотреть сообщение
C++
1
if((d < 625) && (d > 225))
- а как это так это? По-моему это неправильно. Liv, Вы проверяли свой код?
0
Модератор
Эксперт CЭксперт С++
3862 / 3314 / 585
Регистрация: 07.10.2015
Сообщений: 6,821
13.03.2019, 16:17 7
Поправочка: сравнение на равенство надо записать вот так
C++
1
if ((fabs(d - 625) < 0.0001) || (fabs(d -225) < 0.0001))
Добавлено через 1 минуту
FFPowerMan, это проверка на нахождение внутри кольца: квадрат радиуса меньшего большего и больше меньшего
1
1246 / 570 / 240
Регистрация: 11.10.2018
Сообщений: 3,157
13.03.2019, 16:19 8
Я вообще думал, что нужно найти лежит ли точка не внутри кольца, а снаружи большого кольца и внутри маленького. Так кто же прав?
0
Модератор
Эксперт CЭксперт С++
3862 / 3314 / 585
Регистрация: 07.10.2015
Сообщений: 6,821
13.03.2019, 16:21 9
FFPowerMan, если судить то этой строке изначального кода:
C++
1
if ((x * x + y * y <= 625) && (x*x + y * y >= 225)); cout << "Да";
то да - внутри кольца
0
0 / 0 / 0
Регистрация: 13.03.2019
Сообщений: 3
13.03.2019, 16:22  [ТС] 10
Действительно не записал чем являются Да/Нет(Да- внутри, Нет- за границей), извиняюсь. Спасибо большое за решение, помогло.
0
1246 / 570 / 240
Регистрация: 11.10.2018
Сообщений: 3,157
13.03.2019, 16:22 11
Ну я вообще-то хотел чтобы это автор сказал.
0
Модератор
Эксперт CЭксперт С++
3862 / 3314 / 585
Регистрация: 07.10.2015
Сообщений: 6,821
13.03.2019, 16:25 12
Fmacbeth, во-первых, учтите мою поправочку
Во-вторых, все-таки, да - внутри кольца или вне?

Добавлено через 2 минуты
Ну, разобрались...
0
0 / 0 / 0
Регистрация: 13.03.2019
Сообщений: 3
13.03.2019, 16:30  [ТС] 13
liv, а эта поправка чем конкретно важным отличается от вашего оригинала?
0
Модератор
Эксперт CЭксперт С++
3862 / 3314 / 585
Регистрация: 07.10.2015
Сообщений: 6,821
13.03.2019, 16:48 14
Fmacbeth, тем, что учитывает, что вещественные числа - приближенные.
Что их можно сравнивать на совпадение только с определенной погрешностью.
Например, получатся, к примеру числа 1.9999834 и 2.0
Проверка на равно даст "неравно". Хотя, фактически, должно быть равно.

Добавлено через 7 минут
Ближе к примеру будут числа: 224.99999652 и 225
0
4422 / 3013 / 1836
Регистрация: 18.12.2017
Сообщений: 9,470
13.03.2019, 16:51 15
Цитата Сообщение от liv Посмотреть сообщение
да - внутри кольца
Да - это заштрихованные (затемнённые) области.
Цитата Сообщение от liv Посмотреть сообщение
Проверка на равно даст "неравно".
здесь не такая ситуация. справа и слева будут одинаковые.

Fmacbeth,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include<iostream>
using namespace std;
 
int main()
{
    double x, y, R1=15., R2=25., z;
    
    cout << "Enter x,y:\n";
    cin >> x >> y;
    
    z=x*x+y*y;
    if (z<R1*R1 || z>R2*R2) cout << "YES\n";
    else if (z==R1*R1 || z==R2*R2) cout << "On the border\n";
    else cout << "NO\n";
system("pause");
return 0;
}
0
Модератор
Эксперт CЭксперт С++
3862 / 3314 / 585
Регистрация: 07.10.2015
Сообщений: 6,821
13.03.2019, 16:56 16
Ну или 225.00000123 и 225. Поэтому используется fabs

Добавлено через 2 минуты
Yetty, автор сказал : "(Да- внутри, Нет- за границей)". Ему виднее. Хотя он может оказаться и неправ

Добавлено через 2 минуты
Yetty, кстати, Вы так всегда сравниваете вещественные числа на совпадение?
0
4422 / 3013 / 1836
Регистрация: 18.12.2017
Сообщений: 9,470
13.03.2019, 17:05 17
liv, поверьте, что я в курсе как сравниваются вещественные но в данной ситуации применять eps излишне
0
Модератор
Эксперт CЭксперт С++
3862 / 3314 / 585
Регистрация: 07.10.2015
Сообщений: 6,821
13.03.2019, 17:22 18
Yetty, да верю я, верю.
Но, во-первых, они не будут одинаковые. Попробуйте код. У меня он дает false.
C++
1
2
3
4
    double r = 15.0;
    double  x = r*sin(M_PI/4);
    double d = x * x + x * x;
    bool b = (d == r*r);
А во-вторых, надо сразу учиться, как правильно работать с вещественными числами.
0
4422 / 3013 / 1836
Регистрация: 18.12.2017
Сообщений: 9,470
13.03.2019, 17:33 19

Не по теме:


Цитата Сообщение от liv Посмотреть сообщение
Попробуйте код
там совсем другая ситуация. мы говорим о коде задания.
liv, почему излишне - посмотрите на примере такого кода
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<iostream>
#include<iomanip>
using namespace std;
 
int main()
{
    double a=0.04, b=0.03, c=0.0025;
    cout << setprecision(30) << fixed << a << "\n";
    cout << setprecision(30) << fixed << b << "\n";
    
    cout << setprecision(30) << fixed << a*a + b*b << "\n";
    cout << setprecision(30) << fixed << c << "\n";
system("pause");
return 0;
}



Добавлено через 10 минут
Цитата Сообщение от liv Посмотреть сообщение
автор сказал : "(Да- внутри, Нет- за границей)
правильно сказал. ДА - внутри области, НЕТ - за границей области
0
Модератор
Эксперт CЭксперт С++
3862 / 3314 / 585
Регистрация: 07.10.2015
Сообщений: 6,821
13.03.2019, 17:43 20
Yetty, в примере даны точные числа, т.е. числа, которые составляют пропорцию 3:4:5
Не все же числа такие

Добавлено через 4 минуты
Кроме того, мое "во-вторых" никто не отменял
Надо сразу понимать суть вещественных чисел.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.03.2019, 17:43

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

Составить программу, которая выдает одно из сообщений «Да», «Нет», «На границе»
Дана точка на плоскости с координатами (х, у). Составить программу, которая выдает одно из...

Дана точка на плоскости с координатами (х, у). Составить программу, которая выдает одно из сообщений «Да», «Нет», «На границе»
Всем доброго времени суток. Нужна помощь. Дана точка на плоскости с координатами (х, у). Составить...

Дана точка на плоскости с координатами (х, у). Составить программу, которая выдает одно из сообщений «Да», «Нет», «На границе»
Дана точка на плоскости с координатами (х, у). Составить программу, которая выдает одно из...

Составить программу, которая выдает одно из сообщений «Да», «Нет», «На границе» в зависимости от того, где лежит точка
Доброго всем! Нужна помощь в данной задаче: Дана точка на плоскости с координатами (х, у)....

Дана точка на плоскости с координатами (х, у). Составить программу, которая выдает одно из сообщений «Да», «Нет», «На гр
Дана точка на плоскости с координатами (х, у). Составить программу, которая выдает одно из...

Дана точка на плоскости с координатами (х, у). Составить программу, которая выдает одно из сообщений «Да», «Нет»
Дана точка на плоскости с координатами (х, у). Составить программу, которая выдает одно из...


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

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

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