Submission
Status:
----xxxxxx
Subtask/Task Score:
0/100
Score: 0
User: theem1502
Problemset: กราฟสัญญาณดิจิทัล
Language: c
Time: 0.002 second
Submitted On: 2025-09-26 15:42:03
#include <stdio.h>
#include <stdlib.h>
int main() {
char num[1001];
int howlong;
scanf("%s %d", num, &howlong);
int length = 0;
while (num[length] != '\0') {
length++;
}
char **thearray = malloc(howlong * sizeof(char*));
for (int i = 0; i < howlong; i++) {
thearray[i] = malloc(10000 * sizeof(char));
}
for (int i = 0; i < howlong; i++) {
for (int j = 0; j < 10000; j++) {
thearray[i][j] = '_';
}
}
int keeptrack = 0;
int binarykeeptrack = 0;
int templength = length;
char *copynum = malloc(length * sizeof(char));
for (int i = 0; i< length; i++) {
copynum[i] = num[i];
}
if (num[0] >= 'A' && num[0] <= 'z') {
templength = 0;
for (int i = 0; i < length; i++) {
int tempnum = num[i];
int wtf = 0;
char binary[8];
while (tempnum > 0){
binary[wtf++] = (tempnum&1) + '0';
tempnum = tempnum >> 1;
}
binary[7] = '0';
for (int j = 7; j >= 0; j--) {
copynum[binarykeeptrack++] = binary[j];
}
templength += 8;
}
}
for (int i = 0; i < templength; i++) {
num[i] = copynum[i];
}
length = templength;
for (int i = 0; i < length; i++) {
int currentnum = num[i];
if (currentnum == '0') {
if (i == 0) {
for (int j = 0; j < howlong; j++) {
thearray[j][0] = 'X';
}
}
for (int j = 0; j< howlong; j++) {
thearray[howlong - 1][keeptrack++] = 'X';
}
if (num[i+1] == '0') {
keeptrack--;
}
if (i == length - 1) {
break;
}
if (num[i+1] == '1') {
keeptrack--;
for (int j = 0; j < howlong; j++) {
thearray[j][keeptrack] = 'X';
}
}
}
else if (currentnum == '1') {
for (int j = 0; j < howlong; j++) {
thearray[0][keeptrack++] = 'X';
}
if (i == length - 1) {
break;
}
if (num[i+1] == '0') {
keeptrack--;
for (int j = 0; j < howlong; j++) {
thearray[j][keeptrack] = 'X';
}
}
else if (num[i+1] == '1') {
keeptrack--;
}
}
}
for (int i = 0; i < howlong; i++) {
for (int j = 0; j < keeptrack; j++) {
printf("%c", thearray[i][j]);
}
printf("\n");
}
}