Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 27
1

Найти все трехзначные числа, которые состоят из разных цифр, а их сумма равна А

18.06.2013, 18:55. Показов 3591. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Найти все трехзначные числа, которые состоят из разных цифр, а их сумма равна А (А вводится с клавиатуры).
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.06.2013, 18:55
Ответы с готовыми решениями:

Найти все трёхзначные числа, которые состоят из разных цифр, а их сумма равна заданному числу
Помогите решить в С++ 2.2 Найти все трехзначные числа, которые состоят из разных цифр, а их сумма...

Найти все трехзначные числа, которые состоят из разных цифр, а их сумма равна А
2 Найти все трехзначные числа, которые состоят из разных цифр, а их сумма равна А (А вводится с...

Найти все трехзначные числа, которые состоят из разных цифр, а их сумма равна А
Задача №1. Дано натуральное число: - найти первую и последнюю цифры числа; - верно ли, что...

Найти все трёхзначные натуральные числа, которые состоят из разных цифр, а само число делится на 3
Здравствуйте. Нужно решить задачу. Найти все трёхзначные натуральные числа, которые состоят из...

18
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
18.06.2013, 23:42 2
Если правильно понял
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
using namespace std;
 
int main()
{
int A;
cout <<" Enter A"<<"\n";
cin >> A;
for (int i = 1; i < 9; ++i)
for (int j = 0; j < 10; ++j)
for (int k = 0; k < 10; ++k)
if ((i+j+k == A)&&((i != j)&&(j != k)&&(i != k)))
cout << i << j << k << "\n";
 
return 0;
}
0
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 27
19.06.2013, 00:22  [ТС] 3
тута вроде как результат нигде не выявляет?!
0
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
19.06.2013, 00:31 4
Допишите после
C++
1
2
cout <<" Enter A"<<"\n";
cin >> A;
такую строку
C++
1
cout <<"     Otvet   "<<"\n\n";
0
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 27
19.06.2013, 12:38  [ТС] 5
не все равно нету
0
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
19.06.2013, 14:52 6
Результат работы.
У меня стоит кодеблок 10.05,если у вас что то другое заголовки наверное будут другими и в конце программы тоже.Я с другими средами не работал и точно не скажу.Делайте как обычно вы делаете в своей среде.
Вложения
Тип файла: docx скрин 19.docx (22.3 Кб, 15 просмотров)
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
19.06.2013, 14:58 7
Дело в том, что IDE CodeBlocks удерживает консоль после завершения работы программы. VS, например, этого не делает и требует явно указать паузу. system("pause") (#include <cstdlib>) либо _getch() (#include <conio.h>)


Genn55, обычно скрины делают как картинки. Для того, чтобы вставить их в текст, необходимо после загрузки нажать еще раз на кнопку "Вложения" и выбрать их из списка.
0
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 27
19.06.2013, 15:10  [ТС] 8
у меня Microsoft Visual Studio 2010 Ultimate
делала все как надо
вот что в окне у меня
Миниатюры
Найти все трехзначные числа, которые состоят из разных цифр, а их сумма равна А  
0
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 27
19.06.2013, 15:11  [ТС] 9
Genn55, для скриншотов могу посоветовать FastStone Capture
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
19.06.2013, 15:23 10
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <clocale>
#include <conio.h>
 
int main()
{
    setlocale(LC_ALL, "");
    int A;
    std::cout <<"Введита А: ";
    std::cin >> A;
    for (int i = 1; i < 9; ++i)
        for (int j = 0; j < 10; ++j)
            for (int k = 0; k < 10; ++k)
                if (i + j + k == A && i != j && j != k && i != k)
                    std::cout << i << j << k << "\n";
    _getch();
}
Вам количество требуется?
0
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 27
19.06.2013, 15:27  [ТС] 11
ДА не вроде ? Про количество ни чего не сказано)))

Цитата Сообщение от minowa Посмотреть сообщение
Найти все трехзначные числа, которые состоят из разных цифр, а их сумма равна А (А вводится с клавиатуры).
0
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
19.06.2013, 19:51 12
Это у меня
Миниатюры
Найти все трехзначные числа, которые состоят из разных цифр, а их сумма равна А  
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
19.06.2013, 19:56 13
Цитата Сообщение от Genn55 Посмотреть сообщение
for (int i = 1; i < 9; ++i)
А почему первое число 1.....8?
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
19.06.2013, 20:05 14
с меньшим количеством проверок:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include<stdio.h>
#define MAX(x,y) ((x) > (y) ? (x) : (y))
#define MIN(x,y) ((x) < (y) ? (x) : (y))
int Print(int a)
{
   int i, j, k, n1 = 0, n2 = 0;
   if(a < 6 || a > 24)
      return 0;
   for(i = MAX(1, a - 17); i <= MIN(7, a - 5); ++i)
      for(j = i + 1; j <= MIN(8, a - i - 3); ++j)
         for(k = j + 1; k <= MIN(9, a - i - j); ++k)
            if (i + j + k == a)
            {
               printf("%d%d%d\n", i, j, k);
               printf("%d%d%d\n", i, k, j);
               printf("%d%d%d\n", j, i, k);
               printf("%d%d%d\n", j, k, i);
               printf("%d%d%d\n", k, i, j);
               printf("%d%d%d\n", k, j, i);
            }
}
 
