5 Nisan 2017 Çarşamba

C Programlama Örnek Armstrong Sayılar

Tüm basamaklarındaki rakamların sayı değerlerinin küpleri toplamı, kendisine eşit olan sayılara "Armstrong sayı" denir. Diğer bir deyişle her bir basamağın o sayının basamak sayısı kadar üssü alınarak toplanmasıdır. Eğer toplam bu sayıyı veriyorsa o sayı Armstrong Sayıdır.

Bazı Armstrong sayıları: 0, 1, 2, 3, 153, 370, 407, 1634, 8208

153 = 13 + 53  33
1634 = 14 + 64 + 34 + 44

#include <stdio.h>

int pw(int, int);

int main()
{
   int s, sonuc = 0, gecici, bdeger, basamak = 0;

   printf("LUTFEN BIR SAYI GIRINIZ\n");
   scanf("%d", &s);

   gecici = s;
   while (gecici != 0) {
      basamak++;
      gecici = gecici/10;
   }

   gecici = s;

   while (gecici != 0) {
      bdeger = gecici%10;
      sonuc = sonuc + pw(bdeger, basamak);
      gecici = gecici/10;
   }

   if (s == sonuc)
      printf("%d ARMSTRONG SAYIDIR.\n", s);
   else
      printf("%d ARMSTRONG SAYI DEGILDIR.\n", s);

   return 0;
}

int pw(int s, int r) {
   int c, p = 1;

   for (c = 1; c <= r; c++)
      p = p*s;

   return p;

1 yorum:

  1. BENDE BÖYLE DÜŞÜNDÜM:


    #include
    #include
    //Bazı Armstrong sayıları: 0, 1, 2, 3, 153, 370, 407, 1634, 8208

    //153 = 1^3 + 5^3 + 3^3
    //1634 = 1^4 + 6^4 + 3^4 + 4^4

    int basamakSayisi(int sayi){
    int i;
    for(i=0;i<10000;i++){
    if(sayi/pow(10,i)<=9){
    return i+1;
    }}}


    int main(){
    int sayi,r,p,i,toplam=0,yeni_sayi;
    printf("Sayiyi giriniz: ");
    scanf("%d",&sayi);
    r = basamakSayisi(sayi);
    yeni_sayi = sayi;
    for(i=r;1<=i;i--){
    p = pow(10,i-1);
    toplam += pow(yeni_sayi/p,r);
    yeni_sayi = yeni_sayi%p;
    printf("%d\n",toplam);
    }
    if (toplam == sayi){
    printf("Bu Armstrong sayisidir.");
    }
    else{
    printf("Bu Armstrong sayisi degildir.");

    }
    return 0;
    }

    YanıtlaSil

Copyright 2013-2017 | İbrahim BAYRAKTAR /dev/null Web Günlüğü