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

Задачка - C++

Восстановить пароль Регистрация
 
CHELitw
0 / 0 / 0
Регистрация: 06.09.2012
Сообщений: 30
06.09.2012, 21:02     Задачка #1
Помогите решить вот такую вот задачку:
Получить все четырехзначные числа(1234,например),в которых не больше 2-х одинаковых цифр.Сколько таких чисел?
Тоесть вывести все числа,и выписать их количество.
Спасибо заранее.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.09.2012, 21:02     Задачка
Посмотрите здесь:

С++задачка C++
C++ задачка
задачка c++ C++
C++ задачка с++
Задачка C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zitxbit
Master C/C++
 Аватар для zitxbit
86 / 738 / 75
Регистрация: 11.04.2012
Сообщений: 971
06.09.2012, 21:28     Задачка #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <conio.h>
 
int main()
{
    for (int val = 1000; val <= 9999; val++)
    {
        int *digits = new int[4], i = 0;
        for (int n = val; n > 0; n/=10)
            digits[i++] = n % 10;
 
        int count = 0;
        for (int q = 0; q < i; q++)
            for (int m = q+1; m < i; m++)
                if (digits[m] == digits[q])     count++;
 
        if (count <= 2) printf("%d\n", val);
    }
 
    _getch();
 
    return 0;
}
http://liveworkspace.org/code/9c0791...11ce4837e12179
cactus09
Чайник
 Аватар для cactus09
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
06.09.2012, 21:31     Задачка #3
А вот мой более нерациональный код
C++ (Qt)
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
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
{
 int colvo = 0;
 
  for(int a=1;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 && b!=c){
        if (a!=b && b!=d){
         if (b!=c && c!=d){
          cout<<a<<b<<c<<d<<" ";
          colvo++; 
         }
        }
       }
       
     }
    }
   }
  }
  cout<<"Bce "<<colvo<<"\n";
  getch();
  return 0;
}
CHELitw
0 / 0 / 0
Регистрация: 06.09.2012
Сообщений: 30
06.09.2012, 21:38  [ТС]     Задачка #4
Цитата Сообщение от cactus09 Посмотреть сообщение
А вот мой более нерациональный код
C++ (Qt)
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
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main()
{
 int colvo = 0;
 
  for(int a=1;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 && b!=c){
        if (a!=b && b!=d){
         if (b!=c && c!=d){
          cout<<a<<b<<c<<d<<" ";
          colvo++; 
         }
        }
       }
       
     }
    }
   }
  }
  cout<<"Bce "<<colvo<<"\n";
  getch();
  return 0;
}
Да,это то что нужно)
для начала 1 вариант-слишком мудрено)
Сам хотел что-то такое сделать,но испугался If-ов)
Спасибо)
Да,и зачем в конце getch ();??
Intel~lect
 Аватар для Intel~lect
135 / 124 / 2
Регистрация: 03.07.2012
Сообщений: 355
06.09.2012, 21:48     Задачка #5
Вот что у меня получилось
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
45
46
47
48
49
50
51
52
#include <iostream>
#include <windows.h>
 
using std::cin;
using std::cout;
using std::endl;
 
int main()
{
    setlocale(0, "");
 
    int arr[10];
    int temp, n;
    bool flag;
    int total = 0;
 
    for (int number=1000; number<=9999; number++)
    {
        for (int n=0; n<10; n++)
            arr[n] = 0;
 
        temp = number;
 
        while (temp > 0)
        {
            n = temp % 10;
            temp = temp / 10;
            arr[n]++;
        }
 
        flag = false;
        for (int n=0; n<10; n++)
            if (arr[n] > 2)
            {
                flag = true;
                break;
            }
 
        if (!flag)
        {
            cout << number << ' ';
            ++total;
        }
    }
 
    cout << endl;
    cout << "Количество чисел " << total << endl;
 
 
    system("pause");
    return 0;
}
Миниатюры
Задачка  
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
06.09.2012, 21:49     Задачка #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
char buffer [5];
for (int i = 1023; i <= 9876; i++){
   ::sprintf (buffer, "%d", i);
   if (::strstr (buffer, "00") == null
      && ::strstr (buffer, "11") == null
      && ::strstr (buffer, "22") == null
      && ::strstr (buffer, "33") == null
      && ::strstr (buffer, "44") == null
      && ::strstr (buffer, "55") == null
      && ::strstr (buffer, "66") == null
      && ::strstr (buffer, "77") == null
      && ::strstr (buffer, "88") == null
      && ::strstr (buffer, "99") == null){
       // то что надо, выводим i
...
   }
}
это, конечно, только выловит две одинаковых подряд, но можно иначе переписать. просто сравнивая символы 0 с 1, 0 с 2, 0 с 3, 1 с 2... не так много получится
cactus09
Чайник
 Аватар для cactus09
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
06.09.2012, 22:38     Задачка #7
CHELitw,
Цитата Сообщение от CHELitw Посмотреть сообщение
Да,и зачем в конце getch ();??
getch(); (чтоб работал надо написать строчку
C++
1
#include <conio.h>
) ожидает пока ты нажмеш на кнопку (даже возвращает код этой кнопки), в данном случае он играет роль паузы чтоб можно было все посмотреть. Если программа работает под виндой то можно использовать
C++
1
system("pause");
PS там вместо
C++
1
cout<<"Bce "<<colvo<<"\n";
культурнее было б так
C++
1
 cout<<"\nBce "<<colvo<<"\n";
CHELitw
0 / 0 / 0
Регистрация: 06.09.2012
Сообщений: 30
06.09.2012, 22:40  [ТС]     Задачка #8
cactus09, А как с тобой можно связаться ?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.09.2012, 22:57     Задачка
Еще ссылки по теме:

задачка с++ C++
задачка C++

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

Или воспользуйтесь поиском по форуму:
cactus09
Чайник
 Аватар для cactus09
69 / 69 / 4
Регистрация: 15.02.2012
Сообщений: 475
06.09.2012, 22:57     Задачка #9
CHELitw,
Цитата Сообщение от CHELitw Посмотреть сообщение
А как с тобой можно связаться ?
Так
Миниатюры
Задачка  
Yandex
Объявления
06.09.2012, 22:57     Задачка
Ответ Создать тему
Опции темы

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