Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<windows.h>
- #include<clib.h>
- #include<stdlib.h>
- int sayi_tabani(int,int,int);
- int kontrol(int,int);
- int usal(int,int);
- main()
- {
- int girilen_taban,istenen_taban,sayi;
- do{
- printf("Hangi tabanda sayi girisi yapacaksiniz:");
- scanf("%d",&girilen_taban);
- printf("Sayiyi giriniz:");
- scanf("%d",&sayi);
- printf("Hangi tabana donusturmek istiyorsunuz:");
- scanf("%d",&istenen_taban);
- if(kontrol(sayi,girilen_taban)==0)
- {
- printf("Girilen taban ve sayi uyusmuyor.");
- getch();
- system("cls");
- }
- if(girilen_taban<2)
- {
- printf("Girilen taban tanimlanamadi...");
- getch();
- system("cls");
- }
- }while(kontrol(sayi,girilen_taban)==0 || girilen_taban<2);
- printf("(%d)%d=(%d)%d",sayi,girilen_taban,sayi_tabani(girilen_taban,istenen_taban,sayi),istenen_taban);
- getch();
- }
- int sayi_tabani(int simdiki_taban,int istenen_taban, int sayi)
- {
- int bolen,basamak,sayac=0,toplam=0,degisen_sayi=0;
- //Bu for, saynn basamaklarn birler basamandan balyarak buluyor.
- for(bolen=1;bolen<sayi;bolen*=10)
- {
- //Bolen sürekli 10la çartplarak büyüyor.
- //Her seferinde bir basamak bulmamz salyor...
- basamak=(sayi/bolen)%10;
- //Sayy ilk olarak onluk tabana dönütüreceiz.
- //Her seferinde basama kuvvetiyle çarpp toplama ekliyoruz
- toplam=toplam+basamak*usal(simdiki_taban,sayac);
- sayac++;
- }//Onluk taban halini elde ettik...
- //Toplam dediimiz ey onluk tabanda saymz oldu...
- sayac=1;
- while(toplam>=istenen_taban)
- {
- degisen_sayi=degisen_sayi+(toplam%istenen_taban)*sayac;
- toplam=toplam/istenen_taban;
- sayac*=10;
- }
- degisen_sayi=degisen_sayi+toplam*sayac;
- return degisen_sayi;
- }
- int kontrol(int sayi,int taban)
- {
- int bolen,basamak;
- //Bu for, saynn basamaklarn birler basamandan balyarak buluyor.
- for(bolen=1;bolen<sayi;bolen*=10)
- {
- //bolen sürekli 10la çartplarak büyüyor.
- //her seferinde bir basamak bulmamz salyor...
- basamak=(sayi/bolen)%10;
- //basamak tabandan buyukse 0 geri dönderiliyor.
- if(basamak>=taban)
- return 0;
- }
- //Soru yoksa 1 geri dönderiliyor.
- return 1;
- }
- int usal(int sayi, int us)
- {
- int i,carpim=1;
- for(i=1;i<=us;i++)
- {
- carpim=carpim*sayi;
- }
- return carpim;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement