mmiles - 03-25-2007 14:36:26

Program służy do konwersji liczb np dziesiętnych na dwójkowe, trójkowe, czwórkowe i tak do trzydziestoszóstkowych, no i oczywiście odwrotnie dwójkowe na trójkowe czy też np szesnastkowe na jedenastkowe. Wszystkie kombinacje :) Można stosować liczby typu "AZ32FD4" ale używając tylko WIELKICH LITER. Prosze testować, ewentualne poprawki wrzucać tu na forum!
Pozdrawiam, a o to kod:




Kod:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define WINDOWS

void clrscr()
{
   #ifdef WINDOWS
   system("cls");
   #else
   system("clear");
   #endif
}


long long int potega(int a, int r)
{
long long int p=1;
   while (a != 0 )
    {
     p*=r;
     a--;
    }
 return p;
}



int main()
{
 const int MAX=100;
 char liczba[2000];
 int dl, i=0, a=0, sys, liczba_wyj;
 int tab[MAX];
 long long int l=0;

      printf("PODAJ LICZBE DO KONWERSJI\n");    
      scanf("%s",liczba);
      
      clrscr();
      printf("W JAKIM SYSTEMIE PODALES LICZBE?\n\n2-dwojkowy\n3-trojkowy\n4-czworkowy\n...\n");
      printf("36-trzydziestoszostkowy\n\n");
      scanf("%i",&sys);
      
      clrscr();
      printf("W JAKIM SYSTEMIE CHCESZ ORZYMAC LICZBE");
      printf("\n\n2-dwojkowy\n3-trojkowy\n4-czworkowy\n...\n");
      printf("36-trzydziestoszostkowy\n\n");
      scanf("%i",&liczba_wyj);


      dl = strlen(liczba);

      for(i = dl-1; i >= 0; i--)
        if (liczba[i] >= 65)
         l+=(liczba[i]-55) * potega(dl-i-1,sys);
        else
         l+=(liczba[i]-48) * potega(dl-i-1,sys);

      i=0;
      while (l != 0)
      {
         tab[i]=l%liczba_wyj;
         l = l/liczba_wyj;
         i++;
         a++;
      }

      
      clrscr();
      printf("Liczba po zamianie to: \n");
      for (i=a-1; i>=0; i--)
          if (tab[i] >= 10 )
           {
             l=tab[i];
             liczba[i]= l + 55;
             printf("%c",liczba[i]);
           }
          else
           {
             l=tab[i];
             liczba[i]= l + 48;
             printf("%c",liczba[i]);
           }
      

 getchar();
 getchar();
 return 0;
}
GotLink.pl