| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2650 人关注过本帖
标题:用 C++ 实现同或
只看楼主 加入收藏
苍翠的路
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-4-15
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:15 
用 C++ 实现同或
输入包括两行,每行包括N个数字(1≤N≤50),分别表示两个人对于N个事情对应的看法——0表示不赞同、1表示赞同。
输出包括一行,包括N个数字,表示两人相遇后,对于这N件事情的最终看法。(相同为1,不同为0)
列如:
输入:001100
      110100
输出:000111

其中,N未知,只能通过所输入的数字判断。我的想法是用vector二维数组,然后利用回车作为第一个和第二个数组的分隔符,但得不到相应的结果,麻烦大家帮忙看看,十分感谢!
(作为新手,很多地方不够规范,也请大家多多指教)

程序代码:
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
    int var;
    int num=50;
    vector< vector<int> > ivec(2);
    for(int i=0;i<2;++i)
    {
        ivec[i].reserve(num);
    }
    for(int ix=0;ix<2;++ix)
    {    
        while(cin>>var)
        {
            if(var!='\n')
            {
                ivec[ix].push_back(var);
            }
            else
                break;
        }
    }
    for(int indx=0;indx<num;++indx)
    {
        if(ivec[0][indx]!=ivec[1][indx])
        {
            cout<<0;
        }
        else
        {
            cout<<1;
        }
    }
    cout<<endl;
    return 0;
}
搜索更多相关主题的帖子: include 
2014-09-02 14:57
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
我不会用c++

程序代码:
int main()
{
    char a[50]={'\0'};
    char b[50]={'\0'};
    char c[50]={'\0'};
    input(a,b);
    for(int i=0;i<strlen(a);i++) if(a[i]==b[i]) c[i]='1';else c[i]='0';
    printf("c[]=%s\n",c);
    return 0 ;
}

DO IT YOURSELF !
2014-09-02 15:35
苍翠的路
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-4-15
收藏
得分:0 
回复 楼主 苍翠的路
感谢版主的回复,input函数得自己定义的吧?
2014-09-02 15:54
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:2 
就是一个输入接收函数  因为我的代码和c++无关  所以开始没放这个函数

程序代码:
void input(char* a,char* b)
{
    int i=0;
reinput:
    printf("请输入第一个人的意见:(只能是0 1串)->");
    gets(a);
    while(i<strlen(a))
    {
        if(a[i]>'1') goto reinput;
        i++;
    }
reinput2:
    printf("请输入第二个人的意见:(只能是0 1串)->");
    gets(b);
    i=0;
    while(i<strlen(b))
    {
        if(b[i]>'1') goto reinput2;
        i++;
    }
    if((strlen(a)-strlen(b))!=0) goto reinput;
}

DO IT YOURSELF !
2014-09-02 15:56
苍翠的路
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2014-4-15
收藏
得分:0 
回复 3 楼 苍翠的路
感谢分享,收获不小,我看能不能学习下你的思路用C++实现出来。
2014-09-02 16:13
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9032
专家分:54061
注 册:2011-1-18
收藏
得分:0 
回复 2 楼 wp231957
应该51吧,我猜
2014-09-03 08:41
stop1204
Rank: 9Rank: 9Rank: 9
来 自:福建省
等 级:贵宾
威 望:22
帖 子:295
专家分:1151
注 册:2013-9-8
收藏
得分:3 
程序代码:
让你看的明白点
#include "iostream"
int main()
{
         using namespace std;
    char a[50], b[50];
    int n1 = 0, n2 = 0;
    while (n1 < 50)
    {

        cin.get(a[n1]);
        if (a[n1] == '\n')
            break;
        n1++;
    }
    while (n2 < 50)
    {

        cin.get(b[n2]);
        if (b[n2] == '\n')
            break;
        n2++;
    }
    n1 < n2 ? n1 = n1  : n1 = n2;
    //n1 最短的那个有多少个字符,即以此判断要判断几次
    char p[n1];   //用来存储输出
    for (int i = 0; i < n1 ; ++i)
        a[i] == b[i] ? p[i] = '1' : p[i] = '0';
    p[n1] = '\0';
    cout << p ;
}

hl928452957@gmail点com

2014-09-03 10:21
stop1204
Rank: 9Rank: 9Rank: 9
来 自:福建省
等 级:贵宾
威 望:22
帖 子:295
专家分:1151
注 册:2013-9-8
收藏
得分:0 
还可以简化    不过你先看明白这个

hl928452957@gmail点com

2014-09-03 10:22
k_misuzu
Rank: 1
等 级:新手上路
帖 子:3
专家分:1
注 册:2014-9-1
收藏
得分:0 
回复 7 楼 stop1204
p[n1]中的n1不应该是变量吧
2014-09-03 14:58
stop1204
Rank: 9Rank: 9Rank: 9
来 自:福建省
等 级:贵宾
威 望:22
帖 子:295
专家分:1151
注 册:2013-9-8
收藏
得分:0 
回复 9 楼 k_misuzu
是变量-.-~  
所有都是变量 你看到 int n1=0; 定义没.....

hl928452957@gmail点com

2014-09-03 17:32
快速回复:用 C++ 实现同或
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023566 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved