Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проверка ввода 
V
    Опции темы
Vaz007
Дата 29.9.2012, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 13.5.2009
Где: Москва

Репутация: нет
Всего: нет



На вход программы задаются A - число в какой-то системе счисления(тип string),n(основание СЧ числа А),m(основание новой СЧ для перевода).
Уж очень много проверок на ввод у меня получилось(пытался все учесть).Но к примеру я ввожу 123 + 2 , все программа бесконечно выводит ошибки.  
Прошу вас помочь мне сделать правильную проверку на ввод данных.( A -число,в которое можно вводить только цифры от 0 до 9 и буквы от a до z, n и m от 2 до 36)
Код

void Sys_Trans::Set_A()
{  
        cout <<"Enter number A,n-system,m-tranfer system" <<endl;
        char M;
        while(1)
        {
        
        cin >>A>>n>>m;

        bool ad = true;
        for(int i =0;i<A.size();++i)
        {

        if ( !isalpha(A[i]) && !isdigit(A[i]) ) 
        {
        ad = false;
        cerr << "Error: " << A[i] << " is not alphabetic and numeric, please enter something that is!" << endl;
        }

        if(isalpha(A[i]))
        {
        M=char(toupper(A[i]));
        A[i] =M;
        }

        if((int(A[i]))-55>=n )
        {
        ad =false;
        cerr << "Error:"<<A[i]<<" is incorrect for system " <<n<<endl; 
        }

        }
        
        if (n<2 || n>36 || m<2 || m>36 )
         {
             ad =false;
             cerr << "Error:system or tranfer system incorrect   "<< endl;
         }

        if(n>=2 && n<=9)
        for(int i=0;i<A.size();++i)
        if((int(A[i])-'0') >=n ) 
        {
        ad =false;
        cerr << "Error:"<<A[i]<<" is incorrect for system " <<n<<endl;
        }
    
        if(ad == false)
        cout <<"Enter number A, n -system , m -tranfer system" <<endl;
        else break;

        }
    
}

PM MAIL Jabber   Вверх
volatile
Дата 30.9.2012, 19:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(Vaz007 @  29.9.2012,  20:16 Найти цитируемый пост)
Но к примеру я ввожу 123 + 2 , все программа бесконечно выводит ошибки

Так нужно вводить не 123 + 2, а
Цитата(Vaz007 @  29.9.2012,  20:16 Найти цитируемый пост)
число в какой-то системе счисления(тип string),n(основание СЧ числа А),m(основание новой СЧ для перевода).

чувствуете разницу? 

Vaz007, в общем зуб конечно не дам, но чисто визуально грубых ошибок не наблюдается.
(кода лишнего много, да).

PM MAIL   Вверх
borisbn
Дата 2.10.2012, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: 22
Всего: 135



Цитата(Vaz007 @  29.9.2012,  20:16 Найти цитируемый пост)
if((int(A[i]))-55>=n )

а что за magic number 55 ?
эту проверку:
Цитата(Vaz007 @  29.9.2012,  20:16 Найти цитируемый пост)
if (n<2 || n>36 || m<2 || m>36 )

стОит делать ДО цикла for(int i... ?
и вообще, из-за вашего форматирования код очень плохо читается. Если себя не уважаете, уважайте хоть тех, к кому обращаетесь за помощью


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1081 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.