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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2013, 18:48   #1
CHESNOK
 
Регистрация: 17.03.2013
Сообщений: 8
По умолчанию Множество целых чисел в С++

Ребят нужна ваша помощь. Есть задача, в которой обязательным условием является проверка вводимого числа на букву, то есть если пользователь ввёл букву, то программа протестует и требует повторного ввода, пока не будет введена цифра. Вопрос, как обозначить в условии множество целых чисел если это возможно.

Мои соображения:
Код:
#include <iostream.h>
int main()
{
	int n;
	cin>>n;
	if(n!=(множество целых чисел))
	while(true);
	{
		cin>>n;
		if(n==(множество целых чисел))
		break;
	}
	cout<<n<<endl;
}
(множество целых чисел) нужно заменить на программное условие.
Есть идеи?
CHESNOK вне форума Ответить с цитированием
Старый 17.05.2013, 19:06   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Код:
if(is_right_number(n)) //...


bool is_right_number(int n){
  static const int* allowed = {1, 4, 17, 48, 59, 284, 673, 779, 2056, 15575, 0};
  for(int* cur = allowed; *cur != 0; ++cur) if(*cur == n) return true;
  return false;
}
Abstraction вне форума Ответить с цитированием
Старый 17.05.2013, 19:46   #3
CHESNOK
 
Регистрация: 17.03.2013
Сообщений: 8
По умолчанию

Можете разъяснить код?
CHESNOK вне форума Ответить с цитированием
Старый 17.05.2013, 19:52   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Можете разъяснить код?
Здесь описывается массив allowed, в который уже константно введены числа.
Далее проход по нему в цикле, и определение, попадает ли число n в это множество.
Цитата:
есть если пользователь ввёл букву, то программа протестует и требует повторного ввода
Обязательно cin использовать? Не знаю есть ли в нем проверки на ввод - scanf такие проверки содержит, и вполне покажет, если пользователь ввел что-то не числовое. Может использовать его?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.05.2013, 20:54   #5
CHESNOK
 
Регистрация: 17.03.2013
Сообщений: 8
По умолчанию

Можно его, как?
CHESNOK вне форума Ответить с цитированием
Старый 17.05.2013, 21:11   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
if(scanf("%d",&Переменка)!=1){ ввод неверный. Повторить ввод.}
Он возвращает кол-во преобразованных успешно. Если оно не совпадает с кол-вом заданных в маске то ошибка.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.05.2013, 22:16   #7
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Можете разъяснить код?
n проверяется функцией is_right_number.
В данном случае функция проверяет принадлежность к заданному множеству чисел, не включающему ноль. Вот такая функция, к примеру, проверяет, верно ли, что n делится на два, но не на три:
Код:
bool is_right_number(int n){
  return (n%2 == 0) && (n%3 != 0);
}
Можете составить своё, сколь угодно сложное или простое условие.
Abstraction вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализовать класс МНОЖЕСТВО (целых чисел). eduard 038 Visual C++ 1 18.05.2012 17:49
Множество, содержащее натуральные числа из первой сотни. Сформировать новое множество из простых чисел первого множества Aimet Паскаль, Turbo Pascal, PascalABC.NET 3 16.06.2011 20:50
C++ Класс множество целых чисел Танюня Помощь студентам 7 27.02.2011 16:21