Girilen bir sayı değerini, hangi tabanda girilirse girilsin, onluk tabana çevirebiliriz. Sayının Onluk Tabandaki karşılığı nasıl bulunur? Bunun için önce kullanıcıdan sayı ve bu sayıyı hangi tabanda girdiğine dair bilgileri almamız gerekmektedir. Örneğin kullanıcıya ilk önce sayı değerini giriniz gibi, ardından da şimdi hangi tabanda girdiğinizi giriniz gibi bir mesaj yazdırabiliriz.

taban

#include<conio.h> // Kütüphane dosyalarını yüklüyoruz.
#include<stdlib.h> // Kütüphane dosyalarını yüklüyoruz.
#include<math.h> // Kütüphane dosyalarını yüklüyoruz.
#include <stdio.h> // Kütüphane dosyalarını yüklüyoruz.
int main()  //Ana program gövdesi başlıyor.
{
int taban,sonuc,deger[50]; //taban değişkeni, sonuç değişkeni ve 50 elemanlı dizi tanımlıyoruz.
char sayi[50]; //50 elemanlı karakter dizisi tanımlıyoruz.
char karakterler[17]=”0123456789ABCDEF”; //karakter dizisine girilebilecek tüm karakterleri tanımlıyoruz.
int i,j;
int counter=0,kacust=50;
int toplam=0,degeral,ust;

system(“color 3b”);  //sistem açılışında farklı bir renk göreceksiniz.

basadon: //sonradan dallanmak için bir etiket koyuyoruz.
counter=0;
kacust=50;
toplam=0;

printf(“10’luk tabana çevirme programı.\n\n”);

printf(“hangi tabandan ceviri yapmak istiyorsunuz:”); //kullanıcıya gireceği sayının kaçlık tabanda olduğunu soralım.
tabanadon: //sonradan dallanmak için bir etiket koyuyoruz.
scanf(“%d”,&taban);

if(taban>16 || taban<=0)  //taban değeri 0 ve 16 arasında olacak.
{
printf(“\ntaban sayisi 16 dan buyuk olamaz lutfen tekrar girin:”); //öyle olmazsa hata verdirip tabanadon etiketine yolluyoruz.
goto tabanadon;
}

if(taban>10) //taban değeri 10’dan büyükse.
{
printf(“\n10 veya daha buyuk bir taban kullandiniz.\n”);
for(i=10;i<taban;i++) //döngü kuruyoruz başlangıç değeri=10 i değişkeni taban değişkeninden küçük olduğu sürece işlemi yap ve i’yi 1 arttır.
{
printf(“%d=%c “,i,karakterler[i]); //karakterleri diziye  yaz.
}
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++) 
{
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++)  {
if((sayi[i]>=48 && sayi[i]<=57) || (sayi[i]>=65 && sayi[i]<=70))
{
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(“\n girmis oldugunuz sayilar icerisinde o tabanda tanimli olmayan sayi var.”);
printf(“\n lutfen 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); // Sayının Onluk Tabandaki karşılığını buluyoruz.

printf(“\n\n\nBasa Donmek Icin Bir Tusa Basin….”);
getch();

system(“CLS”);
goto basadon;

return 0;
}

Bu şekilde Sayının Onluk Tabandaki karşılığını bulmuş olduk. Programlama dilleri zor değildir, biraz uğraş sonrası herkes yapabilir. Kolay gelsin.
 

Etiketler:, 273 views Okunma 01 Ara 2015

Yorumlar


Sen de Yorumla!

Yorum yapabilmek için giriş yapmalısınız.