Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
0 / 0 / 0
Регистрация: 25.12.2012
Сообщений: 7
1

Условный оператор.Задача на полуокружность

25.04.2013, 21:29. Показов 4453. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дана точка на плоскости с координатами (х,у). Составить программу,которая выдаёт одно из сообщений:*Да*,*Нет*,*На границе* в зависимости от того,где лежит точка.Полуокружность по Х лежит от (-1;1) по У лежит от (1;0).
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.04.2013, 21:29
Ответы с готовыми решениями:

Условный оператор, оператор ввода/вывода; плоскость и принадлежность точки
Здравствуйте. В С++ я абсолютный новичок, поэтому с первым же заданием возникли определённые...

Условный оператор
Добрый день,нужна помощь в написании кода по заданию. Составить систему неравенств на основании...

Условный оператор
Здравствуйте! Есть такой вопрос: Собственно, что она выведет и почему - понятно. А вот...

Условный оператор if
Добрый день! есть следующий код программы на C++: #include<cmath> #include<iostream> int main(){...

16
244 / 245 / 38
Регистрация: 08.04.2013
Сообщений: 927
25.04.2013, 21:42 2
C++
1
2
3
4
5
6
bool inHalhCircle (double& x, double& y)
{
    if (((x*x+y*y)<=1)&&(x>=-1)&&(x<=1)&&(y>=0)&&(y<=1))
         return true
    else return false;
}
Добавлено через 5 минут
прошу прощение. немного внес изменения:
C++
1
2
3
4
5
6
7
8
9
int inHalfCircle (double& x, double& y)
{
    if (((x*x+y*y)<=1)&&(x>=-1)&&(x<=1)&&(y>=0)&&(y<=1))
        { if ((x*x+y*y)==1)
              return 2; //на границе
         return 1;//внутри полукруга
        }
    else return 0;//не входит в полукруг
}
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
25.04.2013, 21:45 3
metaluga145, с ссылками перемудрили. Да и if/else лишние.
0
244 / 245 / 38
Регистрация: 08.04.2013
Сообщений: 927
25.04.2013, 21:46 4
Tulosba, почему перемудрил? Память экономлю))))
А как лучше написать без if/else?
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
25.04.2013, 21:50 5
Цитата Сообщение от metaluga145 Посмотреть сообщение
А как лучше написать без if/else?
а вот так

Цитата Сообщение от metaluga145 Посмотреть сообщение
bool inHalhCircle (double& x, double& y)
{
if (((x*x+y*y)<=1)&&(x>=-1)&&(x<=1)&&(y>=0)&&(y<=1))
return true
else return false;
}
C++
1
2
3
4
bool inHalhCircle (double& x, double& y)
{
   return (((x*x+y*y)<=1)&&(x>=-1)&&(x<=1)&&(y>=0)&&(y<=1))
}
проверка условий на твоей совести, я не проверял

