- C Helpdesk http://www.chelpdesk.pun.pl/index.php - Programy http://www.chelpdesk.pun.pl/viewforum.php?id=5 - Przydatny programik do przekształcania liczb http://www.chelpdesk.pun.pl/viewtopic.php?id=7 |
mmiles - 03-25-2007 12: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! 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; } |