我有以下字符数组,它们对应于前面给出的整数。
char a[100] = "hi", //---corresponds to integer 1.
b[100] = "my", // 2.
c[100] = "name", // 3.
d[100] = "is", // 4.
e[100] = "nis", // 5.
f[100] = "hu"; // 6.
int x,y;
cin >> x >> y;
假设每个数组都包含一些内容。
现在,我将两个整数x和y(位于1到6之间)作为输入,并且基于x和y,想要交换相应的数组。
我不想使用类型字符串数组。另外我认为我可以使用enum做到这一点,只是似乎不明白怎么做?
示例输入1 3
示例输出a =名称c = hi
答案 0 :(得分:2)
您可以使用以下内容:(https://ideone.com/N8iQBF)
#include <algorithm>
#include <iostream>
bool isValidIndice(int index) { return 1 <= index && index <= 6; }
int main()
{
char a[100] = "hi", //---corresponds to integer 1.
b[100] = "my", // 2.
c[100] = "name", // 3.
d[100] = "is", // 4.
e[100] = "Nis", // 5.
f[100] = "hu"; // 6.
char (*mapping[])[100] = {&a, &b, &c, &d, &e, &f};
int x, y;
std::cin >> x >> y;
if (isValidIndice(x) && isValidIndice(y)) {
std::cout << "swap" << std::endl;
std::swap(*mapping[x - 1], *mapping[y - 1]); // swap the content, so do some copies of char.
}
std::cout << a << " " << b << " " << c << " " << d << " " << e << " " << f << std::endl;
return 0;
}
如果使用std::string
答案 1 :(得分:1)
最后使用字符串类型数组来完成它。
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char* argv[])
{
int x,y;
cout<<"Exchange String\n\n";
string a[6];
a[0]="hi";a[1]="my";a[2]="name";a[3]="is";a[4]="nis";a[5]="hu";
while(1){
cout<<"1) "<<a[0]<<"\n2) "<<a[1]<<"\n3) "<<a[2]<<"\n4) "<<a[3]<<"\n5) "<<a[4]<<"\n6) "<<a[5];
cout<<"\nChoose x and y in between 1 to 6, type -1 to quit" ;
cin>>x >> y;
if(x==-1){
exit(1);
}
string temp = a[x-1];
a[x-1] = a[y-1];
a[y-1]= temp;
}
}