C++:
#include <iostream>
#include <clocale>
using namespace std;
int sayi;
bool ikiKuvvet(int);
int us(int, int);
int main() {
setlocale(LC_ALL, "Turkish");
cout << "Sayı giriniz.";
cin >> sayi;
cout << ikiKuvvet(sayi);
}
int us(int taban, int derece) {
int sonuc = 1;
for (int i = 0; i < derece; i++) {
sonuc *= taban;
}
return sonuc;
}
bool ikiKuvvet(int sayi) {
for (int i = 0; us(2, i) < sayi; i++) {
if (sayi % us(2, i) != 0) {
return false;
}
else
return true;
}
}
Kullanıcının girdiği sayının, 2'nin bir kuvveti olup olmadığını gösteren bir program yazıyorum. Üs alma fonksiyonu da bool türünden değer döndüren fonksiyonu da elle yazmamız istendi. Ancak kodum çalışmıyor, hatamı bulamadım. 1 ve 0 hariç ne girersem gireyim true döndürüyor program.
Hatamı düzelttim. Kodun yeni hâli:
C++:
#include <iostream>
#include <clocale>
using namespace std;
int sayi;
int kuvvetMi;
bool ikiKuvvet(int);
int us(int, int);
int main() {
setlocale(LC_ALL, "Turkish");
cout << "Sayı giriniz.";
cin >> sayi;
cout << ikiKuvvet(sayi);
}
int us(int taban, int derece) {
int sonuc = 1;
for (int i = 0; i < derece; i++) {
sonuc *= taban;
}
return sonuc;
}
bool ikiKuvvet(int sayi) {
for (int i = 1; us(2, i) < sayi; i++) {
kuvvetMi = 1;
if (sayi % us(2, i) != 0) {
kuvvetMi = 0;
}
else
kuvvetMi = 1;
}
if (kuvvetMi) {
return true;
}
else
return false;
}
Son düzenleme: