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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.05.2013, 09:56   #1
retrix147
 
Регистрация: 25.09.2010
Сообщений: 9
Вопрос Числа и символы

Наверное такой вопрос не раз уже задавался, но внятного ответа я не нашел =( Короче, если есть переменная типа int, которую вводит пользователь.Однако пользователь оказался жутко косым. И вместо цифры он попал на , к примеру, клавишу w и ввел это.То программа сразу завершится.Вопрос: как не допустить такого завершения?
retrix147 вне форума Ответить с цитированием
Старый 01.05.2013, 10:16   #2
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Код:
...

size_t number; bool exp=0;
    do 
    {
        std::cin.clear(); fflush(stdin);

        std::cout<< "Выберете интересующий предмет: \n";
        std::cout<< "1. Цилиндр\n";
        std::cout<< "2. прямоугольный параллелепипед\n";
        std::cout<< "3. Куб\n";
        std::cout<< "4. Пирамида\n\n";

        std::cout<< "0. Выход\n";
        std::cin >> number;

        exp = (!std::cin) || number>4;
        if(exp) { std::cout<< "Введите корректное число\n"; }
    } while ( exp );

...
_Bers вне форума Ответить с цитированием
Старый 01.05.2013, 14:04   #3
retrix147
 
Регистрация: 25.09.2010
Сообщений: 9
По умолчанию

Я тут посмотрел информацию о формате size_t. Похоже он жрет неплохой объем памяти( конечно в вашем примере это несущественно, но всё же).Менее ресурсозатратного выхода нет?
retrix147 вне форума Ответить с цитированием
Старый 01.05.2013, 14:24   #4
kineziz
Форумчанин
 
Регистрация: 22.12.2011
Сообщений: 378
По умолчанию

Код:
size_t
это вроде
Код:
typedef unsigned int size_t
Почему он должен жрать много памяти. Unsigned int занимает 4 байта памяти в 32-разрядных и 2 байта в 16-разрядных системах. Можно сделать вывод что size_t занимает столько же байт, как и unsigned int и столько же байт, как и int. Если требуется экономия, то тип char можно использовать
Большинство хороших программистов делают свою работу не потому, что ожидают оплаты или признания, а потому что получают удовольствие от программирования.

Последний раз редактировалось kineziz; 02.05.2013 в 01:25.
kineziz вне форума Ответить с цитированием
Старый 01.05.2013, 18:43   #5
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от retrix147 Посмотреть сообщение
Я тут посмотрел информацию о формате size_t. Похоже он жрет неплохой объем памяти( конечно в вашем примере это несущественно, но всё же).Менее ресурсозатратного выхода нет?
Код:
typedef unsigned char uchar;
uchar Select()
{
    uchar number; bool exp=0;
    do 
    {
        //std::cin.clear(); fflush(stdin);

        std::cout<< "Выберете интересующий предмет: \n";
        std::cout<< "1. Цилиндр\n";
        std::cout<< "2. прямоугольный параллелепипед\n";
        std::cout<< "3. Куб\n";
        std::cout<< "4. Пирамида\n\n";

        std::cout<< "0. Выход\n";
        std::cin >> number;
        
        const char beg = 0;
        const char end = 4;

        exp = number<48+beg || number>48+end;

        //exp = (!std::cin) || (number<48 || number>57);
        if(exp) { std::cout<< "Введите корректное число\n"; }
    } while ( exp );
    return number;
}
_Bers вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать программу,имеющая процедуру,кторая в производном текстовом файле,которая имеет слова и числа,изменяющая все числа числа,ме Fingergod Паскаль, Turbo Pascal, PascalABC.NET 0 13.12.2012 20:08
Задачи в ТурбоПаскаль: найти числа Армстронга и просуммировать числа в последовательности номера которых простые числа Lena1808 Помощь студентам 1 17.05.2012 08:00
Даны натуральное число n и символы s1,...,sn. Получите все символы, расположенные до первого двоеточия (Pascal) Татьана Помощь студентам 16 22.09.2011 15:05
Разбор целого числа на отдельные символы Crystallon Общие вопросы Delphi 4 12.09.2010 20:20
СИМВОЛЫ - помогите решить задачу на символы kiko Паскаль, Turbo Pascal, PascalABC.NET 5 30.11.2008 16:09