#16950: 請問 為什麼執行結果 會錯誤 如何改正呢


asddzxcc1856 (嚕踢)


#include <iostream>
#include <sstream>
using namespace std;

int gcd(int a,int b)
{
if (b==0)
return a;
else
return gcd(b,a%b);
}

int main ()
{
int q;
while (cin>>q )
{
for (int i=0;i<q;i++)
{
string s;
getline(cin,s);
stringstream ss(s);
int e,w,k=0,a,f[105]={},num=0,max=0;
while (ss >> a)
{
f[k]=a;
k++;
}
for (e=0;e<k;e++)
{
for (w=0;w<k;w++)
{
if (f[w]!=f[e])
{
num=gcd(f[e],f[w]);
if (max<num)
{
max=num;
}
}
}
}
if (max!=0)
cout << max << endl;
ss.clear();
ss.str("");
}
}
}

#16952: Re:請問 為什麼執行結果 會錯誤 如何改正呢


asddzxcc1856 (嚕踢)


 

為什麼他在讀取測資的時候 會沒讀到 某一個數字




#16954: Re:請問 為什麼執行結果 會錯誤 如何改正呢


wongsunny4@gmail.com (sunny wong)


 

為什麼他在讀取測資的時候 會沒讀到 某一個數字






應該在輸入整數後再多讀入一次string.根據我的經驗...

#16955: Re:請問 為什麼執行結果 會錯誤 如何改正呢


wongsunny4@gmail.com (sunny wong)


 

為什麼他在讀取測資的時候 會沒讀到 某一個數字






應該在輸入整數後再多讀入一次string.根據我的經驗...



...呃... 我回錯帖了 不過我講的有可能是對的,你可以先試試

#16956: Re:請問 為什麼執行結果 會錯誤 如何改正呢


asddzxcc1856 (嚕踢)


 

為什麼他在讀取測資的時候 會沒讀到 某一個數字






應該在輸入整數後再多讀入一次string.根據我的經驗...



...呃... 我回錯帖了 不過我講的有可能是對的,你可以先試試



while (ss >> a)
{
f[k]=a;
k++;
}

他是這邊會沒讀到測資 

#16957: Re:請問 為什麼執行結果 會錯誤 如何改正呢


asddzxcc1856 (嚕踢)


 

為什麼他在讀取測資的時候 會沒讀到 某一個數字






應該在輸入整數後再多讀入一次string.根據我的經驗...



...呃... 我回錯帖了 不過我講的有可能是對的,你可以先試試



while (ss >> a)
{
f[k]=a;
k++;
}

他是這邊會沒讀到測資 

修正 是getline(cin,s) 這裡沒讀到




#16959: Re:請問 為什麼執行結果 會錯誤 如何改正呢


asddzxcc1856 (嚕踢)


 

剛剛的程式碼改編的 他提供的測資可以用 但是 上傳答案有誤 WA line3

#20655: Re:請問 為什麼執行結果 會錯誤 如何改正呢


happyman940815@gmail.com (【百鬼組】希格瑪 - 一位排球廢物高中生)


 

cin>>input;

getline(cin,input2);

若要正常執行getline(cin,input2)

要打成這樣

cin>>input;

cin.ignore();

getline(cin,input2);

 

別問我為什麼

去問其他大大...

因為我不太確定我的解釋是不是正確的

 

cin>>input;後,input裡面不會存取到你按下的"enter"

所以getline會讀到"enter"才導致你少讀一個