С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Bohes
4 / 3 / 0
Регистрация: 10.07.2011
Сообщений: 333
Записей в блоге: 1
#1

Считывание координат точки - C++

13.03.2014, 09:03. Просмотров 531. Ответов 13
Метки нет (Все метки)

Как можно реализовать чтение точек (их двумерных координат) так, чтобы не было неверного заполнения, а именно, в данном коде при вводе 2-х точек, а также координаты х и вместо у -- какой-то буквы программа работает неверно, т.е. ошибка ввода очевидна, но программа работает на этих входных данных
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
float X[n_sz];
    float Y[n_sz];  
while (cin.good())
 
{
        if (i > 999) 
        {
            cout << message4;
            i = 999;
            break;
        }
        cout<<"Введите x"<<i<<", y"<<i<<": ";
        cin >> X[i]; 
        cin >> Y[i];
        cout << X[i] << " "<<Y[i]<<endl;
        cout<<endl; 
        
        ++i;
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2014, 09:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Считывание координат точки (C++):

Определить номер точки, через которую проходит окружность с центром в начале координат, внутрь которой попадают все оставшиеся точки. - C++
Имеется n точек на плоскости. Определить номер той, через которую проходит окружность с центром в начале координат, внутрь которой попадают...

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

Считывание координат (x;y) курсора мышки - C++
Всем доброго время препровождения Есть необходимость считать ось &quot;y&quot; курсора По алгоритму типа: Если зажата СКМ и значение оси &quot;y&quot;...

Многократный ввод координат точки - C++
Разработать программу, которая многократно выполняет ввод координат точки х,у и определяет: точка находится внутри заданной области, на...

Записать выражение, зависящее от координат точки - C++
нужно создать программки для вычисления по этим трем заданиям, помогите:help: 1) Введите значение углов a и b в градусах. Посчитайте и...

Записать выражение, зависящее от координат точки X1 и Y1 - C++
Построить логическое выражение, которое определяет, попадает ли точка (x, y) в заштрихованную область на рисунке #include&lt;iostream&gt; ...

13
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.03.2014, 09:10 #2
C++
1
2
3
4
5
6
7
float a;
while (!(cin >> a) || (cin.peek() != '\n'))
{
    cin.clear();
    while (cin.get() != '\n');
    cout << "Error!" << endl;
}
0
Bohes
4 / 3 / 0
Регистрация: 10.07.2011
Сообщений: 333
Записей в блоге: 1
13.03.2014, 12:04  [ТС] #3
alsav22, прокомментируйте, пожалуйста, ваш код
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.03.2014, 12:38 #4
Нужен фильтр ввода данных
0
Bohes
4 / 3 / 0
Регистрация: 10.07.2011
Сообщений: 333
Записей в блоге: 1
13.03.2014, 12:49  [ТС] #5
Получился такой код, но работает не верно: считывает даже буквы
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
    bool endr = false;
    while (!endr)
    {
        while (!(cin >> X[i] >> Y[i]) || (cin.peek() != '\n'))
        {
            cin.clear();
            while (cin.get() != '\n');
            endr = true;
        }
        if (!endr)
            ++i;
    }
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.03.2014, 13:01 #6
Цитата Сообщение от Bohes2013 Посмотреть сообщение
но работает не верно: считывает даже буквы
Откуда видите?
0
Bohes
4 / 3 / 0
Регистрация: 10.07.2011
Сообщений: 333
Записей в блоге: 1
13.03.2014, 13:06  [ТС] #7
Цитата Сообщение от alsav22 Посмотреть сообщение
Откуда видите?
Я запустил этот код, сначала я вводил пары чисел -- i инкрементировалась, затем я попробовал вводить буквы -- никаких ошибок, продолжался ввод.

Добавлено через 1 минуту
После замены while на if ввод начал работать правильно
C++ (Qt)
1
if (!(cin >> X[i] >> Y[i]) )
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
13.03.2014, 13:08 #8
C++
#include <stdio.h>
#include <string.h>
 
