我刚刚在Visual Studio中编写了一些代码,并尝试通过shell在我学校的Linux服务器上运行它。代码在Visual Studio中运行良好,在Linux中符合g++
但不能与bash *./a.out*
或bash *file_name*
一起运行。我想有一些我正在使用的语法在VS 2012中是可以接受的,但是并没有转化为在服务器上运行。
该程序旨在确定两个用户输入的集合之间是否存在联合或交集。
有人可以看看我的代码告诉我我错过了什么吗?到目前为止,我不得不#include <cstring>
进行编译,但除此之外没有任何其他内容。
#include <string>
#include <iostream>
#include <set>
#include <cstring>
using namespace std;
int main()
{
string set1, set2;
string extra1[100], extra2[100];
cout<<"Enter your first set."<<'\n';
getline(cin,set1);
char *ch1 = new char[100];
strcpy(ch1, set1.c_str());
cout<<"Enter you second set."<<'\n';
getline(cin,set2);
char *ch2 = new char[100];
strcpy(ch2, set2.c_str());
int z = 0;
for(int i = 0; i < set1.size(); ++i)
{
const char c = ch1[i];
if(c == ' ')
{
++z;
continue;
}
else if (c == ',')
{
continue;
}
else if (c >= '0' && c <= '9')
{
extra1[z] += ch1[i];
}
else
continue;
}
int capture = z + 1;
int r = 0;
for(int i = 0; i < set2.size(); ++i)
{
const char c = ch2[i];
if(c == ' ')
{
++r;
continue;
}
else if (c == ',')
{
continue;
}
else if (c >= '0' && c <= '9')
{
extra2[r] += ch2[i];
}
else
continue;
}
int capture2 = r + 1;
int g = 0;
string last[100];
for(int i = 0; i < capture; ++i)
{
for(int h = 0; h < capture2; ++h)
{
if(extra1[i] == extra2[h])
{
last[g] = extra1[i];
++g;
}
}
}
set<string> newset1(last, last+100);
set<string>::iterator it;
cout<<"The numbers constitute the intersection between the sets.\n";
for(it=newset1.begin(); it!=newset1.end(); ++it)
{
cout << *it<<' ';
}
cout<<'\n';
int w = 0;
string last1[100];
set<string> newset2(extra1, extra1+100);
set<string> newset3(extra2, extra2+100);
newset2.insert(newset3.begin(), newset3.end());
set<string>::iterator it1;
cout<<"This set constitutes a union between the two sets."<<'\n';
for(it1=newset2.begin(); it1!=newset2.end(); ++it1)
{
cout << *it1<<' ';
}
cout<<'\n';
}