Kod:
#include<conio.h>
#include<stdlib.h>
#include<math.h>
#include <stdio.h>
int main()
{
int taban,sonuc,deger[50];
char sayi[50];
char karakterler[17]="0123456789ABCDEF";
int i,j;
int counter=0,kacust=50;
int toplam=0,degeral,ust;
system("color 3b");
basadon:
counter=0;
kacust=50;
toplam=0;
printf("istediginiz tabandaki istediginiz sayiyi 10 luk tabana cevirir.\n\n");
printf("hangi tabandan ceviri yapmak istiyorsunuz:");
tabanadon:
scanf("%d",&taban);
if(taban>16 || taban<=0)
{
printf("\ntaban sayisi 16 dan buyuk olamaz lutfen tekrar girin:");
goto tabanadon;
}
if(taban>10)
{
printf("\n10 veya daha buyuk bir taban kullandiniz.\n");
for(i=10;i<taban;i++)
{
printf("%d=%c ",i,karakterler[i]);
}
printf("\nyukaridaki harfleride kullanabilirsiniz.\n");
}
printf("sayiyi girin:");
tekrargir:
for(i=0;i<50;i++)
{
deger[i] = (-1);
sayi[i] = (0);
}
scanf("%s",&(sayi));
for(i=0;i<50;i++) // kontrol ve değiştirme işlemleri
{
if(sayi[i]==97)
sayi[i] = 'A';
if(sayi[i]==98)
sayi[i] = 'B';
if(sayi[i]==99)
sayi[i] = 'C';
if(sayi[i]==100)
sayi[i] = 'D';
if(sayi[i]==101)
sayi[i] = 'E';
if(sayi[i]==102)
sayi[i] = 'F';
} // ---------------
for(i=0;i<50;i++) // char karakteri int e alma
{
if((sayi[i]>=48 && sayi[i]<=57) || (sayi[i]>=65 && sayi[i]<=70)) // değer değişkenin başka bir karakter girip işlemi mahvetmesin diye kontrol
{
if(sayi[i]==48)
deger[i] = 0;
if(sayi[i]==49)
deger[i] = 1;
if(sayi[i]==50)
deger[i] = 2;
if(sayi[i]==51)
deger[i] = 3;
if(sayi[i]==52)
deger[i] = 4;
if(sayi[i]==53)
deger[i] = 5;
if(sayi[i]==54)
deger[i] = 6;
if(sayi[i]==55)
deger[i] = 7;
if(sayi[i]==56)
deger[i] = 8;
if(sayi[i]==57)
deger[i] = 9;
if(sayi[i]==65)
deger[i] = 10;
if(sayi[i]==66)
deger[i] = 11;
if(sayi[i]==67)
deger[i] = 12;
if(sayi[i]==68)
deger[i] = 13;
if(sayi[i]==69)
deger[i] = 14;
if(sayi[i]==70)
deger[i] = 15;
}
}
for(i=0;i<50;i++)
{
if(deger[i]==(-1))
continue;
if(deger[i]>=taban || deger[i]<(-1))
{
for(j=0;j<50;j++)
deger[j] = -1;
printf("\ngirmis oldugunuz sayilar icerisinde o tabanda tanimli olmayan sayi var.");
printf("\nlutfen tekrar giriniz:");
goto tekrargir;
}
}
for(i=0;i<50;i++)
{
if(deger[i]==(-1))
counter++;
}
kacust -= counter;
for(i=0;i<50;i++)
{
if(deger[i]!=(-1))
{
ust = pow(taban,(kacust-(i+1)));
degeral = deger[i]*ust;
toplam += degeral;
}
else
break;
}
printf("\n(%s)%d sayisinin 10 luk sisteme donusmus hali: %d",sayi,taban,toplam);
printf("\n\n\nBasa Donmek Icin Bir Tusa Basin....");
getch();
system("CLS");
goto basadon;
return 0;
}
/*
97 = a >> 65 = A >> 10
98 = b >> 66 = B >> 11
99 = c >> 67 = C >> 12
100 = d >> 68 = D >> 13
101 = e >> 69 = E >> 14
102 = f >> 70 = F >> 15 // 16 lık taban sonu
*/