int main() 
{
  char s[2][32];
  scanf("%s %s", s[0], s[1]);
  
  for(int j = 0; j < 2; j++)
    for(int i = 0; i < strlen(s[j]); i++)
      if(s[j][i] != '.')
        if(s[j][i] < '0' || s[j][i] > '9')
          printf("oshibka\n");
 
  printf("%s %s\n", s[0], s[1]);
}
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.03.2014, 13:17 #9
C++
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
#include <stdlib.h>
#include <iostream>
using namespace std;
 
void input(float* X, int n_sz)
{
    int i = 0;
    while (i < n_sz)
    {
        while (!(cin >> X[i]) || (cin.peek() != '\n'))
        {
            cin.clear();
            while (cin.get() != '\n');
            cout << "Error!" << endl;
        }
        ++i;
    }
    cout << "Done!" << endl << endl;
}
 
 
int main()
{
    const int n_sz = 5;
    
    float X[n_sz];
    float Y[n_sz]; 
    
    cout << "Enter to X " << n_sz << " float" << endl;
    input(X, n_sz);
    cout << "Enter to Y " << n_sz << " float" << endl;
    input(Y, n_sz);
    
    system("pause");
    return 0;
}
Добавлено через 2 минуты
Цитата Сообщение от Bohes2013 Посмотреть сообщение
После замены while на if ввод начал работать правильно
А разница? Тут, вообще, нужно ввод по отделности проверять, в X может быть правильным, а в Y неправильным, и наоборот.

Добавлено через 3 минуты
programina, человек ввод float проверяет.
0
Bohes
4 / 3 / 0
Регистрация: 10.07.2011
Сообщений: 333
Записей в блоге: 1
13.03.2014, 13:17  [ТС] #10
Цитата Сообщение от alsav22 Посмотреть сообщение
А разница? Тут, вообще, нужно ввод по отделности проверять, в X может быть правильным, а в Y неправильным, и наоборот.
Если хотя бы одна из координат не число, то это значит, что нужно завершить ввод (Число точек заранее не известно)
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.03.2014, 13:19 #11
Цитата Сообщение от Bohes2013 Посмотреть сообщение
я попробовал вводить буквы -- никаких ошибок, продолжался ввод.
А где у вас собщение об ошибке в коде? Ввод и будет продолжаться, пока правильно не введёте.

Добавлено через 1 минуту
Цитата Сообщение от Bohes2013 Посмотреть сообщение
Если хотя бы одна из координат не число, то это значит, что нужно завершить ввод (Число точек заранее не известно)
А раньше об этом не могли сообщить?
0
programina
1914 / 599 / 37
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
13.03.2014, 13:19 #12
alsav22, float нельзя представить строкой?
0
Bohes
4 / 3 / 0
Регистрация: 10.07.2011
Сообщений: 333
Записей в блоге: 1
13.03.2014, 13:20  [ТС] #13
Цитата Сообщение от alsav22 Посмотреть сообщение
Ввод и будет продолжаться, пока правильно не введёте.
Да, я уже разобрался. alsav22, спасибо за помощь
0
alsav22
13.03.2014, 13:22     Считывание координат точки
  #14

Не по теме:

Цитата Сообщение от programina Посмотреть сообщение
float нельзя представить строкой?
При выводе на консоль он так и предстаёт, но зачем усложнять и переливать из пустого в порожнее?

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2014, 13:22
Привет! Вот еще темы с ответами:

Геометрическая задача нахождения координат точки - C++
Дан прямоугольный треугольник заданный координатами своих вершин в структуре Point:struct Point { double x, y, z; }; Дана точка,...

Разработать функцию преобразования координат точки - C++
Разработать функцию преобразования координат точки (X0, Y0) при повороте системы координат на угол φ по следующему правилу: x1 =...

Точки в системе координат. Visual Studio - C++
Нужно определить принадлежность этой области точки, координаты которой вводятся с клавиатуры. Вот что-то похожее нашел, но там...

Создание проги, по вычисление координат точки. - C++
Класс ( определены 4 переменные double, определенны в private) Вводим с клавы переменные координаты (x1;y1) (x2;y2) прямой.Пользователь...


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

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

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