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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2010, 10:21   #1
phabion
 
Регистрация: 17.04.2010
Сообщений: 3
По умолчанию Как контролировать вводимые данные в Borland C++

Привет Всем!
Я начинающий на С++ и вопрос у меня такой: Требуется вводить целое чило и когда использователь каждые раз вводит, например, символьную строку нужно вывести общение: "Вы должны ввести целое чило". Знаю, что наверное использовать цикл, но иммено как я не знаю.
Буду благодарен за любые советы.
phabion вне форума Ответить с цитированием
Старый 19.04.2010, 10:31   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Один из вариантов считывать строку, пытаться перевести ее в число, если не переводится то значит попросить еще раз ввести.
Я точно не помню но по-моему в Си борландов есть процедура Val вот она тебе и покажет можно ли преобразовать строку в число (описание см. в хелпе)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.04.2010, 18:14   #3
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Если имеется в виду не Билдер:

вариант на C:
Код:
#include<stdio.h>

int main()
{
int number,f,res;
do
 {
  f = 1;
  fflush(stdin);
  res = scanf("%d",&number);
  if(!res)
   {
    f = 0;
    printf("It is not a number!\n");
   }
 } while(!f);
return 0;
}
на C++:
Код:
#include <iostream>
#include <limits>
using namespace std;

int main()
{
 int number,f;
 do
  {
   f = 1;   
   cin>>number;
   if(cin.fail())
    {
     f = 0;
     cout<<"It is not a number!\n";
    } 
    cin.clear();
    cin.ignore(numeric_limits<streamsize>::max(),'\n');
  } while(!f);
 
 system("pause");
 return 0;
}
Но если первый символ будет цифрой, то не прокатит.

А если следовать идее перевода строки в число, то помимо борландовской есть стандартные atoi и strtol.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 19.04.2010 в 18:17.
Sazary вне форума Ответить с цитированием
Старый 19.04.2010, 19:02   #4
romec1
Пользователь
 
Регистрация: 04.02.2010
Сообщений: 50
По умолчанию

на вкладке Event на Change проверять, если в строке не число, то последний символ удалять..
а если переводить строку в число то есть функция StrToInt() или можно так, например для Эдита
Edit1->Text.ToInt(), ну или ToDouble().. как тебе там уже нужно будет..откуда строка то считываться будет?
Я не волшебник.. я только учусь

Последний раз редактировалось romec1; 19.04.2010 в 19:06.
romec1 вне форума Ответить с цитированием
Старый 19.04.2010, 22:30   #5
Assemblerru
Форумчанин
 
Регистрация: 28.01.2010
Сообщений: 224
По умолчанию

Код:
try
{
AnsiString S = Edit1 -> Text;//загрузили типа число
int I = S.Pos ("."); //проверили на вхождение запятой
if (I == 0)//если введено число целое
{
int a;
a = StrToInt (S);
}
else
{
ShowMessage ("Чета типа ашиблись гдето");
return;
}
}

catch (...)//обработчик ошибок
 {
 ShowMessage ("Чета типа ашиблись гдето");
 }
извени далжно работать не проверял...
всему свое время как зиме и весне
и каждому солнцу свой неба кусок

Последний раз редактировалось MaTBeu; 20.04.2010 в 12:04.
Assemblerru вне форума Ответить с цитированием
Старый 19.04.2010, 22:44   #6
romec1
Пользователь
 
Регистрация: 04.02.2010
Сообщений: 50
По умолчанию

а на 2009 билдере уже есть стандартный обработчик - NumbersOnly
Я не волшебник.. я только учусь
romec1 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Искать вводимые значение в столбце Aqil_f Microsoft Office Excel 2 29.01.2010 22:11
В OleContainer документ Word, как в нем контролировать нажатие клавиши? Djonik Общие вопросы Delphi 0 16.03.2009 18:38
Как контролировать доступ в интернет, используя реестр ikot Работа с сетью в Delphi 4 30.12.2008 11:23
Где надо объявить и описать вводимые данные, чтобы расчитать с помощью них формулы Соня Помощь студентам 1 31.05.2007 07:07