Консультация онлайн # 161062

Раздел: С / С++
Автор вопроса: XaciH
Дата: 21.02.2009, 12:28 Консультация неактивна
Поступило ответов: 1
Доюрое время суток! Подскажите как решить задачу: дано натуралное число n определить какая цифра в нём расположена левее: максимальная или минимальная?

Ответ # 1, Evgenijm (Посетитель)

Здравствуйте, XaciH!

Хорошая задачка. Выглядит заковыристо, а решается очень легко. Самая правая цифра числа = Num%10. Чтобы убрать самую последнюю цифру надо сделать Num/=10. Проходим все цифры слева направо и обновляем свои индексы. Осталось вставить это в код функции и прописать вывод.


//Нам нужны: цифры
int Min, Max;

//Индексы цифр (справа)
int iMin, iMax;

//Текущий индекс
int CurIndex;

//Устанавливаем все на самую правую цифру
CurIndex = iMin = iMax = 0;
Min = Max = Num%10;

while((Num/=10)!=0)//Еще остались циферки
{
int Z=Num%10;
CurIndex++;

if(Z<=Min)
{
Min=Z;
iMin=CurIndex;
}

if(Z>=Max)
{
Max=Z;
iMax=CurIndex;
}
}

if(iMax > iMin)
{
//Max левее
}
else if(iMin > iMax)
{
//Min левее
}
else
{
//Min=Max
}

Evgenijm

Посетитель
21.02.2009, 13:21
Нет оценки ответа

Мини-форум консультации # 161062


Нет сообщений в мини-форуме
Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.