C Helpdesk
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:
#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; }
Offline