C# Console Taban Aritmetiği
-
Arkadaşlar böyle bir kod var fakat benden girdi isteniyor ben bunu girdi aldıktan sonra nasıl çeviri yaptırıcam
string x = "1111111111";
Console.WriteLine(Convert.ToString(Convert.ToInt32(x, 2), 8)+ " 2 lik sayıyı 8 lik sisteme çevirdik");
Console.WriteLine(Convert.ToString(Convert.ToInt32(x, 2), 10) + " 2 lik sayıyı 10 lik sisteme çevirdik");
Console.WriteLine(Convert.ToString(Convert.ToInt32(x, 2), 16) + " 2 lik sayıyı 16 lik sisteme çevirdik");
x = "147";
Console.WriteLine(Convert.ToString(Convert.ToInt32(x, 8), 2) + " 8 lik sayıyı 2 lik sisteme çevirdik"); Console.WriteLine(Convert.ToString(Convert.ToInt32(x, 8), 10) + " 8 lik sayıyı 10 lik sisteme çevirdik"); Console.WriteLine(Convert.ToString(Convert.ToInt32(x, 8), 16) + " 8 lik sayıyı 16 lik sisteme çevirdik");
x = "3176";
Console.WriteLine(Convert.ToString(Convert.ToInt32(x, 10), 2) + " 10 lik sayıyı 2 lik sisteme çevirdik"); Console.WriteLine(Convert.ToString(Convert.ToInt32(x, 10), 8) + " 10 lik sayıyı 8 lik sisteme çevirdik"); Console.WriteLine(Convert.ToString(Convert.ToInt32(x, 10), 16) + " 10 lik sayıyı 16 lik sisteme çevirdik");
x = "ABC";
Console.WriteLine(Convert.ToString(Convert.ToInt32(x, 16), 2) + " 16 lik sayıyı 2 lik sisteme çevirdik"); Console.WriteLine(Convert.ToString(Convert.ToInt32(x, 16), 8) + " 16 lik sayıyı 8 lik sisteme çevirdik"); Console.WriteLine(Convert.ToString(Convert.ToInt32(x, 16), 10) + " 16 lik sayıyı 10 lik sisteme çevirdik");Console.ReadLine();
-
girdiyi dışardan mı vermek istiyorsun anlamadım? normalde x e eşitlediğin sayılar için kod doğru gözüküyor
1777 2 lik sayıyı 8 lik sisteme çevirdik
1023 2 lik sayıyı 10 lik sisteme çevirdik
3ff 2 lik sayıyı 16 lik sisteme çevirdik
1100111 8 lik sayıyı 2 lik sisteme çevirdik
103 8 lik sayıyı 10 lik sisteme çevirdik
67 8 lik sayıyı 16 lik sisteme çevirdik
110001101000 10 lik sayıyı 2 lik sisteme çevirdik
6150 10 lik sayıyı 8 lik sisteme çevirdik
c68 10 lik sayıyı 16 lik sisteme çevirdik
101010111100 16 lik sayıyı 2 lik sisteme çevirdik
5274 16 lik sayıyı 8 lik sisteme çevirdik
2748 16 lik sayıyı 10 lik sisteme çevirdik
-
Evet girdi almak istiyorum
-
tamam ama tam olarak nasıl bir şey istiyorsun.. sürekli sayı çevirmeyi soracak bir şey mi (döngü) ?
yoksa hangi tabandan hangi tabana çevireceğini mi soracak?
-
sadece bir kereliğine soruyor, sayıyı, orjinal tabanın ve çevirmek istediğin tabanı
string sayi, sonuc; //2 tane string türünde değişken tanımladık (sayı harf içerebilir.örn:16lık taban) int asilTaban, cevrilecekTaban; //2 tane int türünden değişken tanımladık Console.WriteLine("Lütfen çevirmek istediğiniz sayıyı giriniz : "); sayi = Console.ReadLine(); //burada kullanıcı sayıyı yazdıktan sonra enter'a bastığında sayi değişkenine //atanır. sayi değişkeni, çevrilmek istenilen sayıyı tutuyor. Console.WriteLine("Lütfen sayının tabanını giriniz : "); asilTaban = Convert.ToInt32(Console.ReadLine()); //üstte girilmiş olan sayı'nın hangi türden olduğunu //kullanıcı girer,bu da asilTaban değişkenine atanır. Mesela 2 ya da 16 yazabilir.Böylece girilmiş olan //sayının hangi tabanda olduğunu anlayabiliriz. Console.WriteLine("Lütfen hangi tabana çevirmek istediğinizi giriniz : "); cevrilecekTaban = Convert.ToInt32(Console.ReadLine()); //burada da çevirmek istediğimiz taban kullanıcıdan //isteniyor.mesela 2 lik tabanda olan bir sayıyı 10 luk tabana çevirmek istediğimizde buradaki //cevrilecektaban 10 oluyor. //sonuç değişkeninin iste kullanıcı ile bir ilgisi yok,sadece girilen sayılarla ilgisi var. //öncelikle convert.toint32 ile kullanıcının girmiş olduğu sayıyı ve asıl tabanına çeviriyoruz //mesela 123 sayısını girmiş ama bunu 2 tabanında diyorsa bu fonksiyon 123 sayısını 1111011 çevirecektir // sonra yine Convert.ToString ile bu sayının (artık 1111011 sayısı) dönüşümü çevrilecek tabanda girilmiş //olan tabana dönüştürülecek ve sonuç değişkenine atanacaktır. sonuç değişkeninin türünün string olmasının //sebebi ise dönüştürülen sayıda harfler bulunmasıdır. mesela 16 lık tabanda A dan F ye kadar harfler olabilir // mesela yukarıdaki 1111011 sayısının karşılığı 7B dir. bu sayıyı int türünden bir değişkende tutamayız.O sebeple //string kullanılmış. sonuc = Convert.ToString(Convert.ToInt32(sayi, asilTaban), cevrilecekTaban); //tüm verileri işledikten sonra bunları ekrana girmek için pratik olarak String.Format fonksiyonu kullanılmıştır //gördüğün gibi {0} {1} gibi ifadelr var, bunun anlamı {0} gördüğün yere virgülden sonraki ilk değeri yaz yani asilTaban //{1} gördüğün yere virgülden sonraki 2. değeri yaz yani "sayi" //{2} gördüğün yere virgülden sonraki 3. değeri yaz yani cevrilecekTaban //{3} gördüğün yere virgülden sonraki 4. değeri yaz yani sonuc Console.WriteLine(String.Format("Girmiş olduğunuz {0} tabanındaki {1} sayısının {2} tabanında karşılığı : {3} ", asilTaban, sayi, cevrilecekTaban, sonuc)); Console.ReadLine(); //bunun amacı da eğer direk exeyi çalıştırıyorsan pencerenin kapanmasını engellemek için kullanıcıdan bir tuşa basması beklenirunbalanced tarafından 29/Mar/14 11:31 tarihinde düzenlenmiştir -
bunun mantığı nedir peki ? yani işlemi nedir onu anlamadım
-
ünideyken yazmışım c++ ile
#include <iostream.h> #include <stdlib.h> using namespace std; int cevir10toN(int,int); int cevir10toN(int sayi,int sistem) { int kalan,i,a,j,sayi2,z,eleman,sonuc,us,p; sayi2=sayi; if(sayi<sistem) { cout<<sayi<<endl; return 0; } a=2; for(i=0;;i++) { sayi=sayi/sistem; if(sayi<sistem) break; a=a+1; } int f[a]; for(j=0;j<=a-1;j++) { f[j]=sayi2%sistem; sayi2=sayi2/sistem; if(sayi2<sistem) break; } f[a-1]=sayi2; sonuc=0; us=1; for(z=0;z<=a-1;z++) { eleman=f[z]*us; us=us*10; sonuc=sonuc+eleman; } return sonuc; } int cevirNto10(int,int); int cevirNto10(int sayi, int sistem) { int sayi2,bs,ara,sonuc,carpan,i; sayi2=sayi; bs=2; for (i=0;;i++) { sayi=sayi/10; if (sayi<10) break; bs=bs+1; } int basamaklar[bs]; for (i=1;i<=bs-1;i++) { basamaklar[i-1]=sayi2%10; sayi2=sayi2/10; if (sayi2<10) break; } basamaklar[bs-1]=sayi2; carpan=1; sonuc=0; for (i=1;i<=bs;i++) { ara=basamaklar[i-1]*carpan; sonuc=sonuc+ara; carpan=carpan*sistem; } return sonuc; } int main() { int sayi,sistem1,sistem2,cevir,sonuc; cout<<"Cevirmek istediginiz sayiyi girin"<<endl; cin>>sayi; cout<<"Girdiginiz sayi kaclik sistemde"<<endl; cin>>sistem1; cout<<"Kaclik sisteme cevrilsin"<<endl; cin>>sistem2; cevir=cevirNto10(sayi,sistem1); sonuc=cevir10toN(cevir,sistem2); cout<<"("<<sayi<<")"<<sistem1<<"="<<"("<<sonuc<<")"<<sistem2<<endl; system("PAUSE"); return 0; } -
yorum ekledim hocam koda, oradan okuyabilirsin satır satır işlemleri yazdım
-
Çok teşekkür ederim şimdi anladım :)
