Submission

Status:

----xxxxxx

Subtask/Task Score:

0/100

Score: 0

User: theem1502

Problemset: กราฟสัญญาณดิจิทัล

Language: c

Time: 0.003 second

Submitted On: 2025-09-26 15:27:32

#include <stdio.h>
#include <stdlib.h>

int main() {
    char num[101];
    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");
    }

}