#include<iostream>
#include<vector>
using namespace std;
int main(){
vector<double> k;
bool check[100000];
for(int i = 2; i < 100000; i++) check[i] = 0;
k.push_back(0);
k.push_back(1);
check[0] = 1;
check[1] = 1;
double a, b, x;
int j;
while(cin >> a >> b){
x = a / b;
j = 1;
while(1){
if(check[j] == 0){
check[j] = 1;
if(j % 2 == 0) k.push_back(1 + k[j/2]);
else k.push_back(1 / k[j-1]);
}
if(k[j] - x <= 0.00001 && k[j] - x >= -0.00001){
cout << j << endl;
break;
}
j++;
}
}
return 0;
}
錯誤訊息:Segmentation fault (core dumped) ,自己用dev-c++不會有這個問題,另外也想請問除了陣列溢位還有哪些操作容易造成這個問題?
#include
#include
using namespace std;
int main(){
vector k;
bool check[100000];
for(int i = 2; i < 100000; i++) check[i] = 0;
k.push_back(0);
k.push_back(1);
check[0] = 1;
check[1] = 1;
double a, b, x;
int j;
while(cin >> a >> b){
x = a / b;
j = 1;
while(1){
if(check[j] == 0){
check[j] = 1;
if(j % 2 == 0) k.push_back(1 + k[j/2]);
else k.push_back(1 / k[j-1]);
}
if(k[j] - x <= 0.00001 && k[j] - x >= -0.00001){
cout << j << endl;
break;
}
j++;
}
}
return 0;
}
錯誤訊息:Segmentation fault (core dumped) ,自己用dev-c++不會有這個問題,另外也想請問除了陣列溢位還有哪些操作容易造成這個問題?
如果記憶體使用太多也是這個錯誤
你的程式確實會發生陣列溢位,如果答案大於100000就會出錯(例如輸入"1 25")