Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 44, средняя оценка - 4.80
Welemir
3 / 3 / 0
Регистрация: 26.09.2009
Сообщений: 104
#1

Проверка типа вводимых данных. - C++

01.10.2009, 18:38. Просмотров 6028. Ответов 10
Метки нет (Все метки)

Собственно,как осуществить ?

К примеру,здесь:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
int main() {
    
    int x;
    int y;
    cin >> x;
    y = (int) x;
    if (x != y) {
            
            cout << "ERROR!";
            getch();
            
            }
            
            else {
                 
                 cout << x;
                 getch();
                 
                 }
                 
                 }
Думал,прокатит...Походу компиль автоматом переводит строку в её числовое представление,хоть и непонятно,какое.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.10.2009, 18:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проверка типа вводимых данных. (C++):

Проверка вводимых данных на соответствие типа - C++
Задание само очень простое - вычитание матриц, с помощью перегрузки функций (одна функция вычитает типы short, другая long double). ...

Проверка вводимых данных - C++
Доброго времени суток, форумчане. Я столкнулся с такой проблемой: при введении еденицы измерения, если та инициализирована ранее то все...

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

Проверка вводимых данных - C++
#include &lt;iostream&gt; using namespace std; int main() { double a, b, c; cout &lt;&lt; &quot;Enter the first side of the...

Проверка вводимых данных - C++
Вот часть программы int main(void) { int vop; setlocale(LC_ALL, &quot;Russian&quot;); int mas1, mas2, mas3, outmas; int ke1, ke2,...

Определение типа вводимых данных - C++
Здравствуйте. Мне, как новичку, нужна помощь. Я делаю программу для работ с функциями. В начале программа просит нажать на цифру 1, 2 или...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
M128K145
Эксперт С++
8286 / 3505 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
01.10.2009, 19:08 #2
компилятор нормальный, просто иногда полезно понимать что ты заставляешь делать компилятор. Вот эта строка
C++
1
(int) x
возвращает ASCII код числа записанного в x. Так например если в x будет записан 0, то вполне естественно, что в y будет не 0, как ты предполагал, а ровно 48!
Если интересно, то смотри аттач
Вложения
Тип файла: rar ASCII.rar (3.8 Кб, 72 просмотров)
Rififi
2359 / 1054 / 44
Регистрация: 03.05.2009
Сообщений: 2,656
01.10.2009, 19:10 #3
Welemir,
Походу компиль автоматом переводит строку в её числовое представление

а нафига ты строку пытаешься запихнуть в число?
M128K145
Эксперт С++
8286 / 3505 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
01.10.2009, 19:16 #4
Собственно строки-то никакой и нет. Это не java и не C# которые читают сначала строки.
Welemir, почитай книгу что-ли. Просто допускать такие элементарные ошибки...
breeve
75 / 75 / 14
Регистрация: 01.08.2009
Сообщений: 177
01.10.2009, 19:48 #5
Я прочитал и решил попробовать.
И че то не пойму, а как так сделать. я если пишу:
C++
1
y =(int)x;
то он мне выводит число, я введу 5 он мне 5. если введу букву то ничего не выводит сразу закрывает. Если поменяю х на чар тоже закрывает. ничего не понимаю.
Welemir
3 / 3 / 0
Регистрация: 26.09.2009
Сообщений: 104
01.10.2009, 20:39  [ТС] #6
А название темы ни о чём не говорит ?.Мне нужно определить,какие данные вводит пользователь.В рнр это можно сделать,так почему же в С/С++ нельзя ?Хотя... неужели коды каждого символа проверять?))).
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
01.10.2009, 20:56 #7
Цитата Сообщение от Welemir Посмотреть сообщение
А название темы ни о чём не говорит ?.Мне нужно определить,какие данные вводит пользователь.В рнр это можно сделать,так почему же в С/С++ нельзя ?Хотя... неужели коды каждого символа проверять?))).
да, а почему нет? их всего-то 255. цифры сгрупированны, буквы тоже кучно идут.
Welemir
3 / 3 / 0
Регистрация: 26.09.2009
Сообщений: 104
01.10.2009, 21:05  [ТС] #8
Да нет,просто полагал,что есть какой-нибудь оператор проверки типо is_int(),(int) или gettype(),как в РНР...Просто,на мой взгляд,это не слишком-то рациональное решение...

Добавлено через 1 минуту
Цитата Сообщение от breeve Посмотреть сообщение
то он мне выводит число, я введу 5 он мне 5. если введу букву то ничего не выводит сразу закрывает. Если поменяю х на чар тоже закрывает. ничего не понимаю.
Полагаю,дело ещё и в компиляторе...Некоторые из них могут вообще чудеса творить...
M128K145
Эксперт С++
8286 / 3505 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
01.10.2009, 22:57 #9
Цитата Сообщение от Welemir Посмотреть сообщение
Полагаю,дело ещё и в компиляторе...Некоторые из них могут вообще чудеса творить...
Welemir, запомни главное правило начинающего программиста:
"Компилятор всегда прав!"
посмотри этот
код
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
int main()
{
    char s;
    std::cin>>s;
    if(isdigit(s))
        std::cout<<"digit"<<std::endl;
    else
        std::cout<<"symbol"<<std::endl;
    system("pause");
    return 0;
}
или делай проверку по коду символа
Monte-Cristo
2788 / 1374 / 30
Регистрация: 07.03.2009
Сообщений: 4,446
01.10.2009, 23:02 #10
M128K145, для isdigit() вроде бы ctype.h нужен.
M128K145
Эксперт С++
8286 / 3505 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
01.10.2009, 23:10 #11
Monte-Cristo, да нет вроде. У меня и так работает, хотя isdigit действительно описан в ctype.h
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.10.2009, 23:10
Привет! Вот еще темы с ответами:

Проверка на коректность вводимых данных - C++
Есть такой код где данные вводятся целого типа( int x; cin &gt;&gt; x; ). Вопрос такой как проверить действительно ли введено число либо нет...

Проверка корректности вводимых данных - C++
Есть программа на проверку високосного года. Преподаватель при проверке вводит &quot;5 Аотао&quot; к примеру и программа читает первое число и...

Проверка корректности вводимых данных - C++
Здравствуйте, подскажите,пожалуйста, как прописать условия проверки. Мне нужно: если вводится радиус e больше одной из сторон, выводилось...

Посимвольная проверка вводимых данных - C++
Доброго времени суток. Такая проблема: нужно запретить пользователю вводить не цифры и дробные числа через запятую. т.е. 4213 -...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
01.10.2009, 23:10
Ответ Создать тему
Опции темы

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