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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2019, 08:03   #1
sesitos040387s
Пользователь
 
Аватар для sesitos040387s
 
Регистрация: 21.11.2019
Сообщений: 18
По умолчанию находит все четырехзначные числа abcd

находит все четырехзначные числа abcd из заданного интервала, для которых выполняются условия:
- между цифрами нет совпадений;
- ab-cd=a+b+c+d - старшие разряды минус младшие равны сумме цифр в числе.

#include <iostream>

using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");

char a, b, c, d;
int n, Tmp;

cout << "Naidennie chisla\n";
for (n = 2000; n < 2500; n++)
{
Tmp = n;
d = Tmp % 10;
Tmp /= 10;
c = Tmp % 10;
Tmp /= 10;
b = Tmp % 10;
Tmp /= 10;
a = Tmp % 10;

if (((a != b) && (a != c) && (a != d)) &&
(c != d))
{

if (((a * 10 + b) - (c * 10 + d)) == (a + b + c + d))
{

cout << n << "\n";
}
}
system("pause");
}
}

Не могу понять,почему не работает((
sesitos040387s вне форума Ответить с цитированием
Старый 26.12.2019, 08:32   #2
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 947
По умолчанию

вот решение немного в лоб, зато рабочее :D

Код:
#include <iostream>

int main () 
{
    setlocale (LC_ALL, "Russian");

    for (int a = 0; a < 10; a++)
    {
        for (int b = 0; b < 10; b++)
        {
            for (int c = 0; c < 10; c++)
            {
                for (int d = 0; d < 10; d++)
                {
                    if(a==b || a==c || a==d)continue;
                    if(        b==c || b==d)continue;
                    if(                c==d)continue;
                    
                    if(a*9-c*11-d*2!=0)continue; //ab-cd-a-b-c-d==0
                    
                    std::cout <<a*1000+b*100+c*10+d <<"\n";
                }
            }
        }
    }
}
Алексей1153 вне форума Ответить с цитированием
Старый 26.12.2019, 11:14   #3
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,534
По умолчанию

1. Ещё нет проверки на выход за пределы заданного интервала.
2. Проверки на одинаковость оптимальнее делать во внешних циклах.
Код:
    for (int a = 0; a < 10; a++)
    {
        for (int b = 0; b < 10; b++)
        {
            if(a==b) continue;
            for (int c = 0; c < 10; c++)
            ...................
digitalis вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
все четные четырехзначные числа, цифры которых следуют в порядке возрастания или убывания. PHP Anya She Помощь студентам 9 10.02.2015 17:51
С++ Получить все четырехзначные числа, в записи которых встречаются только цифры 0,2,3,7. Anya She Помощь студентам 1 18.12.2012 21:14
найти все четырехзначные числа, в которых ровно две одинаковые цифры (турбо паскаль) SkuLLL Помощь студентам 5 23.01.2012 19:23
проблемы с командой printf "abcd abcd\nabcd" | ./a.out NiCola999 Общие вопросы C/C++ 13 21.02.2010 17:23
найти все симметричные четырехзначные числа , например 7667, 1331 V I K T O R I Y A Паскаль, Turbo Pascal, PascalABC.NET 6 03.05.2009 15:47