20 MART 2017
SALI
00.53
C++ Armstrong Sayısı mı?

C++ ile yapılabilecek girilen sayının bir armstrong sayısı olup olmadığını söyleyen programıdır.

 

PROBLEM;

Armstrong sayıları, bir sayının her bir rakamının sayının toplam basamak sayısı kadar üstü ile toplanması sonucunda çıkan sayı ile başlangıçtaki sayının eşit olduğu sayılardır. Yani;

153 = 1*1*1 + 5*5*5 + 3*3*3 = 1+125+27 = 153

Kullanıcıdan bir sayı isteyin. Burada basamak sayısının önemsiz olduğuna dikkat edin. Kullanıcı isteğe bağlı olarak bir sayı seçebilir. Ardından sayının armstrong sayısı olup olmadığını kullanıcıya belirtin.

ÇÖZÜM 1 (Kullanıcı 50 basamağa kadar giriş yapabilir);

int main(){
	
	int karakter,toplam=0,a,b=1,deger=1,sayi=0;
	char armstrong[50];
	cout << "Bir sayi girin: ";
		cin >> armstrong;
	karakter = strlen(armstrong);
	
	for(int i=0; i<karakter; i++) {
		a = armstrong[i];
		a -= 48; // Char olan armstrong'u int değere dönüştürürken
		for(int k=0; k<karakter; k++) {
			b = b*a;
		}
		toplam += b;
		b=1;

		for(int j=1; j<karakter-i; j++) {
			deger *= 10;
		}
		deger *= a;
		sayi += deger;
		deger = 1;
	}
	
	if(toplam == sayi) {
		cout << "--> " << armstrong << " bir armstrong sayidir!\n\n";
		return main();
	} else {
		cout << "--> " << armstrong << " bir armstrong sayisi degildir!\n\n";
		return main();
	}
	
}

ÇÖZÜM 2 (Kullanıcı yalnızca 4 basamaklı sayıları girebilir);

int main(){
	
	int a,b,c,d,armstrong;
	
	cout << "4 basamakli bir sayi girin: ";
	cin >> armstrong;
	
	if(armstrong > 999 && armstrong < 10000) {
		a = armstrong/1000;
		b = (armstrong%1000)/100;
		c = (armstrong%100)/10;
		d = armstrong%10;
		
		if( (a*a*a*a) + (b*b*b*b) + (c*c*c*c) + (d*d*d*d) == armstrong ) {
			cout << endl << armstrong << " bir armstrong sayidir!";
		} else {
			cout << endl << armstrong << " bir armstrong sayisi degildir!";
		}
		
	} else {
		cout << endl;
		return main();
	}
	
}

ÇIKTI;

YORUMLAR 0
Bu konuya henüz kimse yorum yapmadı.
İlk yorumu sen yapmak ister misin?
YORUM BIRAK
Şuanda bu yoruma cevap yazıyorsunuz:
İptal Et