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]);
}
}