Добавлено через 1 минуту
Цитата Сообщение от metaluga145 Посмотреть сообщение
return 1;//внутри полукруга
речь шла про окружность
а у неё внутри /снаружи нет
0
244 / 245 / 38
Регистрация: 08.04.2013
Сообщений: 927
25.04.2013, 21:51 6
ValeryS, Там три возможных случая, потому просто bool не обойтись
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
25.04.2013, 21:53 7
Цитата Сообщение от metaluga145 Посмотреть сообщение
Там три возможных случая, потому просто bool не обойтись
ты спросил как написать
Цитата Сообщение от metaluga145 Посмотреть сообщение
без if/else?
если один bool (твой первый вариант)
я показал
0
244 / 245 / 38
Регистрация: 08.04.2013
Сообщений: 927
25.04.2013, 21:53 8
ValeryS, ну за поправку первого варианта спасибо)а второй вариант можно поправить?
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
25.04.2013, 22:05 9
Цитата Сообщение от metaluga145 Посмотреть сообщение
ValeryS, ну за поправку первого варианта спасибо)а второй вариант можно поправить?
не знаю
я бы вообще по другому написал
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// проверка на попадание в полуокружность
// вход 
//x y координаты
// выход
// 3 на границе
//2 лежит на полуокружности 
// 0 не лежит 
int inHalhCircle (double x, double y)
{
 if(y==0.0&&(x==1.0||x==-1.0))  
    return 3;
 if((y*y+x*x)==1)
   return  2;
return 0;
}
можно без if ( но это уже с битами работать)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
// вход 
//x y координаты
// выход
// 3 на границе
//2 лежит на полуокружности 
// 0 не лежит 
int inHalhCircle (double x, double y)
{
int tmp1=0,tmp2=0;
 
 tmp1=(int)((y*y+x*x)==1);
 tmp2=(int)(y==0.0&&(x==1.0||x==-1.0));
 return  tmp1<<1 |tmp2;
}
0
244 / 245 / 38
Регистрация: 08.04.2013
Сообщений: 927
25.04.2013, 22:14 10
Мне теперь вдруг дошло,что условие вопроса не совсем корректно. В каком случае и что должна выводить программа? Потому что мой код и код ValeryS -это две разные программы и решают они разные задачи.
0
0 / 0 / 0
Регистрация: 25.12.2012
Сообщений: 7
25.04.2013, 22:43  [ТС] 11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main (int argc, char *argv[])
{ float x; float y;
cout<<"x=";cin>>x;
cout<<"y=";cin>>y;
if((fabs(x)<1 && (y>0)&&(y<1))&&(x*x+y*y<1))
cout<<"Da";
else if((y*y+x*x)==1)
cout<<"NA GRANICE";
 else cout<<"NET";
    system ("pause"); 
 
    return 0;
}
0
244 / 245 / 38
Регистрация: 08.04.2013
Сообщений: 927
25.04.2013, 22:58 12
Gamora, при вводе координат (0,-1) получите ответ "нет". проверьте правильность условия!

Добавлено через 6 минут
Прошу прощения. Получите ответ "на границе"
1
0 / 0 / 0
Регистрация: 25.12.2012
Сообщений: 7
25.04.2013, 23:00  [ТС] 13
Так и должно выводить
0
244 / 245 / 38
Регистрация: 08.04.2013
Сообщений: 927
25.04.2013, 23:01 14
Gamora, эмм..я правильно понимаю,что точка (0,-1) не принадлежит вашей полуокружности?
0
0 / 0 / 0
Регистрация: 25.12.2012
Сообщений: 7
25.04.2013, 23:04  [ТС] 15
Х (-1;1) Y(0;1) всё верно, принадлежит...
0
244 / 245 / 38
Регистрация: 08.04.2013
Сообщений: 927
25.04.2013, 23:08 16
Gamora, нет, Вы не поняли. точка х=0, у=-1, не принадлежит, но подходит в Ваш код. так быть не должно, я правильно понимаю?
1
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,521
25.04.2013, 23:17 17
Цитата Сообщение от metaluga145 Посмотреть сообщение
Gamora, нет, Вы не поняли. точка х=0, у=-1, не принадлежит, но подходит в Ваш код.
а у меня тот же косяк
как то не учел что у не может быть отрицательной
вот так нужно
C++
1
(((y*y+x*x)==1)&&y>=0);
1
25.04.2013, 23:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.04.2013, 23:17
Помогаю со студенческими работами здесь

Условный оператор
1)Составить программу для вычисления значения функции f(x)...

Условный оператор
Скажите, будет ли следующий код работать, как подразумевается - в зависимости от значения флага...

Условный оператор.
Даны три действительных числа. Выбрать из них те, которые принадлежат интервалу (1, 3).

Условный оператор
Помогите решить задачу: Даны четыре целых числа a, b, c и d. Найти наименьшее из максимумов первой...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru