Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2014, 13:15   #1
qozyrek
Новичок
Джуниор
 
Регистрация: 21.09.2014
Сообщений: 8
Смущение В какую область попадает точка, или задача для первокурсника

На координатной плоскости нарисован четырёхугольник с вершинами (40;y), (-40;y), (-40;-y), (40;-y).(y вводится с клавиатуры. Выяснить и вывести результат на экран, попадает ли точка за четырёхугольник, она в нём или же она на границе.
Я тут кое-что начал делать, но в итоге запутался. Засапортте кто чем может, по-браЦки :-)

Мой недо-код:
Код:
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus" );
 
    const int x1 = 40, x2 = -40;
    int x3, y1, y2, y3;
 
    cout << "Введите значения по оси Y." << endl;
    cout << "y1= ";
    cin >> y1;
    cout << "y2= ";
    cin >> y2;
    cout << "-----------------------------------" << endl;
    cout << "Введите координаты искомой точки." << endl;
    cout << "x= ";
    cin >> x3;
    cout << "y= ";
    cin >> y3;
    cout << "-----------------------------------" << endl;
    cout << "Ответ: ";
 
    if ( ( ( x3 > x1 ) || ( x3 < x2 ) ) || ( ( y3 > y1 ) || ( y3 < y2 ) ) ) {
        cout << "Да" << endl;
    }
    else {
            if ( ( ( x3 == x1 ) && ( ( y3 > y1) || ( y3 < y2 ) ) ) || ( ( x3 == x2 ) && ( ( y3 > y1) || ( y3 < y2 ) ) ) ) {
                cout << "Да" << endl;
            }
            else {
                if ( ( ( x3 < x1 ) && ( ( y3 < y1) || ( y3 > y2) ) ) || ( ( x3 > x2 ) && ( ( y3 < y1 ) || ( y3 > y2 ) ) ) ) {
                    cout << "Нет" << endl;
                }
                else {
                    if ( ( x3 == x1 ) || ( x3 == x2 ) || ( y3 == y2 ) || ( y3 == y1 ) )  {
                        cout << "На границе" << endl;
                    }
                }
            }
    }
 
    return 0;
 
}

Последний раз редактировалось Stilet; 21.09.2014 в 16:46.
qozyrek вне форума Ответить с цитированием
Старый 21.09.2014, 15:02   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Вот тебе сразу бонус за копипаст.
И отделение мух от котлет на 2 перекура.


Код:
/* возвращает:
   +1 - точка внутри
    0 - точка на границе
   -1 - точка снаружи
*/
int PointInRect(int x1, int x2, int y1, int y2, int X, int Y)
{
  if ((x1 >= x2) || (y1 >= y2))
    return -100500; // неверное задание параметров
    
  // точка внутри
  if ((X > x1) && (X < x2) && (Y > y1) && (Y < y2))
    return 1;
    
  // точка снаружи
  if ((X < x1) || (X > x2) || (Y < y1) || (Y > y2))
    return -1;

  // точка на границе
  return 0;
}
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 21.09.2014, 16:37   #3
qozyrek
Новичок
Джуниор
 
Регистрация: 21.09.2014
Сообщений: 8
По умолчанию

"бонус за копипаст."

1). За какой такой "копипаст"?
2). Ну я же первый день на данном портале, ещё не разобрался как подсвечивать код.

Спс, за помощь, кстати
qozyrek вне форума Ответить с цитированием
Старый 21.09.2014, 16:44   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
1). За какой такой "копипаст"?
Ликбез онлайн.
Цитата:
Спс, за помощь, кстати
Работает? А то я на заборе писал, не проверял.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 21.09.2014, 16:51   #5
qozyrek
Новичок
Джуниор
 
Регистрация: 21.09.2014
Сообщений: 8
По умолчанию

1). Щито такае "копипаст" я знаю. Вы мне другое скажите:"Откуда я его скопипастил?".
2). Ну я, кагбЭ, студентпервокурсник. И до поступления в школе кодил только на пасЦале. В общем я не совсем понимаю как запилить для данного куска кода метод "main". Не научишь? (~_-)
qozyrek вне форума Ответить с цитированием
Старый 21.09.2014, 17:15   #6
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Вы мне другое скажите:"Откуда я его скопипастил?"
Предполагаю, что из своей IDE.
Цитата:
как запилить для данного куска кода метод "main". Не научишь? (~_-)
Дык это не просто "кусок кода", это функция. Вызови её из main(), в зависимости от результата выведи на экран инфу.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 21.09.2014, 17:19   #7
qozyrek
Новичок
Джуниор
 
Регистрация: 21.09.2014
Сообщений: 8
По умолчанию

Можно подумать Вы весь код по новой пишете здесь, не копируя с IDE
Могёте привести пример, а то я не оч понимаю. Покажете и глядишь пойму и научусь.
Я пробовал в main'е написать "PointInRect(40, -40, 40, -40, 20, 40);". Но у меня ничего не вышло
qozyrek вне форума Ответить с цитированием
Старый 21.09.2014, 17:23   #8
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Короче, замени вот это
Код:
if ( ( ( x3 > x1 ) || ( x3 < x2 ) ) || ( ( y3 > y1 ) || ( y3 < y2 ) ) ) {
        cout << "Да" << endl;
    }
    else {
            if ( ( ( x3 == x1 ) && ( ( y3 > y1) || ( y3 < y2 ) ) ) || ( ( x3 == x2 ) && ( ( y3 > y1) || ( y3 < y2 ) ) ) ) {
                cout << "Да" << endl;
            }
            else {
                if ( ( ( x3 < x1 ) && ( ( y3 < y1) || ( y3 > y2) ) ) || ( ( x3 > x2 ) && ( ( y3 < y1 ) || ( y3 > y2 ) ) ) ) {
                    cout << "Нет" << endl;
                }
                else {
                    if ( ( x3 == x1 ) || ( x3 == x2 ) || ( y3 == y2 ) || ( y3 == y1 ) )  {
                        cout << "На границе" << endl;
                    }
                }
            }
    }
на это:

Код:
switch (PointInRect(/* данные, которые выше ввёл */))
{
  case 1: cout << "Внутри" << endl; break;
  case -1: cout << "Снаружи" << endl; break;
  case 0: cout << "На границе" << endl; break;
  default: cout << "Неверное задание параметров" << endl;
}
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 21.09.2014, 17:26   #9
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Можно подумать Вы весь код по новой пишете здесь, не копируя с IDE
Подумать? Можно!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 21.09.2014, 23:27   #10
qozyrek
Новичок
Джуниор
 
Регистрация: 21.09.2014
Сообщений: 8
По умолчанию

Здоровенное спасЫба
qozyrek вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Попадает ли точка в заданую область? vadiprog Помощь студентам 1 09.10.2011 23:24
Попадает ли точка с заданнымы координатами в область litokha Помощь студентам 3 04.10.2011 08:46
В какую область попадает точка? Develope Помощь студентам 2 19.09.2011 22:11
попадает ли точка в область pascal evklid Помощь студентам 11 04.10.2010 15:46
Попадает ли точка в область... kiborrgg Помощь студентам 4 02.10.2010 17:23