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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2013, 22:28   #1
GrimSpirit
Новичок
Джуниор
 
Регистрация: 04.11.2013
Сообщений: 3
По умолчанию

здравствуйте.
прошу помочь мне (новичку) с простой программой.
через консоль вводятся натуральные числа, из которых нужно отобрать те, в которых нет 0, и дальше совершить некоторые операции. вопрос: как проверить, есть ли в числе 0 через остаток от деления?
извиняюсь, язык- С++.

вот моя задача:
//Задача решается без использования массивов и строк!
//Последовательно вводится некоторое количество натуральных чисел.
//Напечатать диапазон изменения тех чисел, в записи которых не содержится нуля.


нужен какой-то фильтр, чтобы не рассматривать числа с 0 (102 или 10 к примеру)

Последний раз редактировалось ACE Valery; 04.11.2013 в 23:20.
GrimSpirit вне форума Ответить с цитированием
Старый 04.11.2013, 22:49   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Примерно:
Код:
bool
isbad(int a)
{
    while(a && (a % 10)) a /= 10;
    return a;
}
Использование:
Код:
cin>>x;
if (isbad(x)) continue;
Удалять сообщения не получится (только модераторы могут).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 04.11.2013, 23:00   #3
GrimSpirit
Новичок
Джуниор
 
Регистрация: 04.11.2013
Сообщений: 3
По умолчанию

в общем, пока что программка выглядит так:
Код:
#include<iostream>
using namespace std;

int main(){
	int x, min=1, max=1,d;
	cout<<"input numbers"<<endl;
		while(x!=0){
			cin>>x;
			min=x;max=x;
		if(x>max){max=x;}
		if(x<min && x!=0){min=x;}
		}
		d=max-min;
	cout<<"min="<<min<<endl;
	cout<<"max="<<max<<endl;
	cout<<"diapazon="<<d<<endl;
	system("pause");
	return 0;
		}
как бы так добавить булеановскую функцию проверки числа в функцию мэйн?

Последний раз редактировалось ACE Valery; 04.11.2013 в 23:19.
GrimSpirit вне форума Ответить с цитированием
Старый 04.11.2013, 23:09   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Не проверял:
Код:
#include<iostream>
using namespace std;

bool
isbad(int a)
{
    while(a && (a % 10)) a /= 10;
    return a;
}

int
main()
{
    int x, min, max;
    cout << "input numbers" << endl;
    cin >> x;
    if (x > 0) {
        max = min = x;
        while(x != 0) {
            cin >> x;
            if (x <= 0 || isbad(x)) continue;
            if(x > max)
                max = x;
            else if(x < min)
                min = x;
        }
        cout << "min = " << min << endl << " max = " << max << endl << " diapazon = " << (max - min) << endl;
    } else
        cout << "empty" << endl;
    system("pause");
    return 0;
}
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 04.11.2013, 23:35   #5
GrimSpirit
Новичок
Джуниор
 
Регистрация: 04.11.2013
Сообщений: 3
По умолчанию

огромное вам спасибо.
если можно, проясните мне 1 момент:
while(a && (a % 10)) a /= 10;
return a;

что означает "(a" в 1 условии? (a пока a O_o)
остальное понятно, пока делится -делим (a/=10) и в итоге возвращается булевое значение, 1 или 0


"Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )"
язык С++, как мне это отметить?

Последний раз редактировалось GrimSpirit; 04.11.2013 в 23:43.
GrimSpirit вне форума Ответить с цитированием
Старый 05.11.2013, 00:28   #6
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

1) Пожалуйста.
2) while (a && (a % 10)) - выполняй, пока a отлично от 0 и остаток от деления a на 10 не равен 0.
3) Вы писали в профильном разделе и с примером кода, поэтому язык указывать не нужно (эта надпись, всего лишь моя подпись - многие любят писать вопросы, но не указывают язык).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 05.11.2013 в 00:30.
BDA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
замена битов в числе Вечный_студент Помощь студентам 11 08.05.2012 00:21
Есть окно, в котором есть аналог Memo. Как из него вытащить текст? TwiX Общие вопросы Delphi 6 16.06.2011 13:58
Перестановка цифр в числе lisenog Помощь студентам 7 22.10.2010 01:33
Я-чайник (в excel) - у меня есть к Вам просьба, если есть желание и время - помогите. rococococo Microsoft Office Excel 0 04.10.2009 12:16
Как проверть, есть ли в числе запятая? Look Общие вопросы C/C++ 5 06.11.2007 21:27