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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.12.2012, 02:23   #1
Anya She
Пользователь
 
Аватар для Anya She
 
Регистрация: 06.11.2012
Сообщений: 40
Печаль С++ Выяснить, есть ли в записи натурального числа N две одинаковые цифры.

Что-то у меня не так... В том,что я написала в цикле выполняются сразу как бы 2 условия. Я не могу сообразить как бы так их разграничить.. подскажите, плиз
Код:
// Выяснить, есть ли в записи натурального числа N две одинаковые цифры.

#include<iostream>
using namespace std;

int main()
{
	setlocale(0, "");
	int n;
	cout << "Введите натуральное число:  " << endl;
	cin >> n;
	int s=n;
	int k=0, t=0;
	int vsp=0, vsp2=0;
	while(n!=0)
	{
		k=s%10;
		if(k!=t)
			vsp+=1;	
		n=n/10;
		if(t=k)
			vsp2+=1;		
	}
	if(vsp>0)
		cout << "нет" << endl;
	if(vsp2>0)
		cout << "есть" << endl;	
	system("pause");
	return 0;

}
Anya She вне форума Ответить с цитированием
Старый 19.12.2012, 08:31   #2
KooKish
Улыбаемся :)
Пользователь
 
Регистрация: 18.12.2012
Сообщений: 74
По умолчанию

Как-то так
Код:
#include<iostream>
#include"conio.h"
using namespace std;

int main()
{
	setlocale(0, "");
	int n;
	cout << "Введите натуральное число:  " << endl;
	cin >> n;
	int s=n/10;
	int k=0, t=0;
	int vsp=0;
	while(n!=0)
	{
		k=n%10;
		while(s!=0)
		{
			t=s%10;
			if(t==k)
			{
				vsp+=1;
			}
			s=s/10;
		}
		n=n/10;
		s=n/10;
	}
	if(vsp>0)
	{
		cout << "есть" << endl;
	}
	else
	{
		cout << "нет" << endl;
	}
	getch();

}
Не забываем про весы.
KooKish вне форума Ответить с цитированием
Старый 21.12.2012, 15:38   #3
Anya She
Пользователь
 
Аватар для Anya She
 
Регистрация: 06.11.2012
Сообщений: 40
По умолчанию

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

Код:
// Выяснить, есть ли в записи натурального числа N две одинаковые цифры.

#include<iostream>
using namespace std;

int main()
{
	setlocale(0, "");
	int n;
	cout << "Введите натуральное число:  " << endl;
	cin >> n;
	int s=n;
	int k=0, t=0;
	int vsp=0;
	while(s!=0)
	{
		k=s%10;
		s=s/10;
		t=s%10;
		if(t==k)
			vsp+=1;		
	}
	if(vsp>0)
		cout << "есть" << endl;
	else
		cout << "нет" << endl;
	system("pause");
	return 0;

}
Anya She вне форума Ответить с цитированием
Старый 21.12.2012, 15:57   #4
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

Anya She

вот я написала проще код. Но однако он не выполняется если цифры стоят не подряд..

код слишком замороченный, а потому скорее всего не правильный (:
И не удовлетворяет принципу KISS, (в оригинале "keep it simple, stupid"), что можео перевести примерно как "не усложняй код, придурок!" (или, в случае с женским полом, "не усложняй код, дурында!" :lol: )

Код:
int digits[10] = {0};

int n;
std::cin >> n;

for (; n; n /= 10)
{
    if (++digits[n % 10] >= 2)
    {
        std::cout << "Есть, насяльника!" << std::endl;
        break;
    }
}
Rififi вне форума Ответить с цитированием
Старый 21.12.2012, 16:04   #5
Anya She
Пользователь
 
Аватар для Anya She
 
Регистрация: 06.11.2012
Сообщений: 40
По умолчанию

Хаха) только нельзя мне не усложнять!) в том то и дело что надо всё через циклы сделать. не проходим мы пока массивов,строк и прочих благ цивилизации! ну ладно видно нельзя его проще сделать. буду тогда через двойной while писать
Anya She вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
с++ Выяснить, образуют ли цифры данного натурального числа N воз- растающую последовательность. Anya She Помощь студентам 5 10.12.2012 14:51
выяснить, является ли последовательность цифр натурального числа при просмотре их справа налево возрастающей последовательностью Al'f!ra Паскаль, Turbo Pascal, PascalABC.NET 2 05.03.2012 19:13
Цифры заданного натурального числа запишите в обратном порядке Radius100 Помощь студентам 2 09.02.2012 11:39
найти все четырехзначные числа, в которых ровно две одинаковые цифры (турбо паскаль) SkuLLL Помощь студентам 5 23.01.2012 19:23