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

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

13.03.2019, 15:58. Показов 3214. Ответов 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)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.03.2019, 15:58
Ответы с готовыми решениями:

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

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

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

31
 Аватар для FFPowerMan
2156 / 1236 / 508
Регистрация: 11.10.2018
Сообщений: 6,257
13.03.2019, 16:07
Цитата Сообщение от 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Эксперт С++
 Аватар для liv
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
13.03.2019, 16:09
Лучший ответ Сообщение было отмечено 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
 Аватар для FFPowerMan
2156 / 1236 / 508
Регистрация: 11.10.2018
Сообщений: 6,257
13.03.2019, 16:09
Чтобы проверить: лежит ли точка на границе, нужно написать те же условия, только со строгим равно: == - в С++. А из верхнего условия == убрать.
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
13.03.2019, 16:11
Да - это внутри или вне кольца?

Добавлено через 1 минуту
Сделано да - внутри.
0
 Аватар для FFPowerMan
2156 / 1236 / 508
Регистрация: 11.10.2018
Сообщений: 6,257
13.03.2019, 16:12
Цитата Сообщение от liv Посмотреть сообщение
C++
1
if((d < 625) && (d > 225))
- а как это так это? По-моему это неправильно. Liv, Вы проверяли свой код?
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
13.03.2019, 16:17
Поправочка: сравнение на равенство надо записать вот так
C++
1
if ((fabs(d - 625) < 0.0001) || (fabs(d -225) < 0.0001))
Добавлено через 1 минуту
FFPowerMan, это проверка на нахождение внутри кольца: квадрат радиуса меньшего большего и больше меньшего
1
 Аватар для FFPowerMan
2156 / 1236 / 508
Регистрация: 11.10.2018
Сообщений: 6,257
13.03.2019, 16:19
Я вообще думал, что нужно найти лежит ли точка не внутри кольца, а снаружи большого кольца и внутри маленького. Так кто же прав?
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
13.03.2019, 16:21
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  [ТС]
Действительно не записал чем являются Да/Нет(Да- внутри, Нет- за границей), извиняюсь. Спасибо большое за решение, помогло.
0
 Аватар для FFPowerMan
2156 / 1236 / 508
Регистрация: 11.10.2018
Сообщений: 6,257
13.03.2019, 16:22
Ну я вообще-то хотел чтобы это автор сказал.
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
13.03.2019, 16:25
Fmacbeth, во-первых, учтите мою поправочку
Во-вторых, все-таки, да - внутри кольца или вне?

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

Добавлено через 7 минут
Ближе к примеру будут числа: 224.99999652 и 225
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
13.03.2019, 16:51
Цитата Сообщение от 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Эксперт С++
 Аватар для liv
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
13.03.2019, 16:56
Ну или 225.00000123 и 225. Поэтому используется fabs

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

Добавлено через 2 минуты
Yetty, кстати, Вы так всегда сравниваете вещественные числа на совпадение?
0
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
13.03.2019, 17:05
liv, поверьте, что я в курсе как сравниваются вещественные но в данной ситуации применять eps излишне
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
13.03.2019, 17:22
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
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
13.03.2019, 17:33

Не по теме:


Цитата Сообщение от 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Эксперт С++
 Аватар для liv
5120 / 4574 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
13.03.2019, 17:43
Yetty, в примере даны точные числа, т.е. числа, которые составляют пропорцию 3:4:5
Не все же числа такие

Добавлено через 4 минуты
Кроме того, мое "во-вторых" никто не отменял
Надо сразу понимать суть вещественных чисел.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.03.2019, 17:43
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru