쌀국수가 코딩배우며 개발일기 쓰는곳 RSS 태그 관리 글쓰기 방명록
개발일기/C언어(C,C++) (3)
2021-09-27 22:19:37

별찍기_기초

  j0 j1 j2 j3 j4
i0 * * * * *
i1 * * * * *
i2 * * * * *
i3 * * * * *
i4 * * * * *

 

위의 사진을 표로 나타내었다.

j는 하나의 별을 반복 출력 하기위한 내부 틀이며

ij를 몇 줄 출력할지 반복하기 위한 외부 틀이 될것이다.

 

#include <stdio.h>
int main()
{
    int i, j;

    for(i=0; i<5; i++) //외부 반복 틀 (총 5번 반복)
    {
        for(j=0;j<5;j++) //내부 반복 틀 (총 25번 반복(내부*외부))
        {
        printf("*");
        }
        printf("\n"); //내부 반복이 끝나면 한 줄 띄어쓰기
    }
    return 0;
}

별찍기_비스듬한 계단

  j0 j1 j2 j3 j4 j5
i0 * *        
i1 공백 * *      
i2 공백 공백 * *    
i3 공백 공백 공백 * *  
i4 공백 공백 공백 공백 * *

 

위의 표에서 규칙을 찾아보자.

공백 먼저 출력 후 별을 출력해야하는 규칙과,

공백은 0~4까지 순차적으로 늘어난다는 규칙을 알 수 있다.

그리고 아래 코드와같이 반복문 외부에서 변수를 출력할 일이 없을땐 반복문 초기식 안에서 변수를 선언해주어도 된다.

j, k는 i처럼 타 변수와 비교할 일이 없으므로 k를 j로 써줘도 되지만 헷갈릴까봐 변수 이름을 3개 사용했다.

 

#include <stdio.h>
int main()
{
    for(int i=0; i<5; i++) //총 5줄이 반복 출력된다.
    {
        for(int j=0; j<i; k++) //공백은 0부터 시작해서 i보다 작을때까지 반복한다. (i2(3번째 줄)면 j0,j1 2번 출력)
        {
            printf(" ");
        }
        for(int k=0; k<2; k++) //별은 k0, k1 두 번 출력을 반복한다.
        {
            printf("*");
        }
        printf("\n"); //내부 반복문들이 끝나면 한 줄 띄운다.
    }
}

별찍기_피라미드 (정방향)

  j0 j1 j2 j3 j4 j5 j6 j7 j8
i0 공백 공백 공백 공백 *        
i1 공백 공백 공백 * * *      
i2 공백 공백 * * * * *    
i3 공백 * * * * * * *  
i4 * * * * * * * * *

 

공백은 4~0순으로 감소하면 된다.

별의 규칙을 살펴보자. '1, 3, 5, 7, 9' 즉, 2씩 늘어난다.

처음엔 감을 못잡았다. '어떻게 i 값에 따라 첫줄에 1개만 쓰고 이후 2개씩 늘어나게 하지??' 하고..

i 값에 따라 늘어나야 하므로 아래와 같이 i*2+1을 해주었다.

*첫 줄은 별을 1개만 출력해야 하므로 i0일땐 0*2+1 = 1

 

#include <stdio.h>
int main()
{
    for(int i=0; i<5; i++) //외부 반복문 (5번 반복)
    {
        for(int j=0; j<5-i; j++) //공백 반복 (i0 = j<5-0 = 4번 반복)
        {
            printf(" ");
        }
        for(int k=0; k<i*2+1; k++) //별 반복 (i0 = k<0*2+1 = 0번 반복)
        {
            printf("*");
        }
        printf("\n"); //내부 반복이 끝나면 한 줄 띄어쓰기
    }
}

별찍기_피라미드 (역방향)

  j0 j1 j2 j3 j4 j5 j6 j7 j8
i0 * * * * * * * * *
i1 공백 * * * * * * *  
i2 공백 공백 * * * * *    
i3 공백 공백 공백 * * *      
i4 공백 공백 공백 공백 *        

 

정방향도 했는데 역방향은 쉽지 않을까? 했지만 내 머리로는 쉽지 않았다.

공백은 i 값과 동일하게 늘어나면 된다지만 별은..

별의 왼쪽이 n개가 없어지면 오른쪽도 n개가 없어진다. 또한 i의 값과 왼쪽, 오른쪽의 별이 사라지는 수는 동일하다.

별의 최대 출력수는 9개다. 고로 9개에서 i*2를 빼주면 된다.

 

#include <stdio.h>
int main()
{
    for(int i=0; i<5; i++) //외부 반복문
    {
        for(int j=0; j<i; j++) //공백 반복 (i2 = j<2 = j0,j1 = 2번 반복)
        {
            printf(" ");
        }
        for(int k=0; k<9-i*2; k++) //별 반복 (i2 = k<9-2*2 = k<5 = k0,k1,k2,k3,k4 = 5번 반복)
        {
            printf("*");
        }
        printf("\n"); //내부 반복이 끝나면 한 줄 띄어쓰기
    }
}

 

 

 

 

2021-08-22 11:01:38

