Submission

Status:
PPPPPPPPPP

Score: 100

User: Pera

Problemset: แปลงเลขฐาน

Language: c

Time: 0.001 second

Submitted On: 2024-10-16 20:24:33

#include <stdio.h>

int len(char s[]) {
    int i = 0;
    while (s[i] != '\0') i++;
    return i;
}

void convertdectooctal(int n);
void convertdectobin(int n);
int converthextodec(char s[]);

int main(void) {
    char input[100];
    scanf("%s", input);
    int length = len(input);
    int dec = converthextodec(input);
    //printf("dec is %d\n", dec);
    convertdectobin(dec);
    printf("\n");
    convertdectooctal(dec);
    printf("\n");
}

int converthextodec(char s[]) {
    int dec = 0;
    int i = 1;
    for (int j = len(s) - 1; j >= 0; j--) {
        if (s[j] >= '0' && s[j] <= '9') {
            dec += (s[j] - '0') * i;
        } else {
            dec += (s[j] - 'A' + 10) * i;
        }
        i *= 16;
    }
    return dec;
}

void convertdectobin(int n) {
    int binb4rev[32];
    for (int i = 0; i < 32; i++) binb4rev[i] = -1;
    int i = 0;
    while (n > 0) {
        binb4rev[i] = n % 2;
        n /= 2;
        i++;
    }

    for (int j = i - 1; j >= 0; j--) {
        printf("%d", binb4rev[j]);
    }
}

void convertdectooctal(int n) {
    int octb4rev[100];
    for (int i = 0; i < 100; i++) octb4rev[i] = -1;
    int i = 0;
    while (n > 0) {
        octb4rev[i] = n % 8;
        n /= 8;
        i++;
    }

    for (int j = i - 1; j >= 0; j--) {
        printf("%d", octb4rev[j]);
    }
}