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

Попадание точек в заданную область

15.09.2019, 22:19. Показов 3013. Ответов 10

Студворк — интернет-сервис помощи студентам
Всем привет, по инфе задали написать программу, которая проверяет попадание точек в заданную область. Уже кучу всего наисправлял, т. к. с с++ знаком пару дней, и тут еще одна ошибка (преобразование string в float). Облазил кучу сайтов и форумов, в т. ч. и этот, но решения не нашел (или было слишком мудрено написано). Помогите, пожалуйста
Код (ошибка в 31-32 строке):

C++ (Qt)
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#define _USE_MATH_DEFINES
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <iostream>
#include <vector>
#include <string>
using namespace std;
 
int main()
{
    string enter = "";
    float in[2];
    int i, k, sum_in = 0, x = 0, l = 0;
    vector<float> out;
 
    setlocale(LC_ALL, "Russian");
    cout << "Стадия ввода координат. Для получения ответа введите 'end'\n";
    while (x != 1)
    {
        cout << "Введите координаты новой точки x, y:\n";
        cout << "x: ";
        cin >> enter;
        if (enter == "end")
        {
            x = 1;
            break;
        }
        else
        {
            in[0] = stof(enter);
            cout << in[0];
        }
        cout << "y: ";
        cin >> in[1];
        if (-3 < in[0] && in[0] < 3 && -3 < in[1] && in[1] < 3 && (sqrt(in[0]) + sqrt(in[1]) >= 4))
        {
            sum_in++;
        }
        else
        {
            for (i = 0; i < 2; i++)
            {
                out.push_back(in[i]);
            }
        }
    }
    cout << "Попавших в область координат: " << sum_in << endl;
    cout << "Не попавшие в область координаты:\n";
    for (k = 0; k < out.size()/2+1; k += 2)
    {
        l++;
        cout << l+1 << ": x: " << out[k];
        cout << ", y: " << out[k + 1] << endl;
    }
    _getch();
    return 0;
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.09.2019, 22:19
Ответы с готовыми решениями:

Попадание точки в заданную область
Помогите решить c++ Попадает ли точка в заданную плоскость

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

Попадание точки в заданную область по координатам
помогите пожалуйста нужно задать триугольник(точки (0.-5) (0.5) и (0.10) и вывести результат (попадает точка в заданную область или...

10
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
15.09.2019, 23:18
EvilSepXD, ошибку то хоть озвучь.

Добавлено через 2 минуты
А так предположу, что вещественные числа ты вводишь с точкой вместо запятой, как положено в русской локали.
1
7438 / 5030 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
15.09.2019, 23:23
Цитата Сообщение от EvilSepXD Посмотреть сообщение
преобразование string в float
это ещё зачем в задаче на попадание в область ? напишите оригинал условия и сбросьте скрин области (значок скрепка в правом верхнем углу редактора)
0
863 / 513 / 215
Регистрация: 19.01.2019
Сообщений: 1,216
16.09.2019, 01:08
EvilSepXD,
Цитата Сообщение от EvilSepXD Посмотреть сообщение
if (-3 < in[0] && in[0] < 3 && -3 < in[1] && in[1] < 3 && (sqrt(in[0]) + sqrt(in[1]) >= 4))
Никогда не выполнится.
0
0 / 0 / 0
Регистрация: 07.01.2016
Сообщений: 13
16.09.2019, 18:53  [ТС]
Неа, выполнится, первые условия - границы квадрата, последнее - окружности

Добавлено через 1 минуту
Спасибоооо огромнооеее, даже подозревать не мог, что в этом весь прикол
0
0 / 0 / 0
Регистрация: 07.01.2016
Сообщений: 13
16.09.2019, 19:22  [ТС]
По информатике задали написать прогу, которая будет работать с координатами точек, входящих в определенную область. Вроде уже все нормально работало, но тут все пошло не по плану. Когда ввожу координату для y (33-34 строки), в следующий раз ввести x уже не удаётся (см. скрин)
Хелп, что не так?

C++ (Qt)
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#define _USE_MATH_DEFINES
#include <stdio.h>
#include <math.h>
#include <conio.h>
#include <iostream>
#include <vector>
#include <string>
using namespace std;
 
int main()
{
    string enter = "";
    float in[2];
    int i, k, sum_in = 0, x = 0, l = 0;
    vector<float> out;
 
    setlocale(LC_ALL, "Russian");
    cout << "Стадия ввода координат. Для получения ответа введите 'end'\n(Координаты вводить через запятую, а не точку!)\n";
    while (x != 1)
    {
        cout << "Введите координаты новой точки x, y:\n";
        cout << "x: ";
        cin >> enter;
        if (enter == "end")
        {
            x = 1;
            break;
        }
        else
        {
            in[0] = stof(enter);
        }
        cout << "y: ";
        cin >> in[1];
        if (-3 < in[0] && in[0] < 3 && -3 < in[1] && in[1] < 3 && (sqrt(in[0]) + sqrt(in[1]) >= 4))
        {
            sum_in++;
        }
        else
        {
            for (i = 0; i < 2; i++)
            {
                out.push_back(in[i]);
            }
        }
    }
    cout << "Попавших в область координат: " << sum_in << endl;
    cout << "Не попавшие в область координаты:\n";
    for (k = 0; k < out.size()/2+1; k += 2)
    {
        l++;
        cout << l+1 << ": x: " << out[k];
        cout << ", y: " << out[k + 1] << endl;
    }
    _getch();
    return 0;
}
Миниатюры
Попадание точек в заданную область  
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
16.09.2019, 19:33
Дробную часть все равно надо вводить не через запятую, а через точку.
0
0 / 0 / 0
Регистрация: 07.01.2016
Сообщений: 13
16.09.2019, 19:37  [ТС]
Тогда почему-то выводится x без дробной части, а с y все нормально
0
Модератор
Эксперт С++
 Аватар для zss
13773 / 10966 / 6491
Регистрация: 18.12.2011
Сообщений: 29,244
16.09.2019, 19:38
Цитата Сообщение от EvilSepXD Посмотреть сообщение
почему-то выводится x без дробной части
Откуда там возьмется дробная часть, если x -имеет тип int
0
0 / 0 / 0
Регистрация: 07.01.2016
Сообщений: 13
16.09.2019, 19:43  [ТС]
Я имею ввиду не саму переменную x, а x в качестве выводных данных (x: ..., y:...)
То есть, я ввожу через cin >> enter, где enter - строка, после чего, если enter != "end", enter преобразуется в float (я думаю, в этом моменте дробное и теряется)
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
17.09.2019, 00:30
Цитата Сообщение от zss Посмотреть сообщение
Дробную часть все равно надо вводить не через запятую, а через точку.
Зависит от локали. В русской локали - запятая, в английской - точка. Под Виндой разделитель можно переопределить в настройках региона.

Цитата Сообщение от EvilSepXD Посмотреть сообщение
Хелп, что не так?
На cin и cout твой setlocale не действует. Замени его на конструкцию вида:
C++
1
2
3
4
std::locale loc("Russian");
std::locale::global(loc);
std::cin.imbue(loc);
std::cout.imbue(loc);
Тогда все будет вводиться и выводиться в едином формате.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.09.2019, 00:30
Помогаю со студенческими работами здесь

Определить попадание точки в заданную область
Дана заштрихованная область и точка с координатами x, y. Написать программу, определяющую, попадет ли точка в область. Результат вывести в...

Попадание точки в заданную область по координатам
1)задать круг и триугольник(смотреть рискунок) 2)ввести координаты точки (x,y); 3)вывести результат (попадает точка в заданную...

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

попадание точки на плоскости в заданную область
Здравствуйте. Помогите пожалуйста, нужно составить программу проверяющую попадание точки на плоскости в заданную область. Область задана на...

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


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
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
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru