比较c ++中的两个数组并根据元素的匹配或不匹配返回值

时间:2018-07-06 22:19:43

标签: c++ arrays compare

我需要编写一个将两个数组进行比较的函数,该函数用于将彩票的号码与中奖号码进行比较,并且它需要为每个匹配的数字返回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;
}

3 个答案:

答案 0 :(得分:1)

首先,您需要确定哪个数字数组是“绘图”,哪个是“票证”。更好和更具描述性的命名会有所帮助。

然后,添加对应于“票证”数组的第三个bool数组,并将所有元素初始化为false。遍历数字数组时,比较为true,然后将bool数组的对应元素设置为true

比较之后,bool数组将为与多个“ draw”匹配的“ ticket”的每个数字包含true个元素。

免责声明:这只是许多可能解决方案中的一个。可能不是最好的,也可能不是您想要的。

答案 1 :(得分:1)

确定是否要打印0或1,但要在内部循环中打印:

--- toc2/toc2.js        2018-07-06 15:00:27.139881888 -0700
+++ toc2/toc2.js.fixed  2018-07-06 15:00:36.359743263 -0700
@@ -224,7 +224,7 @@
     }

     function setNotebookWidth(cfg, st) {
-        var margin = 20;
+        var margin = 5;
         var nb_inner = $('#notebook-container');
         var nb_wrap_w = $('#notebook').width();
         var sidebar = $('#toc-wrapper');

答案 2 :(得分:0)

这不会是效率更高的 方法,但是我希望以下内容是一个易于理解的解决方案,并且希望它可以作为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;
}