Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Shevva
17 / 17 / 0
Регистрация: 13.09.2009
Сообщений: 140
#1

Найти все четырёхзначные числа - C++

09.02.2010, 13:27. Просмотров 874. Ответов 11
Метки нет (Все метки)

Всем привет, объясните мне пожалуйста задачу, она заключается в том, что бы найти все четырёхцыфровые числа, в записи которых не больше двоих одинаковых цыфр. Вот её код:
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
38
39
40
41
42
43
44
using namespace std;
 
#include <iostream>
#include <fstream>
 
int main ()
{
int *mas1=new int[4], *mas2=new int[10], a=0, b=0, c=0;
ofstream on;
on.open("numbers.txt");
for (int i=1000; i<=9999; i++)
{
a=i;
mas1[3]=a%10;
a/=10;
mas1[2]=a%10;
a/=10;
mas1[1]=a%10;
mas1[0]=a/10;
b=0;
for (int u=0; u<10; u++)
{mas2[u]=0;}
for (int j=0; j<4; j++)
{
mas2[mas1[j]]++;
}
for (int j=0; j<10; j++)
{
if (mas2[j]>2)
b++;
}
if (b==0)
{
c++;
on<<i<<endl;
}
}
on<<endl<<"Takih chisel: "<<c<<endl;
cout<<"Takih chisel: "<<c<<endl;
 
delete mas1, mas2;
system ("Pause");
return 0;
}
Объясните мне его пожалуйста.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2010, 13:27     Найти все четырёхзначные числа
Посмотрите здесь:

C++ Найти все натуральные числа, не превосходящие заданного числа
C++ Найти все двузначные числа, сумма цифр которых не меняется при умножении числа на 2,3,4,5,6,7,8,9
Два двузначных числа, записанных подряд, образуют четырехзначное число, которое нацело делится на их произведение. Найти все такие числа C++
C++ Найти все трехзначные числа, в которых все цифры различны.
C++ Найти все трехзначные числа, квадраты которых оканчиваются тремя цифрами, которые и составляют искомые числа
Найти все натуральные числа, не превосходящие числа n, которые можно представить в виде суммы слагаемых C++
C++ Найти все двузначные числа, сумма цифр которых не меняется при умножении числа на 2, 3, 4, 5, 6, 7, 8, 9
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
5767 / 3416 / 255
Регистрация: 08.02.2010
Сообщений: 7,441
09.02.2010, 13:32     Найти все четырёхзначные числа #2
Что конкретно тебе непонятно?
Shevva
17 / 17 / 0
Регистрация: 13.09.2009
Сообщений: 140
09.02.2010, 13:33  [ТС]     Найти все четырёхзначные числа #3
Цитата Сообщение от Shevva Посмотреть сообщение
ofstream on; on.open("numbers.txt");
Цитата Сообщение от Shevva Посмотреть сообщение
a/=10;
чёт типа такого
Nameless One
Эксперт С++
5767 / 3416 / 255
Регистрация: 08.02.2010
Сообщений: 7,441
09.02.2010, 13:39     Найти все четырёхзначные числа #4
Цитата Сообщение от Shevva Посмотреть сообщение
Цитата:Сообщение от Shevva
ofstream on; on.open("numbers.txt");
Объявляется файловый поток вывода. Вывод производится в файл numbers.txt


Цитата Сообщение от Shevva Посмотреть сообщение
Цитата:Сообщение от Shevva
a/=10;
Эта запись эквивалентна a=a/10

Вообще код какой-то корявый. Непонятно, зачем делать динамические массивы, зачем нужен второй массив и т.д.
Shevva
17 / 17 / 0
Регистрация: 13.09.2009
Сообщений: 140
09.02.2010, 13:47  [ТС]     Найти все четырёхзначные числа #5
а как ты бы посоветовал?
Nameless One
Эксперт С++
5767 / 3416 / 255
Регистрация: 08.02.2010
Сообщений: 7,441
09.02.2010, 14:09     Найти все четырёхзначные числа #6
Можно отсортировать массив mas1 по возрастанию и сравнивать рядом стоящие цифры.
Что-то типа того (уже после сортировки массива):
C++
1
2
3
4
5
6
7
8
9
10
11
12
int s=1;
int k=0;
while(k<4)
{
    if(mas1[l]==mas1[k+1])
        s++;
    i++;
}
if(s>2)
    //Код если встретилось число, в котором больше двух одинаковых цифр
else
    //В противном случае
Добавлено через 12 минут
Кстати, по вопрос по постановке задачи: число 1122, к примеру, считается числом, в котором более двух одинаковых цифр?
Shevva
17 / 17 / 0
Регистрация: 13.09.2009
Сообщений: 140
09.02.2010, 14:11  [ТС]     Найти все четырёхзначные числа #7
нет, не считается
Nameless One
Эксперт С++
5767 / 3416 / 255
Регистрация: 08.02.2010
Сообщений: 7,441
09.02.2010, 14:13     Найти все четырёхзначные числа #8
То есть нужно найти все числа, в которых любая цифра повторяется не более двух раз?
Тогда немножко по-другому:
C++
1
2
3
4
if((mas1[0]==mas1[1]==mas1[2])||(mas1[1]==mas1[2]==mas1[3]))
    //встретилось число, в котором больше двух одинаковых цифр
else
    //не встретилось
Shevva
17 / 17 / 0
Регистрация: 13.09.2009
Сообщений: 140
09.02.2010, 14:15  [ТС]     Найти все четырёхзначные числа #9
да, ты правильно понял
Nameless One
Эксперт С++
5767 / 3416 / 255
Регистрация: 08.02.2010
Сообщений: 7,441
09.02.2010, 14:22     Найти все четырёхзначные числа #10
Напоминаю, массив уже отсортирован
Shevva
17 / 17 / 0
Регистрация: 13.09.2009
Сообщений: 140
09.02.2010, 14:25  [ТС]     Найти все четырёхзначные числа #11
ну да, отсортирован
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.02.2010, 14:39     Найти все четырёхзначные числа
Еще ссылки по теме:

Вывести все четырёхзначные числа, сумма чисел которых равна заданному числу C++
C++ Найти все четырехзначные числа, у которых все цифры различны
C++ Найти все такие числа k, что k-я строка совпадает с k-м столбцом. Найти наибольший элемент главной диагонали
Найти все числа меньшие числа Мерсенна C++
C++ Найти все четырехзначные числа, у которых все цифры различны

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

Или воспользуйтесь поиском по форуму:
Nameless One
Эксперт С++
5767 / 3416 / 255
Регистрация: 08.02.2010
Сообщений: 7,441
09.02.2010, 14:39     Найти все четырёхзначные числа #12
Решение смотрим моим постом №8 выше
Yandex
Объявления
09.02.2010, 14:39     Найти все четырёхзначные числа
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru