Как устранить определенные числа в серии на C ++? - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь исключить некоторое число из диапазона (170-2500), а затем вычислить оставшиеся числа после исключения.Числа состоят из 3 цифр из списка номеров (2,5,6,7).Я пытался использовать Cartesian Product для генерации чисел, но я запутался, как исключить числа из диапазона.Декартовой код продукта получен от Geeksforgeeks.Я знаю, как рассчитать оставшиеся числа, но я перепутал числа, которые будут исключены.

void findCart(int arr1[], int n) 
{ 
    for (int i = 0; i < n; i++) 
        for (int j = 0; j < n; j++) 
            for (int k = 0; k < n; k++) 
                printf("{%d%d%d}, ", arr1[i], arr1[j], arr1[k]);
} 

int main() 
{ 
    min=170;
    max=2500;
    int arr1[] = {2,5,6,7};
    int n1 = sizeof(arr1) / sizeof(arr1[0]);
    findCart(arr1, n1, number);

    int count=0;
    if (number>=min && number<=max){
        count++;
    }

    int total=max-min+1;
    int result=total-count;
    cout<<result;

    return 0; 
} 

1 Ответ

1 голос
/ 24 мая 2019

Не уверен, что я понимаю ваш вопрос, но из вашего кода, я думаю, вы пытаетесь сделать это: создайте целое число из списка цифр, затем проверьте, находится ли оно от минимального до максимального, затем выведите число оставшихся в диапазоне , попробуйте этот код, надеюсь, вы понимаете мою идею:

// return total number which are meet conditions
int findCart(int arr1[], int n, int min, int max) 
{
    int totalNumbers = 0;
    int number = 0;
    for (int i = 0; i < n; i++) 
        for (int j = 0; j < n; j++) 
            for (int k = 0; k < n; k++){ 
                number = arr1[i]*100 + arr1[j]*10 + arr1[k];
                if ( number >= min && number <= max )
                    ++totalNumbers;
            }

    return totalNumbers;
} 

int main() 
{ 
    int min=170;
    int max=2500;
    int arr1[] = {2,5,6,7};
    int n1 = sizeof(arr1) / sizeof(arr1[0]);
    int totalNumberFound = findCart(arr1, n1, min, max);

    int total=max-min+1;
    int result=total- totalNumberFound;
    cout<<result;

    return 0; 
} 
...