Как сделать парадокс День Рождения

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

Вот код:

#include <iostream>
using namespace std;
#include<time.h>void check_birthdays (int birthdays[], int num, int count=0)
{
for (int i=0; i<num; i++) //to check each person in the group
{
for (int j=i+1; j<num; j++) //against every other person in the group
{
if (birthdays[i]==birthdays[j])
count++;
}
}
//print out the number of people with ame birthday
cout<<"The number of people who share their birthday is "<<count;
}

int main()
{
//create a variable for an inputted number of people
int people, count;
cout<< "Please input a number of people: "<<endl;;
cin>>people;

int birthdays[people];

//input check
if (people<50 || people>100)
cout<<"Error, please try again.";
else
{ //fill that array with random numbers
for (int i=0; i<people; i++)
{
srand (time (NULL));
birthdays[i]= rand()%365;
}
check_birthdays (birthdays, people, count); //send to the next function
}
}

0

Решение

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

Еще один намек, звонить не нужно srand() каждый раз.

0

Другие решения

В main()переменная count не инициализируется и передается check_birthdays()так что результатом может быть что угодно.

Кроме того, в C ++, когда размер массива определяется во время выполнения, нормальным решением является использование std::vector,

0

По вопросам рекламы [email protected]