Вопрос:
Мне нужно написать функцию, которая будет сравнивать два массива, для сравнения номеров лотерейных билетов с выигрышными номерами, и ему нужно вернуть 1 для каждого числа, которое соответствует, и 0 для каждого числа, которое не соответствует. Я использую два массива для хранения чисел, но у меня возникают трудности с печатью несогласованных, это небольшая программа, которую я написал, я не могу понять, как поместить часть, которая печатает 0 для несогласованного элемента
int main() { int i,j; int flag=0; int a[]={3,49,25,48,12,33}; int b[]={3,48,15,33,12,44}; for( i=0;i<6;i++){ for( j=0;j<6;j++){ if(a[i]==b[j]){ cout<<«1 «<<endl; break; } else flag=1; } } if(flag==1){ cout<<0; } return 0; } Лучший ответ:
Решите во внутреннем цикле, если нужно напечатать 0 или 1, но распечатайте во внешнем цикле:
for(i) { char c = ‘0’; for(j) { if(==) { c = ‘1’; break; } } std::cout << c << ‘ ‘; Ответ №1
Прежде всего, вам нужно решить, какой из массивов чисел является “ничьей” и который является “билетом”. Лучшее и более описательное название помогает там.
Затем вы добавляете третий массив bool, соответствующий массиву “билет”, и инициализируете все элементы значением false. Когда вы перебираете числовые массивы и сравниваете true вы устанавливаете соответствующий элемент массива bool равным true.
После сравнения массив bool будет содержать true элементы для каждого номера “билета”, который соответствует количеству “ничьей”.
Отказ от ответственности: это только одно из многих возможных решений. Это может быть не самое лучшее, и, возможно, не совсем то, что вы хотите.
Ответ №2
Это не самый эффективный способ сделать это, но я надеюсь, что следующее – это легко понять решение и послужит вам введением в некоторые полезные инструменты в C++, которые, например, являются std::vector контейнеры, которые вы должны изучить:
#include <iostream> #include <vector> int main() { std::vector<std::size_t> a={3,49,25,48,12,33}; std::vector<std::size_t> b={3,48,15,33,12,44}; std::size_t size (a.size()); std::vector<std::size_t> count_correct; for( std::size_t i=0;i<size;i++) { for( std::size_t j=0;j<size;j++){ if(a[i]==b[j]){ count_correct.push_back(1); break; } } } for (std::size_t i(0); i<count_correct.size(); ++i) { std::cout << «1» << std::endl; } std::size_t incorrect_times (size — count_correct.size()); for (std::size_t i(0); i<incorrect_times; ++i) { std::cout << «0» << std::endl; } return 0; }