728x90

프로그래밍/C,C++ 40

[C/C++] 로또 번호 셔플 예제

로또번호 셔플 예제입니다. #include #include // random 헤더파일 #include // time헤더파일 #include //sleep을 위한 헤더파일 using namespace std; //namespace std선언 void shuffle(); void ShuffleOnce(int* firstNumber, int* secondNumber); int main() { setbuf(stdout, NULL); // macOS에서 sleep을 줄때 버퍼를 없애기 위함 shuffle(); } void shuffle() { // {배열의 선언과 초기화 int numbers[45] = {0,}; for(int i = 0; i< 45; i++) { numbers[i] = i+1; } //배열의 선..

C++ 컴파일 과정

일반적으로 컴파일은 아래의 순서로 이루어집니다. 전처리 과정(preprocessor) 컴파일 과정(compiler) 어셈블러 과정(assembler) 링킹 과정(linker) 전처리 과정 소스 코드 파일을 전처리기가 처리한다. .cpp로 된 텍스트 파일(소스코드)의 주석을 제거하고, 헤더파일을 삽입하며 매크로를 치환하여 적용합니다. * 여기서 매크로는 #define 뒤에 적혀있는것을 의미합니다. #define Pi 3.14 라고 써있으면 PI가 매크로, 3.14는 매크로 상수라고 부르며 PI라는 문자를 3.14로 치환해줍니다. 컴파일 과정 전처리된 소스코드를 컴파일러가 문법 및 구문을 검사하며, 어셈블러에 넘기기 전 중간 코드를 생성합니다. front-end, middle-end, back-end 크게 ..

배열(array) 예제와 함께 가볍게 알아보기

배열은 둘 이상의 변수를 연속적으로 모아 놓은 것이다. 프로그램에서 지역변수 선언해주게 되면 메모리는 차곡차곡 쓰는것이 아니라, 공간상에 비어있는곳에 아무렇게나 할당된다. (무규칙하다) 그러나 배열을 통해 변수를 선언하게 되면 첫번째 주소는 무규칙 >> 두번째 주소는 첫번째 주소에 딱 붙여서 생긴다. 즉 공간을 효율적으로 사용할 수 있기 때문에 공간을 아낄 수 있다. 참고로 아래 사진에서 배열은 데이터형이 int이기 때문에 각각의 공간 하나는 4byte이다. int numbers[5]는 4byte * 5 = 20byte를 메모리에서 차지한다. 배열의 선언방법 1) int numbers[5]; numbers[0] = 1; ~~~~~ 입력해주기 2) int numbers[5] = {1,2,3,4,5}; >>..

형변환(type casting)

형변환은 잘 쓰지않는다. 이런것이 있다는내용만 알고있으면 된다. 자료형을 강제로 변환하는 기능이다. 값의 손실이 일어날 수 있다. 정상적인 형변환( 아래 코드를 수행하면 A의 아스키코드인 65가 출력된다.) // 형변환 테스트 #include void Description002(); // 형변환 테스트 함수 int main(){ Description002(); } void Description002() { // 캐스팅 테스트 char char_ = 'A'; int int_ = char_; //float floatValue = 100.123; //int_ = floatValue; printf("int_ 변수 안에 무슨 값이 들어있나? %d \n",int_); } 비정상적인 형변환 (아래 코드를 수행하면 0..

[오류_C/C++] clang: error: linker command failed with exit code 1 (use -v to see invocation) 에러

문제, 오류내용 clang: error: linker command failed with exit code 1 (use -v to see invocation) 에러 당당하게 적혀있는 에러를 볼 수 있다. 오류가 발생한 코드는 아래와 같다. #include #include //시간 #include //rand,srand #include // 대체 #include int main(){ setbuf(stdout, NULL); // 버퍼링 비활성화 int dice = 0; int dice2; srand(time(NULL)); printf("주사위의 숫자는 : "); dice2 = getch(); if(dice2 == 1){ for(int count = 0; count < 3; count++){ sleep(1);..

