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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.10.2012, 20:40   #1
IKom
Пользователь
 
Регистрация: 26.09.2012
Сообщений: 12
По умолчанию Работа с числами в Си

Добрый вечер)))
Есть поставленная задача:

Дано натуральное число n.
1)Найти сумму минимальной и максимальной цифры.
2)Если соответствующая минимальная и максимальная цифра встречается в числе более одного раза,то в суммировании она участвует соответствующее число раз.

Вот пробный вариант первого пункта:
Код:
#include <stdio.h>
int main (void)
{
    int min,max,num;
    for (scanf("%d%",&num),
    num=((num<0) ? -num : num),
    min=num%10,
    num/=10;
    num=((num>0) ? +num : num),
    max=num%10,
    num*=10;
    num;
    num/=10,
    num*=10)
    {
            if ((num%10)<min) min=num%10;
            else ((num%10)>max) max=num%10;
            }
            printf("%d\n",min,max);
            }

Последний раз редактировалось Stilet; 06.10.2012 в 20:52.
IKom вне форума Ответить с цитированием
Старый 06.10.2012, 21:06   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

С потолка:
Код:
	int a[10]; for(int i=0;i<10;i++) a[i]=0;
	int i=232,k=0;
	for(;i;i/=10) a[i%10]++;
	for(i=0;i<10 && !a[i];i++);	 k+=a[i]*i; 
	for(i=9;i>=0 && !a[i];i--);	 k+=a[i]*i; 
	printf("%d",k);
	getchar();
	return 0;
Первое что пришло на ум.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.10.2012, 12:43   #3
IKom
Пользователь
 
Регистрация: 26.09.2012
Сообщений: 12
По умолчанию

Попробовал.Если я правильно понял,то этот код для 2-ого пункта...
Вот что получилось:


Код:
#include <stdio.h>
int main (void)
{
    int a[10],min,max,num;
    int i=232,k=0;
    for (scanf("%d%",&num),
    num=((num<0) ? -num : num),
    min=num%10,
    num/=10;
    num=((num>0) ? +num : num),
    max=num%10,
    num*=10;
    num,
    num/=10,
    num*=10)
    {
            if ((num%10)<min) min=num%10;
            else ((num%10)>max); max=num%10;
            }
            for(;i;i/=10) a[i%10]++;
            for (i=0;i<10 && !a[i];i++); k+=a[i]*i;
            for (i=9;i>=0 && !a[i];i--); k+=a[i]*i;
            printf("%d\n",k,min,max);
            getchar();
            return 0;
            }
Но программа странно работает:просто позволяет вводить числа и ничего больше!

Последний раз редактировалось Stilet; 07.10.2012 в 12:59.
IKom вне форума Ответить с цитированием
Старый 07.10.2012, 13:01   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А зачем ты мой пример со свои слил?
И вообще мой пример должен учитывать оба пункта. Грубо говоря - это вся программа.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.10.2012, 13:17   #5
IKom
Пользователь
 
Регистрация: 26.09.2012
Сообщений: 12
По умолчанию

Прошу прощения!!Не до конца понял!Сейчас попробую!
IKom вне форума Ответить с цитированием
Старый 07.10.2012, 13:30   #6
IKom
Пользователь
 
Регистрация: 26.09.2012
Сообщений: 12
По умолчанию

Пока не забыл!Я работаю под Windows 7 на Dev-C++!!!Я,вроде,слышал,что некоторые команды в Си не поддерживаются на Windows...
Программа работает,но странно!. Результат на фото!
Изображения
Тип файла: jpg программа.jpg (25.2 Кб, 129 просмотров)
IKom вне форума Ответить с цитированием
Старый 07.10.2012, 14:10   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Моя VS на ввод 712 (ведь это то число что ты вводишь?) выдает 8.
Все правильно. Что-то ты в коде еще навернул лишнего
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.10.2012, 14:39   #8
IKom
Пользователь
 
Регистрация: 26.09.2012
Сообщений: 12
По умолчанию

Вот код(еще один цикл for добавил для того,чтобы не выкидывало из программы!):

Код:
#include <stdio.h>
int main(void)
{
    for (;;)
    {
    int a[10]; 
    for(int i=0;i<10;i++) a[i]=0;
	int i=232,k=0;
	for(;i;i/=10) a[i%10]++;
	for(i=0;i<10 && !a[i];i++);	 k+=a[i]*i; 
	for(i=9;i>=0 && !a[i];i--);	 k+=a[i]*i; 
	printf("%d",k);
	getchar();
}
	return 0;
}

Последний раз редактировалось Stilet; 07.10.2012 в 14:57.
IKom вне форума Ответить с цитированием
Старый 07.10.2012, 14:58   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
еще один цикл for добавил для того,чтобы не выкидывало из программы!
Зачем??? Тут же нет ввода, как она может выкидывать?
Насчет кода - ошибок не вижу. А пустой цикл это гнобистика. Он тут как мертвому припарка.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.10.2012, 15:03   #10
IKom
Пользователь
 
Регистрация: 26.09.2012
Сообщений: 12
По умолчанию

У меня при компиляции сразу появляется число 7!После того,как дописываю цифру 12("получается" 712)нажимаю enter и в итоге ответ:777!!!
И без цикла этого,как ни странно,все равно выкидывает!!!

Последний раз редактировалось IKom; 07.10.2012 в 15:25.
IKom вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с числами на C++ Сержuk Помощь студентам 10 21.09.2011 03:29
Работа с числами Madara88 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 30.03.2011 17:34
работа с числами Tata4ka Помощь студентам 1 20.10.2010 16:13
Работа с числами в С++ Mashul'ka Помощь студентам 2 04.11.2009 14:36