C++ kaldım yardım.

skunk2
29-12-2010, 05:16   |  #1  
OP Taze Üye
Teşekkür Sayısı: 0
1 mesaj
Kayıt Tarihi:Kayıt: Ara 2010

Arkadaşlar c++ dan ödevim var biyerde tıkandım.ödevim döngüler konusundan ödevim şu
hangi 4 basamaklı sayının rakalmları kendi kuvvetlerine gönderilip toplanırsa yine aynı sayıyı verir. sorusunun cevabını hesaplayıp ekrana yazan program.
örn;
abcd=aüssüa+büssüb+cüssüc+düssüd=abcd
 
döngüyü  sayac 1000den baslatıcam 9999 a kadar gidecek her sayacın basamaklarına ayıracak kendi kuvvetlerini alıcak toplama yazıcak en son toplamla sayıcının o anki degerini karsılastıracak eşitse toplamı ekrana yazıcak değilse sayac artıcak
 
ben sayacı 1000 den baslattım basamaklarına ayırabildim ama kendi kuvvetleriyle toplayamadım yapsamda sayacı bir türlü 1001 yapamadım yani bir arttıramadım.
bunu fonksyonla yapsam sadece pow kullanarak rakamların kuvvetlerini alsam nasıl yapabilirim
 yardımlarınızı bekliyorum.