이전 Code Runner를 사용하여 구축을 해봤으나 scanf가 실행되지 않았다.
tasks.json을 이용한 환경 구축을 하려고 수많은 블로그들을 참조해봤지만 너무 복잡하기도 하고 오류만 났다.
그나마 제일 간단한 방법을 찾아왔다. (외부 터미널에서 실행되도록 하는 방법도 찾아봐야겠다.)


확장 프로그램 설치

VScode를 처음 깐 사람들의 기준으로 설명하겠습니다. (VScode 설치는 알아서)

좌측 아이콘 바에서 블럭모양 아이콘을 눌러 '확장' 탭으로 들어간 후 하단에 적어놓은 4개의 확장팩을 설치합니다.

C/C++ (C언어를 사용하기 위해 저녀석은 기본으로 까셔야 합니다.)
Codelldb (디버깅을 하기위한 팩이라고 하더라구요.)
Korean Language Pack for Visual Studio Code (한국어 언어팩입니다. 설치 후 재시작 하십시오.)

 


C언어 환경 구축

 

1. c 파일 생성

아무 코드를 입력한 C언어 파일을 생성합니다. (C++말고 C 기준)
파일명 뒤에 .c 를 꼭 붙여야 c언어 파일이 됩니다.

 

 

2. 아무 코드 작성

간단한 hello world 코드를 올려두겠습니다. 복사해서 쓰십시오.

1
2
3
4
5
6
#include <stdio.h>
int main(void)
{
    printf("hello world");
    return 0;
}
cs

 

 

3. tasks.json 생성

command+shift+B를 누른 후 [C/C++: gcc 활성 파일 빌드]의 우측 톱니바퀴 모양을 눌러 tasks.json을 생성합니다.

저는 이것저것 설정해보느라 여러분들의 화면과 다를 수 있습니다.

 

 

4. exe 실행 코드 삽입

생성 후 초기값은 코드가 한 단락밖에 없을겁니다.
아래 사진과 같이 코드 한 단락 아래에 새 코드를 넣어주도록 하겠습니다.

1
2
3
4
5
6
7
8
9
        {
            "label": "EXE",
            "type" :"shell",
            "command": "${fileDirname}/${fileBasenameNoExtension}",
            "group": "build",
            "problemMatcher": [
                "$gcc"
            ]
        }    
cs

붙여 넣은 후 저장~!
*코드를 붙여 넣은 후 반드시 위 사진속 빨간색 박스 선 바로 위 } 이것에 쉼표를 사진과 같이 찍어주어야 합니다.

 

 

 

5. 빌드 실행

command+shift+B 를 누른 후 [C/C++: gcc 활성 파일 빌드]를 실행해 줍니다. (exe 파일을 저장한다는 느낌?)
이후 다시한번 command+shift+B 를 누른 후 [EXE]를 실행해 줍니다. (exe 파일 실행) (EXE 버튼이 없을경우 맨 아래 참고)

*이 작업(빌드 후 실행)은 매 코드 실행마다 해주어야 합니다.

 

빌드 후 실행을 하였다면 아래 사진과 같이 내부 터미널에 코드가 실행된것을 보실 수 있습니다.

저는 여러분들과 다른 코드를 실행했습니다. 여러분들은 hello world가 출력되겠죠.


[EXE] 버튼이 없을 경우

 

상단탭 > 터미널에서 [작업 실행...] 또는 [활성 파일 실행]을 눌러보세요.

저도 새로 구축했다가 [EXE]가 안뜨길래 저거 두개 눌러봤는데 생김..


끝 ^^!

2021-08-13 00:35:50

C언어 수업을 들어야하는데 아무리 구글 뒤져가며 설정해봐도 나만 안되고..
그래서 다시 한번 찾아보다가 발견한 블로그를 보며 따라 설정해봤더니 hello world 출력 됨 ㅠㅠ 감격..
외부 터미널에서도 실행 할 수 있도록 방법을 더 찾아보긴 할건데 일단 환경 구축 방법 기록해둬야지.


 

Visual Studio Code (VScode) 설치

맥(MAC)용 VScode 설치 버튼을 눌러주면 된다.

 


 

확장 프로그램 설치

VScode를 처음 깐 사람들의 기준으로 설명하겠습니다.

좌측 아이콘 바에서 블럭모양 아이콘을 눌러 '확장' 탭으로 들어간 후 하단에 적어놓은 4개의 확장팩을 설치합니다.

C/C++ (C언어를 사용하기 위해 저녀석은 기본으로 까셔야 합니다.)
Code Runner (간단하게 실행시켜주는건가 봅니다.)
Codelldb (디버깅을 하기위한 팩이라고 하더라구요.)
Korean Language Pack for Visual Studio Code (한국어 언어팩입니다. 설치 후 재시작 하십시오.)

 


Code Runner 실행

코드가 입력된 창에서 [우클릭 > Run Code] 또는 [control + option + N]을 눌러 Code Runner를 실행시켜줍니다.
그러면 아래 이미지와 같이 코드가 잘 실행된것을 보실 수 있습니다. (꾸벅)


대부분의 사람들이 저것보단 tasks.json에서 코드를 수정하여 작업하는 이유가 있을텐데
당분간은 저걸 사용하도록 해야겠다.

 

+ (210822)
문제점을 찾았습니다. scanf를 실행할 수 없다. 다음 포스팅에서 tasks.json을 이용한 환경 구축을 설명하겠다.

 

 

 

참고 : https://dmsitter.tistory.com/21