Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Максимальное число из введённого (многозначного) на C

10K
10 сентября 2007 года
m0zg
41 / / 11.10.2006
Задача следующая:
Вводим, например:
234
Max = 4

Вводим 8456
Max = 8

т.е. из числа нужно вытащить самую большую цифру. Кото-нибудь поможет? Си только начал изучать...
2.0K
10 сентября 2007 года
WidowMaker
212 / / 05.04.2005
прочитай строку и пройдись по ней....
Код:
const int maxSTR=1024;
char buf[maxSTR]={0};
 
scanf("%s",buf);
int ln=strlen(buf);
int maxnum=0;
for(int i=0;i<ln;i++)
{
if(!isnum(buf)) return 1;
if(maxnum<buf)
maxnum=buf;
}
247
10 сентября 2007 года
wanja
1.2K / / 03.02.2003
А если хочешь без строк, тогда так:
 
Код:
maxdig=0;
while(n!=0)
   {
   int d=n%10;
   d=d>maxdig?d:maxdig;
   n=n/10;
   }
10K
10 сентября 2007 года
m0zg
41 / / 11.10.2006
Я сделал немного по-другому

 
Код:
int a,s;

for( ; ; ){
    printf("Input value:");
    scanf("%d", &a);
    if(!a) break;
    for(s=0; a%10>s; s=a%10, a/=10);
    printf("s=%d", s);
}


Кажется так :). Но есть глюк. Числа более 10 знаков считаются не правильно...
12K
10 сентября 2007 года
lifs
163 / / 06.09.2007
2wanja: надо
 
Код:
maxdig=d>maxdig?d:maxdig;


2m0zg: неправильно, попробуй число 8143.
Внутренний цикле завершится, если следующая цифра будет меньше предыдущей, а остальные проверены не будут.

При более 10 знаков работать будет неправильно (да и при 10, не всегда) потому, что размер инта 32 бита и максимальное значение знакового = 2147483647.

Используй вариант wanja, поменяв строчку:
 
Код:
d=d>maxdig?d:maxdig;

на приведенную выше или вариант WidowMaker, если надо обработать длинное число.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог