логический тип данных случайное целое число - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь создать генератор случайных чисел и оцениваю случайные целые числа как нечетные или даже использую srand call и boolean, но я не могу понять, как заставить его правильно различать, что является нечетным, а что - четным.

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <time.h>

int i;
int num1;
int num2;

bool isOdd (int num1, int num2);

int main(void)
{
srand(time(NULL));


for (i=1; i <= 10; ++i) {
 num1 = rand() % 10 + 1;
 num2 = rand() % 10 + 1;
printf("The two random numbers are %u and %u\n", num1, num2);


bool valueIsOdd = isOdd(num1, num2);

if (valueIsOdd) {
    printf("one of these numbers, %u and %u, isOdd.\n\n", num1, num2);
}
else {
    printf("Both of these numbers, %u and %u, are even.\n\n", num1, num2);
    }
}
}

bool isOdd(int num1, int num2)
{
if (num1 % 2 != 0) {
    return true;
}
else {
    return false;
    }

}

Ответы [ 2 ]

0 голосов
/ 29 ноября 2018

Я понимаю ваш вопрос.Вы просите, чтобы отличить от двух чисел, что нечетно верно.Основная цель bool - указать 1 или 0, почему использовать char состоит из 8 бит.Если вы хотите проверить 1 номер, используйте тип данных bool.В противном случае, если вы хотите узнать два числа из всех возможных результатов, лучше использовать тип данных char.

Здесь у вас есть два числа.4.

        number 1         number 2
1         odd              even
2         even             odd
3         even             even
4         odd              od


         if ((num1 % 2 != 0) && (num2 % 2 == 0)) {
                return 1;
         }
        else if ((num1 % 2 == 0) && (num2 % 2 != 0)) {
                return 2;
        }
        else if ((num1 % 2 == 0) && (num2 % 2 == 0)) {
                return 3;
        }
        else {
           return 4;
        }
0 голосов
/ 29 ноября 2018

Вы проверяете только один номер в функции isOdd.Вам нужно проверить оба числа.

if ((num1 % 2 != 0) || (num2 %2 !=0)) {
   return true;
}
else {
   return false;
}

Или вы можете проверить оба значения и сделать код чище.

if ((num1 % 2 == 0) && (num2 %2 ==0)) {
   return false;
}
else {
   return true;
}
...