#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;
 }
  
 Ders Sahibi;
						Ders Sahibi;