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

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

Восстановить пароль Регистрация
 
Shevva
 Аватар для Shevva
17 / 17 / 0
Регистрация: 13.09.2009
Сообщений: 140
09.02.2010, 13:27     Найти все четырёхзначные числа #1
Всем привет, объясните мне пожалуйста задачу, она заключается в том, что бы найти все четырёхцыфровые числа, в записи которых не больше двоих одинаковых цыфр. Вот её код:
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++
C++ Найти все трехзначные числа, квадраты которых оканчиваются тремя цифрами, которые и составляют искомые числа
Вывести все четырёхзначные числа, сумма чисел которых равна заданному числу C++
Найти все числа меньшие числа Мерсенна C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
09.02.2010, 13:32     Найти все четырёхзначные числа #2
Что конкретно тебе непонятно?
Shevva
 Аватар для 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
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
09.02.2010, 13:39     Найти все четырёхзначные числа #4
Цитата Сообщение от Shevva Посмотреть сообщение
Цитата:Сообщение от Shevva
ofstream on; on.open("numbers.txt");
Объявляется файловый поток вывода. Вывод производится в файл numbers.txt


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

Вообще код какой-то корявый. Непонятно, зачем делать динамические массивы, зачем нужен второй массив и т.д.
Shevva
 Аватар для Shevva
17 / 17 / 0
Регистрация: 13.09.2009
Сообщений: 140
09.02.2010, 13:47  [ТС]     Найти все четырёхзначные числа #5
а как ты бы посоветовал?
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
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
 Аватар для Shevva
17 / 17 / 0
Регистрация: 13.09.2009
Сообщений: 140
09.02.2010, 14:11  [ТС]     Найти все четырёхзначные числа #7
нет, не считается
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
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
 Аватар для Shevva
17 / 17 / 0
Регистрация: 13.09.2009
Сообщений: 140
09.02.2010, 14:15  [ТС]     Найти все четырёхзначные числа #9
да, ты правильно понял
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
09.02.2010, 14:22     Найти все четырёхзначные числа #10
Напоминаю, массив уже отсортирован
Shevva
 Аватар для 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++ Составьте программу, позволяющую найти все числа Фибоначчи, меньшие заданного числа N
C++ Найти все четырехзначные числа, у которых все цифры различны
Найти все простые числа, не превосходящие заданного числа, сумма цифр которых, также является простым числом C++

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

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

Текущее время: 01:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru