C++ / Bir Sayıyı Bir Tabandan Başka Bir Tabana Çevirme Kodu


Visual Basic ve .NET Framework    Visual Basic ve .NET Framework İle İlgili Paylaşım Kategorisi

Yazar: AlpBenjamins    0 Yorum    104 Görüntüleme
  • 0 Oy - 0 Yüzde

Paylaşım Tarihi: 31.01.2016, 19:09:10 #1
AlpBenjamins Cezalı Üye
Cezalı Üye
Status: Çevrimdışı Yorum Sayısı:270 Konu Sayısı:118 Üyelik Tarihi:28.11.2015

#include <stdlib.h>
#include <stdio.h>
#include <math.h>

int main ()
{
     int sayi, taban1, taban2;
        int r1, r2, i;

        // Algoritma 2 - 10 arasındaki tabanlarda bulunan bir sayıyı, yine
        // aynı aralıkda, başka bir tabandaki sayıya çeviriyor.

        printf (" Sayi       : ");
        scanf  ("%d", &sayi);

        printf (" Taban      : ");
        scanf  ("%d", &taban1);

        printf (" Yeni taban : ");
        scanf  ("%d", &taban2);

        r1 = i = 0;

        // Sayı ilk olarak onluk tabana çevriliyor. (sayi % 10) bize
        // sayinin son rakamini verir. while içerisinde sayı üzerinde
        // sağdan sola doğru ilerleniyor ve ulaşılan her rakam uygun
        // katsayıyla çarpılarak verilen sayı onluk tabana çevriliyor.
        // Bu uygun katsayılar, örneğin 3 tabanı için 1, 3, 9, 27 ...
        // şeklindedir.

        while (sayi != 0)
        {
             r1 += (sayi % 10) * (int) pow (taban1, i);

             sayi /= 10;

             i ++;
        }

        i = 0;

        // Aşağıdaki while ile yeni oluşacak sayının kaç basamaklı
        // olduğu bilgisi elde ediliyor.

        while (r1 > pow (taban2, i)) i ++;

        printf (" Yeni  sayi : ");

        // Orjinal tabanından onluk tabana çevrilmiş sayı, artık yeni
        // tabana çevrilmek için hazır. Yeni sayının soldan sağa doğru
        // rakamları tek tek elde ediliyor.

        while (i > 0)
        {
             r2 = r1 / (int) pow (taban2, i - 1);

             r1 -= r2 * (int) pow (taban2, i - 1);

             printf ("%d", r2);

             i --;

        }

        printf ("\n\n");

        return 0;
}







Aradığınızı Bulamadınız Mı ?

Konuyu görüntüleyenler:
1 Misafir