[C/C++]while, for, switch, rand 알아보기

1. while 문 구조 while(조건식){ 내용 } 중괄호{}안의 내용은 Continue와 break를 통해 제어할 수 있다. 조건식이 참인경우 계속해서 내용을 반복한다. 조건식이 거짓인 경우, while문을 종료한다. 위에서 알수있는점 1. continue; 를 만나게 될경우 continue; 아래내용은 수행하지 않고 다시 while문 처음으로 돌아간다. 2. break;을 만나게 될경우 아래내용은 수행하지 않고, while문에서 탈출한다. 2. for문 구조 for(초기값 ; 조건식 ; 수식){ 내용 } 변수선언 > 조건이 참일경우 > 내용수행 > 수식 > 조건식 > 내용 > 수식 3. switch 문 구조 switch(조건문){ case 값1: 내용 ; break; case 값2: 내용 ; br..

C 예제 2번째 (홀짝게임)

For, while, random관련내용을 배우고 수행한 예제이다. 홀짝게임 (첫번째 코딩) //홀짝 게임 //컴퓨터가 주사위를 2번 굴린다. //플레이어는 숫자를 미리 볼 수 있다. 총합이 홀수인지, 짝수인지 출력한다.(Easy) //플레이어는 숫자를 미리 볼 수 없다. 플레이어가 홀,짝을 맞춰야한다.(Normal) #include #include #include #include #include // 윈도우에서는 이다. int main(){ int dice,dice2; int randomNumber1,randomNumber2,randomNumber3,randomNumber4; int diceSum,diceSum2; char mode; srand(time(NULL)); randomNumber1 = (ra..

[오류_C/C++] Mac에서 sleep함수 사용하는 방법 feat 버퍼링

목차 Sleep() 문제점 해결방법 Sleep() 지연시간을 주는 함수이다. windows에서는 #include 와 함께 사용된다. 하지만 Mac에서는 다르다. Sleep( )괄호 안에는 숫자를 넣어 지연시간을 설정하는데, windows에서는 ms(밀리새컨드) 단위이다. (즉, 1초를 지연시키고 싶다면 1000을 넣어주면된다. 하지만 Mac에서는 다르다.) 문제점 Mac OS와 Windows는 헤더파일과 함수, 사용법에서 차이가 있다. 아래 예제(주사위를 3번 던지고 나온 값을 1초마다 각각 출력)를 수행하고싶었다. 아래 예제는 현재 sleep이 반영이 안되어있다. #include #include //시간 #include //rand,srand int main(){ int dice = 0; srand(t..

[오류_C/C++] MAC에서 system("cls")를 사용하고싶다면?

macOS에서는 windows와 다르게 허용되는 헤더파일들이 많이 다르다. 그중 콘솔의 화면을 clear해주는 문장을 Mac에서 사용하고싶다면 #include system("clear"); 이렇게 두가지를 이용해주면된다. Mac이랑 Window랑 헤더파일 다른것과 함수 사용법이 꽤 많이 다른것같은데, 함께 협업 프로젝트를 한다면 어떻게 해야하는지 알아보는게 좋을것 같다.

예제) 크리티컬 확률과 몬스터 사냥하기 feat 줄 정렬

느낀점 줄 정렬이라는것을 처음 신경써서 해보았다. 아직 주석이라는 부분을 신경쓰지 못해서 아쉬운데 다음 예제부터는 주석도 신경쓰고자 한다. /* 지난번에 만들었던 크리티컬 데미지 주는 함수 수정해서 60% 확률로 크리티컬 데미지 주는 함수로 만들기 - Loop 사용해서 종료 입력 전까지 반복 - 플레이어가 어떤 상태인지 출력해서 보여줄 것(왜 크리티컬인지, 아닌지 알 수 있어야 함) */ #include #include #include #include #include // 윈도우에서는 이다. int main(){ int criticalPercent; int damage, cridamage; int monster = 100; srand(time(NULL)); printf("[몬스터 등장]\n"); whil..

728x90