int main(int argc, char* argv[])
{
   Print(15);
   return 0;
}
Добавлено через 8 минут
Эммм... только для чисел, не содержащих цифру 0...
1
0 / 0 / 0
Регистрация: 13.06.2013
Сообщений: 27
19.06.2013, 23:40  [ТС] 15
Спасибо всем)
0
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
20.06.2013, 02:13 16
Thinker, вы правы в этом цикле у меня ошибка
C++
1
for (int i = 1; i < 9; ++i)
правильно будет
C++
1
for (int i = 1; i <= 9; ++i)
Я с вашего позволения подправил ваш код,если я все правильно понял то он работает и с 0.0 же тоже цифра.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include<stdio.h>
using namespace std;
 
#define MAX(x,y) ((x) > (y) ? (x) : (y))
#define MIN(x,y) ((x) < (y) ? (x) : (y))
void Print(int a);
 
int main()
{
int a;
cout << " Enter A"<<"\n";
cin >> a;
cout << "   Otvet  " << "\n\n";
Print(a);
return 0;
}
void Print(int a)
{
    {
   int i, j, k;
   if(a < 3 || a > 24)
   cout << " No!!"<<"\n";
    for(i = MAX(0, a - 20); i <= MIN(7, a - 2); ++i)
      for(j = i + 1; j <= MIN(8, a - i - 1); ++j)
         for(k = j + 1; k <= MIN(9, a - i - j); ++k)
            if (i + j + k == a)
            {
               printf("%d%d%d\n", i, j, k);
               printf("%d%d%d\n", i, k, j);
               printf("%d%d%d\n", j, i, k);
               printf("%d%d%d\n", j, k, i);
               printf("%d%d%d\n", k, i, j);
               printf("%d%d%d\n", k, j, i);
            }
}
}
Но в этом случае выигрыша я не заметил.Возможно будет заметно при больших числах.И вы не смогли бы мне по простому на пальцах объяснить работу макрокоманд.Я новичок в программировании, изучаю самостоятельно и спрашивать не у кого.Читаю ,но пока толку мало.Пробовал сам создать макрокоманду ничего не получилось,а готовые работают.
C++
1
2
#define MAX(x,y) ((x) > (y) ? (x) : (y))
#define MIN(x,y) ((x) < (y) ? (x) : (y))
Смысл понятен,а как они работают в программе так и не понял и в каких случаях их применять тоже пока не понимаю.Если не трудно пожалуйста объясните.
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
20.06.2013, 02:34 17
Genn55, это макросы с тернарным оператором. Переменные в макросах записываются в круглые скобки, а дальше, после того, как прочтете про тернарный оператор, все поймете.

Просто когда компиль встречает выражение, идущее за define, оно заменяет его тем, что идет правее.
0
413 / 250 / 118
Регистрация: 26.12.2012
Сообщений: 787
20.06.2013, 02:55 18
Тернарный оператор это вот это?
C++
1
((x) > (y) ? (x) : (y))
Это выражение я понимаю так:если x > y x = y иначе x = x; верно?
что выражение, идущее за define, оно заменяет его тем, что идет правее,причем всегда это я тоже понял.Ну а в чем разница если я напишу такую же функцию и применю к ней inline инструкцию в чем будет разница?
0
Форумчанин
Эксперт CЭксперт С++
8215 / 5045 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
20.06.2013, 03:08 19
Genn55, это означает вот что:
если x > y, то x, иначе y
1
20.06.2013, 03:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.06.2013, 03:08
Помогаю со студенческими работами здесь

Найти все трехзначные числа, состоящие из разных цифр, сумма которых равна А
Найти все трехзначные числа, которые состоят из разных цифр, а их сумма ровна А (число А вводится с...

Найти все трехзначные натуральные числа, сумма цифр которых равна В, а само число состоит из разных цифр
using System; using System.Collections.Generic; using System.Linq; using System.Text; ...

Найти все трехзначные натуральные числа, сумма цифр которых равна В, а само число состоит из разных цифр
Найти все трехзначные натуральные числа, сумма цифр которых равна В, а само число состоит из...

Найти все трехзначные натуральные числа, сумма цифр которых равна В, а само число состоит из разных цифр
Выполнить задание на C# Найти все трехзначные натуральные числа, сумма цифр которых равна В, а...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru