프로그래밍언어/C

[c] 왼쪽 정렬, 가운데 정렬, 오른쪽 정렬, 양쪽 정렬 프로그램 만들기

dan2el 2021. 8. 26. 00:21
#include <stdio.h>

int main() {

  while (1) {
    char word[150] = {
        '\0',
    };            //문자열을 입력받은 배열
    char num[50]; //기준이 되는 숫자를 입력받은 배열
    char word1[150] = {
        '\0',
    }; // space bar를 입력받은 후 배열을 입력받아서 출력하는  배열
    int choice = 0; //선택 변수
    int cnt = 0, cnt1 = 0;
    int cnt_word1 = 0; //배열을 넣어줄 위치를 정하는 변수
    int i = 0, j = 0;  //반복문 변수

    printf("\n\n선택 ㄱㄱ\n");
    printf("1. 왼쪽 정렬\t2. 가운데 정렬\t3.오른쪽 정렬\t4. 양쪽 정렬\n");
    scanf("%d", &choice);
    getchar();

    printf("입력 ㄱㄱ\n");
    scanf("%[^\n]", word);
    getchar();
    printf("\n\n");

    // for(j=0;j<5;j++){
    //     for(i=0;i<10;i++){
    // 	num[i]=i;
    // 	printf("%d",num[i]);
    //     }
    // }
    for (i = 0; i < 150; i++) {
      word1[i] = 32;
      printf("%c", word1[i]);
    }
    word1[150] = '\0';
    printf("\n");

    // 32~126 : ASCII code 범위
    for (i = 0; i < 150; i++) {
      if (word[i] >= 32 && word[i] <= 126) {
        cnt += sizeof(word[i]);
      } else if (word[i] == '\0') {
        continue;
      } else {
        cnt1 += sizeof(word[i]);
      }
    }

    switch (choice) {
    case 1: //왼쪽 정렬
      for (i = 0; i < cnt + cnt1; i++) {
        cnt_word1 = i;
        word1[cnt_word1] = word[i];
      }
      printf("%s\n", word1);
      break;
    case 2: //가운데 정렬

      for (i = 0; i < cnt + cnt1; i++) {
        cnt_word1 = 25 + i - cnt / 2 - cnt1 / 3;
        word1[cnt_word1] = word[i];
      }

      printf("%s\n", word1);
      break;

    case 3: //오른쪽 정렬
      for (i = 0; i < cnt + cnt1; i++) {
        cnt_word1 = 50 + i - cnt - 2 * cnt1 / 3;
        word1[cnt_word1] = word[i];
      }

      word1[150] = '\0';
      printf("%s\n", word1);
      break;

    case 4:                              //균등 정렬
      for (i = 0; i < cnt + cnt1; i++) { //영어까지 구현 완료.
        if (word[i] >= 32 && word[i] <= 126) {
          cnt_word1 = i * 49 / (cnt + cnt1 - 1); //영어
          word1[cnt_word1] = word[i];
          j = 0;
          for (j = cnt_word1 + 1; j < 150; j++) {
            word1[j] = 32;
          }
        } else {
          cnt_word1 = i * (47 + cnt1 / 3) / (cnt + cnt1 - 3); //한글
          word1[cnt_word1] = word[i];
          word1[cnt_word1 + 1] = word[i + 1];
          word1[cnt_word1 + 2] = word[i + 2];
          i += 2;
          j = 0;
          for (j = cnt_word1 + 3; j < 150; j++) {
            word1[j] = 32;
          }
        }
      }

      word1[150] = '\0';
      printf("%s\n", word1);
      break;

    case 5: //추가 입력 선택
      printf("더 입력할까요?\n");
      printf("1. 네\t2.d아니오\n");
      break;
    }
  }
}

 

실행 결과