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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.09.2013, 21:39   #1
prem1era
Пользователь
 
Аватар для prem1era
 
Регистрация: 16.11.2009
Сообщений: 33
По умолчанию Найти ошибку

Дано натуральное число n. Удалить из записи числа все нули и единицы. Подсчитать количество оставшихся чисел в изображенном числе.
Код:
#include "stdio.h"

int main()
{
	int c,s=0,n;
		printf("Введите натуральное число=");
		scanf("%d",&n);
		if(n<=0)
			return 1;
		else
			for(c=0;n>0;n/=10)
				{if(n%10>1)
				{
					c++;
					s*=10;
					s+=n%10;
				}
			}
				printf("Новое число=%d\nКоличество новых чисел=%d\n",c,s);
				return 0;
	}
В переменную С у меня записывается количество оставшихся чисел после удаления это работает правильно а вот в S у меня записывается преобразованное число и туда как раз оно пишется не верно, а точно если ввести небольшое число то оно запишется задом на перед а если ввести большое число то оно тоже запишется задом наперед и еще появятся лишние цифры при этом переменная C будет показывать правильное значение.
prem1era вне форума Ответить с цитированием
Старый 23.09.2013, 22:56   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
#include "stdio.h"

int main()
{
    int c=0,s=0,n=18029;
    for(int i=1;n;n/=10){
        if(n%10>1){
            s+=i*(n%10);
            i*=10;
            c++
        }
    }
				printf("Новое число=%d\nКоличество новых чисел=%d\n",s,c);
				return 0;
	}
Годится?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.09.2013, 23:12   #3
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,679
По умолчанию

поставьте обязательно
Код:
c++;

P.S. prem1era когда вводите значения для преобразования, не забывайте, что тип int имеет определенный диапазон значений.
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!

Последний раз редактировалось Bugrimov; 23.09.2013 в 23:14.
Bugrimov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти ошибку ? Андрей445232 Помощь студентам 0 21.12.2012 21:42
найти ошибку Яська Помощь студентам 1 04.04.2010 17:23
Найти ошибку stanBRY Общие вопросы C/C++ 17 29.03.2010 23:16
найти ошибку rUs_LAN Общие вопросы C/C++ 8 14.05.2009 12:02