Arama butonu
Bu konudaki kullanıcılar: 1 misafir, 1 mobil kullanıcı
2
Cevap
148
Tıklama
0
Öne Çıkarma
Özel durum işlenemedi hatası
M
3 yıl
Er
Konu Sahibi

Merhaba arkadaşlar, visual studio da girilen sayıdan sonraki 5 asal sayıyı yazdırmak için özyinelemeli kod yazıyordum ama ekteki hatayı aldım. lütfen yardım.
#include <iostream>
using namespace std;
/*Klavyeden girilen bir sayıdan sonraki ilk 5 asal sayıyı
bulan ve ekranda gösteren C veya C++ kodunu yazınız.
*/


int asal1(int x, int i) {


if (x < 2)
return 0;
if (x % i == 0)
return 0;
if (i == 1)
return 1;
return asal1(x, i - 1);




}


int main() {


setlocale(LC_ALL, "Turkish");
int girdi, sayac = 0, sonuc;


cout << "sayıyı girin : "; cin >> girdi;
cout << "sonraki 5 asal sayı : ";
girdi++;
for (; sayac < 5; girdi++) {


sonuc = asal1(girdi, girdi / 2);
if (sonuc == 1) {
cout << girdi << "\t";
sayac++;
}
}










return 0;
}





< Resime gitmek için tıklayın >

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil



Y
3 yıl
Yüzbaşı

Daha farklı asal sayı belirleme yöntemleri olsa da en klasik yöntem şu :

bool asal(int x) {
for (int d = 2; d * d <= x; d++) {
if (x % d == 0)
return false;
}
return true;
}

Ama mesajda belirtildiği gibi yapacaksanız,

if (x % i == 0)
return 0;
if (i == 1)
return 1;

bu iki if'in yerini değiştirmeniz lazım.

x asal sayı bile olsa i 1'e ulaştığı için x%i == 0 her zaman true dönüyor, dolayısıyla hiçbir sayıyı asal olarak bulamıyor, bu da sonsuz döngüye giriyor. Hata burada. bu iki if'in sırası değişmeli.



M
3 yıl
Er
Konu Sahibi

Bende o günün sabahına farkettim hatayı. E-posta bildirimi almadığım için mesajınızı yeni gördüm. Geç kalınmış bir teşekkür olsa da cevapladığınız için çok teşekkür ederim. ;)



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.