-4
私は大学のC++割り当てのコードを書いています。プログラムは、フィボナッチ配列の最初の5つの素数を印刷することになっています。私はこれまで何を持っていたのかを知っている。C++ bool関数がtrueを返すときの無限ループ
#include <iostream>
#include <cmath>
using namespace std;
int fibonacci(int x){
int y=1, z=1, sum=0;
for(int a=1; a<=x;a++){
sum=(z+y);
z=y;
y=sum;
}
return sum;
}
bool isPrime(int x){
double z=x;
for(int y=2;y<=sqrt(z);y++){
if(x%y==0){
return false;
}
}
return true;
}
int main(){
int primes=0, check=0;
for(int x=1;x<=10;x++){
check=0;
while(primes<5 && check==0){
if(isPrime(fibonacci(x))){
cout<<fibonacci(x)<<endl;
primes++;
check=1;
}
}
}
return 0;
}
コードは、最初の3つのフィボナッチ素数2,3および5を返します。その後、プログラムは無限ループに入ります。 isPrime関数がtrueを返すようにすると、無限ループは解消されますが、明らかに必要な出力は生成されません。 ご協力いただければ幸いです。ありがとう。
'isPrime'が' false'の場合、 'main'のループは何もしません。他に何が起こると予想されるかはわかりません。 –
私は彼らが 'cout <<"を受け入れないだろうと思っています2 3 5 13 89 ";'? :) – kazemakase
SOは、簡単なデバッグミスを修正するよう求めている場所ではありません。あなたが質問をするたびに、将来他の読者が自分自身から利益を得られるべきものでなければならない。私はデバッグモードを使用して、あなたの問題を解決するためにブレークポイントを設定するなど、あなたのコードをデバッグする一般的な方法についてお勧めします –