Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Контролируемый ввод числа в С++

10K
10 ноября 2006 года
Omega Red
49 / / 15.10.2006
Хорошо, вот у меня ещё один вопрос появился. Допустим есть массив, и если я ввожу все чётные, все нечётные то появляется соответствующее сообщение. Как сделать так, чтобы при вводе символов char писалось сообщение "Нужно вводить числа" допустим...


[COLOR=red]нарушение правил:[/COLOR] читаем правила форума пункт 10
18K
11 ноября 2006 года
Here
17 / / 05.11.2006
Делай проверку например
cin >> ch;
if(!isdigit(ch)) {
cout << "Вводите цифры!" << endl;
return;
}
63
13 ноября 2006 года
Zorkus
2.6K / / 04.11.2006
Только по-русски в консоль лучше не выводи, могут глюки быть, с кодировками;)
18K
14 ноября 2006 года
Here
17 / / 05.11.2006
Но если сильно нужно то можно использовать функцию CharToOem("текст",szBuffer);
10K
18 ноября 2006 года
Omega Red
49 / / 15.10.2006
Вот вся моя прога:
Цитата:
#include "iostream.h"
#include "malloc.h"
#include "ctype.h"

int *a, i, j, n, max, id, is, it;

void main()
{

cout<<"Vvedite kolicestvo elementov massiva"<<endl;
cin>>n;

a = (int*)malloc(n*sizeof(int));
cout<<"Vvedite elementi massiva:"<<endl;

for (i = 0; i < n; i++)
{
cout<<i+1<<": ";
cin>>a;
if(!isdigit(a))
cout << "Vvodite cifri!" << endl;


}


cout<<"Vvedenniy massiv:"<<endl;

for (i = 0; i < n; i++)
{
cout<<a<<" ";
if (a%2 == 0)
id++;
if (a[0]%2 == 1)
it=1;
}

cout<<endl;

max = a[0];
for (i = 0; a%2 != 1; i++)
{
if (max < a)
{
max = a;
}

}


if (it == 1 && id != 0)
cout<<"Cetnih cisel do necetnogo ne suschestvuet"<<endl; //Пример 2, нечётное число находится впереди чётных
if (id == 0)
cout<<"Zdes net cetnih cisel"<<endl; //Пример 3, все числа нечётные
if (id == n)
{
cout<<"Zdes net necetnih cisel"<<endl; //Пример 4, все числа чётные
it = 3;
}
if (it == 0)
cout<<"Maksimalniu element massiva "<<max<<endl; //Пример 5, максимальное число есть

}



Этот isdigit не работает, прога вылетает, а сообщение выводится даже при нормальном числе.

18K
19 ноября 2006 года
Here
17 / / 05.11.2006
[QUOTE=Omega Red]Этот isdigit не работает, прога вылетает, а сообщение выводится даже при нормальном числе.[/QUOTE]
если я не ошибаючь, то isdigit проверяет является ли символ типа char цифрой или нет, а у тебя a это int.
Можно сделать так
 
Код:
char ch;
cin >> ch;
if(!isdigit(ch))
  cout << "Error";
else
  a = atoi(ch);

но опять же ты сможешь тогда проверять один символ, т.к. isdigit() работает с символом а не со строкой.
можно просто вводимую строку конвертировать функцией atoi() и проверять выполнилась функция или нет...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог