我不知道为什么编译器会像我设置ile
为那样“跳过”第二个单词1
,所以输入第一个句子并自动跳过第二个单词,但是如果我设置ile
为其他任何一个>1
,我都可以输入两个单词。
任务是检查单词是否相互回文。我试图用循环的getchar代替它,但是工作方式如下。
我的代码:
#include <iostream>
#include <string.h>
using namespace std;
void qsort(char tab[], int min, int max)
{
if(min<max)
{
int min_min = min;
for(int i=min+1;i<=max;i++)
{
if(tab[i]<tab[min])
{
swap(tab[++min_min],tab[i]);
}
}
swap(tab[min],tab[min_min]);
qsort(tab,min,min_min-1);
qsort(tab,min_min+1,max);
}
}
bool sprawdz(char tab[],char tab2[])
{
for(int i=0;i<strlen(tab);i++)
{
if(tab[i]!=tab2[i])
{
return false;
break;
}
}
return true;
}
int main()
{
char tablica1[100];
char tablica2[100];
int ile;
cin>>ile;
for(int i=0;i<ile;i++)
{
cin.getline(tablica1, 100);
cin.getline(tablica2, 100);
qsort(tablica1,0,strlen(tablica1)-1);
qsort(tablica2,0,strlen(tablica2)-1);
cout<<tablica1<<endl<<tablica2;
if(sprawdz(tablica1,tablica2))
{
cout<<"TAK";
}
else
{
cout<<"NIE";
}
}
return 0;
}
更改此:
cin.getline(tablica1, 100);
cin.getline(tablica2, 100);
至:
cin.getline(tablica1, 100);
cin.ignore(numeric_limits<streamsize>::max(), '\n');
cin.getline(tablica2, 100);
原因是cin在输入流中留下了换行符。您必须使用cin.ignore()删除它。
另外,您还需要#include <limits>
for numeric_limits
。
请参考以下答案以获得更深入的理解:为什么getline函数在带有结构数组的for循环中不能多次工作?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句