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

помгите разобраться в чем ошибка? (найти все натуральные числа в диапазоне между m и n (m<n)) - C++

Восстановить пароль Регистрация
 
Koby_Br
0 / 0 / 0
Регистрация: 28.12.2011
Сообщений: 23
16.12.2012, 21:12     помгите разобраться в чем ошибка? (найти все натуральные числа в диапазоне между m и n (m<n)) #1
Вот мое задание:найти все натуральные числа в диапазоне между m и n (m<n), в записи которых нет двух одинаковых цифр. Подсчитать количество таких чисел. Проблема вот в чем моя программа выполняет условие только для двухзначных чисел, а хотелось бы чтобы работала нормально для всех типов чисел.)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <iostream>
using namespace std;
 
void main()
{
    setlocale(0, "Russian");
    int n, m, i; 
    int count = 0; 
    printf(" Введите m:\n");
    scanf("%d",&m);
    printf(" Введите n:\n");
    scanf("%d",&n);    
    for ( i = m+1; i < n; ++i) 
        if( i % 10 != i / 10) 
            count++; 
    printf(" Количество чисел:%d\n",count);
    getch();
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2012, 21:12     помгите разобраться в чем ошибка? (найти все натуральные числа в диапазоне между m и n (m<n))
Посмотрите здесь:

C++ Найти все натуральные n-значные числа.
C++ Найти все натуральные числа...
a) Найти все натуральные числа, не превосходящие К C++
Найти все натуральные числа в диапазоне между m и n (m<n), в записи которых нет двух одинаковых цифр. Подсчитать количество таких чисел. C++
Составить программу, которая выводит на экран все натуральные числа в диапазоне от 1 до n, которые являются степенью числа 2 C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ce7eH_111
 Аватар для Ce7eH_111
33 / 33 / 2
Регистрация: 17.11.2012
Сообщений: 109
Записей в блоге: 2
16.12.2012, 21:22     помгите разобраться в чем ошибка? (найти все натуральные числа в диапазоне между m и n (m<n)) #2
Попрбуй через while
sovaz1997
CEO SOVAZ Corp.
 Аватар для sovaz1997
379 / 225 / 2
Регистрация: 17.12.2011
Сообщений: 816
Записей в блоге: 1
16.12.2012, 21:25     помгите разобраться в чем ошибка? (найти все натуральные числа в диапазоне между m и n (m<n)) #3
m = мусор
v.a.l.i.d
 Аватар для v.a.l.i.d
412 / 377 / 10
Регистрация: 21.09.2012
Сообщений: 913
16.12.2012, 21:28     помгите разобраться в чем ошибка? (найти все натуральные числа в диапазоне между m и n (m<n)) #4
Цитата Сообщение от sovaz1997 Посмотреть сообщение
m = мусор
нет, не мусор. m в 14 строчке вводится
Цитата Сообщение от Koby_Br Посмотреть сообщение
scanf("%d",&m);
Koby_Br
0 / 0 / 0
Регистрация: 28.12.2011
Сообщений: 23
16.12.2012, 21:29  [ТС]     помгите разобраться в чем ошибка? (найти все натуральные числа в диапазоне между m и n (m<n)) #5
а можешь написать в коде как это будет выглядеть?
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
16.12.2012, 21:32     помгите разобраться в чем ошибка? (найти все натуральные числа в диапазоне между m и n (m<n)) #6
Хм... как без массива обойтись не придумал. Поэтому так)
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
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
 
int main()
{
    int n, m, i; 
    int count = 0; 
    printf(" Введите m:\n");
    scanf("%d",&m);
    printf(" Введите n:\n");
    scanf("%d",&n);
    
    int arr[10], val;
    
    for(i = m + 1; i < n; ++i) 
    {
        val = i;
        memset(arr, 0, sizeof(arr));
        
        while(val)
        {
            if(++arr[val % 10] > 1)
                break;
            
            val /= 10;
            
        }
        if(!val) 
        {
            printf("%d ",i);
            ++count;
        }  
    }
        
    printf("\n Количество чисел:%d\n",count);
    getch();
}
Koby_Br
0 / 0 / 0
Регистрация: 28.12.2011
Сообщений: 23
16.12.2012, 21:47  [ТС]     помгите разобраться в чем ошибка? (найти все натуральные числа в диапазоне между m и n (m<n)) #7
извиняюсь за надоедливость но у меня возник вопрос что значит?
C++
1
2
3
4
if(++arr[val % 10] > 1)
                break;
            
            val /= 10;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.12.2012, 21:53     помгите разобраться в чем ошибка? (найти все натуральные числа в диапазоне между m и n (m<n))
Еще ссылки по теме:

Найти все натуральные числа, не превосходящие числа n, которые можно представить в виде суммы слагаемых C++
Найти все натуральные числа, меньшие чем N, для которых выполняется соотношение C++
Найти все натуральные числа, меньшие чем N, для которых выполняется соотношение C++

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

Или воспользуйтесь поиском по форуму:
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
16.12.2012, 21:53     помгите разобраться в чем ошибка? (найти все натуральные числа в диапазоне между m и n (m<n)) #8
В общем, суть такая arr - массив счетчиков, то есть какая цифра сколько раз встретилась.

val % 10 - получаем последнюю цифру числа, и увеличиваем соответствующий ей счетчик с помощью ++

если счетчик больше одного, значит цифра встретилась больше одного раза -> можем завершать цикл

иначе
val /= 10 - отбрасываем последнюю цифру числа и проверяем цифры в цикле дальше
Yandex
Объявления
16.12.2012, 21:53     помгите разобраться в чем ошибка? (найти все натуральные числа в диапазоне между m и n (m<n))
Ответ Создать тему
Опции темы

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