Kody źródłowe/Zamiana liczb z systemu dziesiętnego na dowolny

Zamiana liczb z systemu dziesiętnego na dowolny • Kod źródłowy
Zamiana liczb z systemu dziesiętnego na dowolny
Kod źródłowy
Aby zamienić liczbę dziesiętna na liczbę w systemie o podstawie p dzielimy ją całkowicie przez p dotąd dopóki w wyniku dzielenia uzyskamy '0'. Kolejne reszty pisane w odwrotnej kolejności dadzą rozwiązanie.
Wikipedia
Zobacz w Wikipedii hasło System liczbowy

Pascal

edytuj
program dec2p;

const
cyfra:string='0123456789ABCDEF';

var
wynik:string;
p,n:integer;

begin
 wynik:='';
 writeln('Podaj liczbe');
 readln(n);
 writeln('Podaj podstawe systemu na ktory zamienic');
 readln(p);
  repeat
   wynik:=cyfra[n mod p+1]+wynik;
   n:=n div p;
  until n=0;
 writeln(wynik);
 readln;
end.

ANSI C

edytuj

Nagłówek do języka ANSI C przeliczjący system decymalny na dowolny ;) (numsys.h) Coded by MS

#define LENGTH 64

void changens(long, int);

void changens(long n, int DESTNUMSYS) {
    long newnum[LENGTH], zerocount = 0;
    
    for(int i = LENGTH - 1; i >= 0; i--) {
        newnum[i] = n % DESTNUMSYS;
        n /= DESTNUMSYS;
    }
    
    for(int j = 0; j < LENGTH; j++) {
        if(newnum[j] == 0) zerocount++;
        else break;
    }
    
    if(DESTNUMSYS == 16) printf("0x");
    
    for(int k = zerocount; k < LENGTH; k++) {
        if(newnum[k] >= 10) printf("%c", newnum[k] + 55);
        else printf("%d", newnum[k]);
    }
    printf(" (%d)", DESTNUMSYS);
}

ANSI C

edytuj

Przykład użycia powyższego nagłówka jeśli nazwiemy go: numsys.h Coded by MS

#include <stdio.h>
#include "numsys.h"

int main(void) {
    int liczba;
    
    printf("\nPodaj liczbe do zamiany na systemy liczbowe od dwojkowego do dwudziestkowego: ");
    scanf("%d",&liczba);
    
    for(int i = 2; i <= 20; i++) {
        printf("\n%d (10) = ",liczba);
        changens(liczba, i);
    }
    
    printf("\n\n");
    
    return 0;
}