bu sekilde yaptım sayaca 1000 verdiğimde sonucu 1 veriyo topluyo ama su 1000 i arttırıpta kendisinin bulması lazım yani sayac 3435 te durması gerek çünkü 4 basamaklı bu koşulu içeren tek bu sayı var sayaca kendim 3435 yazdım sonuc 3435 dogru cıktı sayacı nasıl arttırırım

        int sayac=1000, a, b, c, d, adegeri=0, bdegeri=0, cdegeri=0, ddegeri=0,kalan,toplam=0;

        while(sayac<=9999){
               
                kalan=sayac%1000;
                a=(sayac-kalan)/1000;
                sayac=kalan;
                kalan=sayac%100;
                b=(sayac-kalan)/100;
                sayac=kalan;
                kalan=sayac%10;
                c=(sayac-kalan)/10;
                d=kalan;


                for(int binler=1;binler<=1;binler++){
                       
                        if(a==1){
                        adegeri=a*a;
                        }
                        else if(a==2){
                        adegeri=a*a;
                        }
                        else if(a==3){
                        adegeri=a*a*a;
                        }
                        else if(a==4){
                        adegeri=a*a*a*a;
                        }
                        else if(a==5){
                        adegeri=a*a*a*a*a;
                        }
                        else if(a==6){
                        adegeri=a*a*a*a*a*a;
                        }
                        else if(a==7){
                        adegeri=a*a*a*a*a*a*a;
                        }
                        else if(a==8){
                        adegeri=a*a*a*a*a*a*a*a;
                        }
                        else if(a==9){
                        adegeri=a*a*a*a*a*a*a*a*a;
                        }
                }

                for(int yüzler=1;yüzler<=1;yüzler++){
                       
                        if(b==1){
                        bdegeri=b*b;
                        }
                        else if(b==2){
                        bdegeri=b*b;
                        }
                        else if(b==3){
                        bdegeri=b*b*b;
                        }
                        else if(b==4){
                        bdegeri=b*b*b*b;
                        }
                        else if(b==5){
                        bdegeri=b*b*b*b*b;
                        }
                        else if(b==6){
                        bdegeri=b*b*b*b*b*b;
                        }
                        else if(b==7){
                        bdegeri=b*b*b*b*b*b*b;
                        }
                        else if(b==8){
                        bdegeri=b*b*b*b*b*b*b*b;
                        }
                        else if(b==9){
                        bdegeri=b*b*b*b*b*b*b*b*b;
                        }
                }

                for(int onlar=1;onlar<=1;onlar++){
                       
                        if(c==1){
                        cdegeri=c*c;
                        }
                        else if(c==2){
                        cdegeri=c*c;
                        }
                        else if(c==3){
                        cdegeri=c*c*c;
                        }
                        else if(c==4){
                        cdegeri=c*c*c*c;
                        }
                        else if(c==5){
                        cdegeri=c*c*c*c*c;
                        }
                        else if(c==6){
                        cdegeri=c*c*c*c*c*c;
                        }
                        else if(c==7){
                        cdegeri=c*c*c*c*c*c*c;
                        }
                        else if(c==8){
                        cdegeri=c*c*c*c*c*c*c*c;
                        }
                        else if(c==9){
                        cdegeri=c*c*c*c*c*c*c*c*c;
                        }
                }

                for(int birler=1;birler<=1;birler++){
                       
                        if(d==1){
                        ddegeri=d*d;
                        }
                        else if(d==2){
                        ddegeri=d*d;
                        }
                        else if(d==3){
                        ddegeri=d*d*d;
                        }
                        else if(d==4){
                        ddegeri=d*d*d*d;
                        }
                        else if(d==5){
                        ddegeri=d*d*d*d*d;
                        }
                        else if(d==6){
                        ddegeri=d*d*d*d*d*d;
                        }
                        else if(d==7){
                        ddegeri=d*d*d*d*d*d*d;
                        }
                        else if(d==8){
                        degeri=d*d*d*d*d*d*d*d;
                        }
                        else if(d==9){
                        ddegeri=d*d*d*d*d*d*d*d*d;
                        }
                }

                toplam=adegeri+bdegeri+cdegeri+ddegeri;
 

 
 
 

Son Düzenleme: skunk2 ~ 29 Aralık 2010 07:52
censez41
29-12-2010, 13:05   |  #2  
censez41 avatarı
Yıllanmış Üye
Teşekkür Sayısı: 3
1,705 mesaj
Kayıt Tarihi:Kayıt: Nis 2009

for(int sayac=1000;sayac<=9999;sayac++){
olarak değiştirisen sayacın değeri artar

Son Düzenleme: censez41 ~ 29 Aralık 2010 13:06
muh34
30-12-2010, 00:04   |  #3  
Yıllanmış Üye
Teşekkür Sayısı: 0
215 mesaj
Kayıt Tarihi:Kayıt: Eki 2010

Yapmanız gereken tek sey,sayıyı rakamlarına ayırarak ussel toplam bicimde yazmaktır.Cıkan sonucu ise sayının butunune eşit olup olmadıgını arastırmak olacaktır.Kodun C++ dilindeki karsılıgını yayımlıyorum.

#include <iostream>

using namespace std;

double pow(double a,double b) {

int i;
double accumulate=1;
for(i=1;i<=b;i++)
accumulate*=a;
return accumulate;   

}

int main() {

       double a0,a1,a2,a3;
       int i;
       for(i=1000;i<=9999;i++) {
       a0=i/1000;
       a1=(i%1000)/100;
       a2=((i%1000)%100)/10;
       a3=(i%10);
       if(pow(a0,a0)+pow(a1,a1)+pow(a2,a2)+pow(a3,a3)==i)
       cout << i << '\n';
       }
       getchar();
       return 0;
       }

Başarılar

LmandrakeL
01-01-2011, 17:58   |  #4  
Üye
Teşekkür Sayısı: 0
78 mesaj
Kayıt Tarihi:Kayıt: Şub 2004

Merhaba ; sorunun cevabı 3435 , aşağıda da nasıl yapıldığını yazdım kolay gelsin ;)
Programı biraz açıklayım istersen , program 3 parçadan oluşuyor , bunun gibi problemleri çözerken unutmaman gereken herzaman problemi parçalara ayırmalısın ,
1. parça  = herhangi bir sayının üssünü buluyor
2. parça  = abcdef gibi girilen her bir sayının basamaklarını ve buna karşı gelen üstlerini buluyor
3. parça (main içindeki bölüm) =  1000-9999 arasındaki tüm sayıları sayı bul'un içine sokuyor ve şunu yapıyor ;
(   döngüden gelen sayı == bu sayının üstlerinin toplamı ) doğrumu diye bakıyor...
 
kodlar aynen şöyle :)
 
 #include <stdio.h>
#include <conio.h>
#include <math.h>
int toplam = 0;
int usBul(int taban,int us)
{
 int sonuc = 1;
 for(int i=0;i<us;i++)
 {
  sonuc*=taban;
 }
 return sonuc;
}
void sayiBul(int x)
{
 if(x/10)
  sayiBul(x/10);
 
 int sayi = x%10;
 toplam+=usBul(sayi,sayi);
 
}

 int main()
 {
  for(int i=1000;i<=9999;i++)
  {
   toplam = 0;
   sayiBul(i);
   if(i==toplam)
    printf("sayi bulundu :) ? %d\n",i);
  }

  return 0;
 }

 
 
 

 
 

 
 
 
 

conjuror
15-07-2011, 10:58   |  #5  
Taze Üye
Teşekkür Sayısı: 0
8 mesaj
Kayıt Tarihi:Kayıt: Tem 2011

http://hotfile.com/dl/124089865/aec7a8f/c.rar.html

c++ video anlatımları