Advertisement
Guest User

Ödev1

a guest
Mar 24th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.54 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<windows.h>
  3. #include<clib.h>
  4. #include<stdlib.h>
  5.  
  6. int sayi_tabani(int,int,int);
  7. int kontrol(int,int);
  8. int usal(int,int);
  9.  
  10. main()
  11. {
  12.       int girilen_taban,istenen_taban,sayi;
  13.       do{
  14.           printf("Hangi tabanda sayi girisi yapacaksiniz:");
  15.           scanf("%d",&girilen_taban);
  16.           printf("Sayiyi giriniz:");
  17.           scanf("%d",&sayi);
  18.           printf("Hangi tabana donusturmek istiyorsunuz:");
  19.           scanf("%d",&istenen_taban);
  20.           if(kontrol(sayi,girilen_taban)==0)
  21.           {
  22.               printf("Girilen taban ve sayi uyusmuyor.");
  23.               getch();
  24.               system("cls");
  25.           }
  26.           if(girilen_taban<2)
  27.           {
  28.               printf("Girilen taban tanimlanamadi...");
  29.               getch();
  30.               system("cls");
  31.           }
  32.       }while(kontrol(sayi,girilen_taban)==0 || girilen_taban<2);
  33.       printf("(%d)%d=(%d)%d",sayi,girilen_taban,sayi_tabani(girilen_taban,istenen_taban,sayi),istenen_taban);
  34.       getch();
  35. }
  36.  
  37. int sayi_tabani(int simdiki_taban,int istenen_taban, int sayi)
  38. {
  39.     int bolen,basamak,sayac=0,toplam=0,degisen_sayi=0;
  40.     //Bu for, saynn basamaklarn birler basamandan balyarak buluyor.
  41.     for(bolen=1;bolen<sayi;bolen*=10)
  42.     {
  43.        //Bolen sürekli 10la çartplarak büyüyor.
  44.        //Her seferinde bir basamak bulmamz salyor...
  45.        basamak=(sayi/bolen)%10;
  46.  
  47.        //Sayy ilk olarak onluk tabana dönütüreceiz.
  48.        //Her seferinde basama kuvvetiyle çarpp toplama ekliyoruz
  49.        toplam=toplam+basamak*usal(simdiki_taban,sayac);
  50.        sayac++;
  51.     }//Onluk taban halini elde ettik...
  52.     //Toplam dediimiz ey onluk tabanda saymz oldu...
  53.     sayac=1;
  54.     while(toplam>=istenen_taban)
  55.     {
  56.         degisen_sayi=degisen_sayi+(toplam%istenen_taban)*sayac;
  57.         toplam=toplam/istenen_taban;
  58.         sayac*=10;
  59.     }
  60.     degisen_sayi=degisen_sayi+toplam*sayac;
  61.     return degisen_sayi;
  62. }
  63.  
  64. int kontrol(int sayi,int taban)
  65. {
  66.     int bolen,basamak;
  67.     //Bu for, saynn basamaklarn birler basamandan balyarak buluyor.
  68.     for(bolen=1;bolen<sayi;bolen*=10)
  69.     {
  70.        //bolen sürekli 10la çartplarak büyüyor.
  71.        //her seferinde bir basamak bulmamz salyor...
  72.        basamak=(sayi/bolen)%10;
  73.        //basamak tabandan buyukse 0 geri dönderiliyor.
  74.        if(basamak>=taban)
  75.        return 0;
  76.     }
  77.     //Soru yoksa 1 geri dönderiliyor.
  78.     return 1;
  79. }
  80.  
  81. int usal(int sayi, int us)
  82. {
  83.     int i,carpim=1;
  84.     for(i=1;i<=us;i++)
  85.     {
  86.        carpim=carpim*sayi;
  87.     }
  88.     return carpim;
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement