월 24,200원
5개월 할부 시다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 해결됨홍정모의 따라하며 배우는 C++
[심재혁님 질문2]
아 매개변수를 레퍼런스로 받는 것과 값을 복사해서 받는 것과 차이가 있네요. 매개변수를 레퍼런스로 받을 때의 리턴값 매개변수를 값에의한 복사로 받을 때의 리턴값 레퍼런스로 받을 때는 true(32) 이렇게 리턴을 해주면서 값을 출력해주지 않고 레퍼런스로 받지 않을때(값에 의한 복사)일 때는 true 이렇게 리턴을 해주면서 홀수값도 출력해주네요 이렇게 디버거로 찍어보고나면 다른 점을 발견할 수가 있네요. 그리고 else문을 추가해서 모든 경우에 대해 리턴값을 명시해줘야겠다고 생각하고 실행에 옮기면 되겠네요. bool isEven(const int &number) { if (number % 2 == 0) { return true; } // else // { // return false; // } } 그래도 true(32)와 true의 차이는 찾아봐야겠네요. 감사합니다.
- 해결됨홍정모의 따라하며 배우는 C++
[심재혁님질문 디버거로 체크1.]
안녕하세요. 이렇게 디버거로 찍어봤을 때 iseven함수에서 number로 3이 들어왔음에도 1(true)를 리턴하네요. 매개변수를 레퍼런스로 받는 것과는 상관없이 조건문의 문제 같습니다. 그런데 왜 3이 들어왔는데도 true를 리턴하는 걸까요 ㅠㅠ 감사합니다.
- 해결됨홍정모의 따라하며 배우는 C++
[17:12] 음성 public이 아니라 private이 되어야 하는거죠?
m_month; m_day; m_year; 접근 지시자가 없으니까 디폴트로 프라이빗 본 강의 다른 부분에서는 private이라고 말씀해주시고 있어요. 감사합니다.
- 미해결홍정모의 따라하며 배우는 C++
20.4 vcpkg 설치시 Previous IPDB not found, fall back to full compilation 문구가 나옵니다.
C:\Users\audtn\git_repository\vcpkg>bootstrap-vcpkg.bat Building vcpkg.exe ... 생략 Generating code Previous IPDB not found, fall back to full compilation. All 14758 functions were compiled because no usable IPDB/IOBJ from previous compilation was found. Finished generating code vcpkg.vcxproj -> C:\Users\audtn\git_repository\vcpkg\toolsrc\msbuild.x86.release\vcpkg.exe vcpkgmetricsuploader.cpp Generating code Previous IPDB not found, fall back to full compilation. All 5094 functions were compiled because no usable IPDB/IOBJ from previous compilation was found. Finished generating code vcpkgmetricsuploader.vcxproj -> C:\Users\audtn\git_repository\vcpkg\toolsrc\msbuild.x86.release\vcpkgmetricsuploader. exe Building vcpkg.exe... done. 이렇게 나오는데 중간에 Previous IPDB not found, fall back to full compilation. 이러한 문구가 나오는데 무슨 뜻인가요??
- 해결됨홍정모의 따라하며 배우는 C++
[10:30]<자답> cin에 빈칸이 있는 문자열 넣을 때 문제
질문을 작성하면서 정리가 된다는 걸 경험했습니다. <code> #include <iostream> #include <string> using namespace std; int main() { cout << "Your name : " << endl; string name; cin >> name; cout << endl; // cin.ignore(); cout << "Your age : " << endl; string age; cin >> age; cout << endl; cout << "address : " << endl; string addr; cin >> addr; cout << endl; cout << name << "##" << age << "##" << addr << endl; return 0; } <output> PS C:\coding\tbc_review\TBCPP\Chapter4> .\a.exe Your name : hong gil dong Your age : address : hong##gil##dong 요렇게 빈칸을 기준으로 문자열을 받는거네요.감사합니다.
- 미해결홍정모의 따라하며 배우는 C++
[10:30] 문자열 중간에 빈칸이 있을 때 age로 넘어가는 문제
이해가 안돼서줄바꿈을 해줘봤어요 <code> #include <iostream> #include <string> using namespace std; int main() { cout << "Your name : " << endl; string name; cin >> name; cout << endl; // cin.ignore(); cout << "Your age : " << endl; string age; cin >> age; cout << endl; cout << name << "##" << age << endl; return 0; } <output> PS C:\coding\tbc_review\TBCPP\Chapter4> g++ *string.cpp* PS C:\coding\tbc_review\TBCPP\Chapter4> .\a.exe Your name : Jack Jack Your age : Jack##Jack ========================== 첫 번째 cin에서 빈칸 앞의 Jack을 입력받아서 name에 저장하고 두 번째 cin에서 빈칸 뒤의 Jack을 입력받아서 age에 저장하고 줄바꿈을 만나서 입력을 끝낸다는 건가요? 감사합니다.
- 미해결홍정모의 따라하며 배우는 C++
13분 30~40초사이 스스로 대입 방지
hello = hello 같은 스스로 대입을 하면 프로그램 입장에서 문제가 생긴다 하셨는데 구체적으로 어떻게 생기는지 질문해도 될까요?
- 미해결홍정모의 따라하며 배우는 C++
[연습문제풀이3]
while, break, ++ptr 다 사용했습니다. <code> // 네 번째 시도 while (1) { if (*ptr == '\0') break; cout << *(++ptr - 1); } cout << "##" << endl; <output> PS C:\coding\tbc_review\TBCPP\Chapter6> g++ .\6_9.cpp PS C:\coding\tbc_review\TBCPP\Chapter6> .\a.exe Jack jack## 감사합니다.
- 미해결홍정모의 따라하며 배우는 C++
[연습문제풀이2]
while과 break만 사용하고 마지막에 주신 힌트가 ++ptr인데++ptr 이렇게 전위증가를 사용하면 맨 앞의 J가 출력이 안되더라고요 그래서 -1을 사용해봤습니다. 조건을 완벽하게 갖추진 못했네요 . break가 빠졌으니까요. 일단 진도 나간후에 다시 생각해봐야겠네요. <code> // 세 번째 시도 while (*ptr != '\0') { cout << *(++ptr - 1); } cout << "##" << endl; <output> Jack jack## <전체코드> #include <iostream> using namespace std; int main() { char name[] = "Jack jack"; const int n_name = sizeof(name) / sizeof(name[0]); char *ptr = name; // 첫 번째 시도 int i = 0; while (i < n_name) { if (*(ptr + i) == '\0') break; cout << *(ptr + i); ++i; } cout << "##" << endl; //널 캐릭터 확인용 // cout << *(ptr++) << endl; // cout << *(ptr++) << endl; // cout << *(ptr++) << endl; // cout << *(ptr++) << endl; // 두 번째 시도, 굳이 조건이 n_name이 아니어도 됐을 텐데... // while (n_name) // { // if (*ptr == '\0') // break; // cout << *(ptr++); // } // cout << "##" << endl; //널 캐릭터 확인용 // cout << *ptr-- << endl; // 감소 사용 // cout << *ptr-- << endl; // cout << *ptr-- << endl; // 세 번째 시도 while (*ptr != '\0') { cout << *(++ptr - 1); } cout << "##" << endl; // 네 번째 시도 // for (int i = 0; i < n_name; ++i) // { // // cout << char(toupper(name[i])) << endl; // cout << *(ptr + i); // } // cout << "##" << endl; // cout << endl; // long long array[] = {9, 7, 5, 3, 1}; // long long *ptr = array; // for (int i = 0; i < sizeof(array) / sizeof(array[0]); ++i) // { // cout << *(ptr + i) << " " << (uintptr_t)(ptr + i) << endl; // } // short value = 7; // short *ptr = &value; // cout << uintptr_t(ptr - 1) << endl; // cout << uintptr_t(ptr) << endl; // cout << uintptr_t(ptr + 1) << endl; return 0; }
- 미해결홍정모의 따라하며 배우는 C++
[연습문제 풀이]
<code> #include <iostream> using namespace std; int main() { char name[] = "Jack jack"; const int n_name = sizeof(name) / sizeof(name[0]); char *ptr = name; // 첫 번째 시도 int i = 0; while (i < n_name) { if (*(ptr + i) == '\0') break; cout << *(ptr + i); ++i; } cout << "##" << endl; //널 캐릭터 확인용 // cout << *(ptr++) << endl; // cout << *(ptr++) << endl; // cout << *(ptr++) << endl; // cout << *(ptr++) << endl; // 두 번째 시도, 굳이 조건이 n_name이 아니어도 됐을 텐데... while (n_name) { if (*ptr == '\0') break; cout << *(ptr++); } cout << "##" << endl; //널 캐릭터 확인용 // for (int i = 0; i < n_name; ++i) // { // // cout << char(toupper(name[i])) << endl; // cout << *(ptr + i); // } // cout << "##" << endl; // cout << endl; // long long array[] = {9, 7, 5, 3, 1}; // long long *ptr = array; // for (int i = 0; i < sizeof(array) / sizeof(array[0]); ++i) // { // cout << *(ptr + i) << " " << (uintptr_t)(ptr + i) << endl; // } // short value = 7; // short *ptr = &value; // cout << uintptr_t(ptr - 1) << endl; // cout << uintptr_t(ptr) << endl; // cout << uintptr_t(ptr + 1) << endl; return 0; } <output> PS C:\coding\tbc_review\TBCPP\Chapter6> g++ .\6_9.cpp PS C:\coding\tbc_review\TBCPP\Chapter6> .\a.exe Jack jack## Jack jack##
- 해결됨홍정모의 따라하며 배우는 C++
47:16 static int g_x 초기화관련
교수님 로컬 스태틱 변수는 초기화가 반드시 필요하다고 하셨는데 전역 변수에 static 키워드를 사용할 때는 초기화를 안해줘도 되나요? 감사합니다
- 해결됨홍정모의 따라하며 배우는 C++
[13:25] 로컬베어리어블에서 스태틱 키워드관련
교수님컴파일러가 최적화를 해줘서 같은 메모리를 할당받더라도주소만 같은 거지 static 키워드를 사용했을 때처럼 값이 누적되지는 않는 거죠? 컴파일러가 최적화를 해줘서 같은 주소의 메모리를 할당받더라도 초기화는 계속 되는거죠?
- 해결됨홍정모의 따라하며 배우는 C++
11:52초 행렬 곱하기, 인터넷 찾아보고 해결했습니다.
<참고한 자료> https://stackoverflow.com/questions/32974263/2x2-matrix-multiplication 근데 남의 꺼 따라한 거 같고 제가 한 거 같지 않아서 찝찝하네요 ㅠㅠ. 규칙 찾다가 3중 루프에는 접근했었는데 중간에 꼬여서 포기했었거든요. 거의 반나절 걸렸네요 ㅠㅠ. <code> for (int row = 0; row < 2; ++row) { for (int col = 0; col < 2; ++col) { for (int k = 0; k < 2; ++k) { m3[row][col] += m1[row][k] * m2[k][col]; } } cout << endl; } <output> PS C:\coding\tbc_review\TBCPP\Chapter6> g++ .\matrixByMatrix.cpp PS C:\coding\tbc_review\TBCPP\Chapter6> .\a.exe 19 22 43 50 <전체코드> #include <iostream> using namespace std; int main() { int m1[2][2] { {1, 2}, {3, 4}, }; int m2[2][2] { {5, 6}, {7, 8}, }; int m3[2][2] = {0}; // int m3[2][2] = {{1,2},{3,4}}; // m3[0][0] = m1[0][0] * m2[0][0] + m1[0][1] * m2[1][0]; // m3[0][1] = m1[0][0] * m2[0][1] + m1[0][1] * m2[1][1]; // m3[1][0] = m1[1][0] * m2[0][0] + m1[1][1] * m2[1][0]; // m3[1][1] = m1[1][0] * m2[0][1] + m1[1][1] * m2[1][1]; // int sum = 0; for (int row = 0; row < 2; ++row) { for (int col = 0; col < 2; ++col) { for (int k = 0; k < 2; ++k) { m3[row][col] += m1[row][k] * m2[k][col]; } } cout << endl; } // cout << multiplyTemp1 << " "; // cout << endl; /* m3 = [00, 01] [10, 11] * */ for (int row = 0; row < 2; ++row) { for (int col = 0; col < 2; ++col) { cout << m3[row][col] << '\t'; } cout << endl; } // for (int i = 0; i < 2; ++i) // { // for (int j = 0; j < 2; ++j) // { // // {1, 2} {5, 6} // // {3, 4} {7, 8} // m3[i][j] = m1[i][j] * m2[j][i] + m1[i][j + 1] * m2[j + 1][i]; // cout << m3[i][j] << "\t"; // } // cout << endl; // } return 0; }
- 해결됨홍정모의 따라하며 배우는 C++
11:52 행렬x행렬 for문에서 막히네요.
2시간 동안 고민해봤지만 힘드네요. 계속 시도는 해보겠습니다. <code> #include <iostream> using namespace std; int main() { int m1[2][2] { {1, 2}, {3, 4}, }; int m2[2][2] { {5, 6}, {7, 8}, }; int m3[2][2] = {0}; // int m3[2][2] = {{1,2},{3,4}}; // m3[0][0] = m1[0][0] * m2[0][0] + m1[0][1] * m2[1][0]; // m3[0][1] = m1[0][0] * m2[0][1] + m1[0][1] * m2[1][1]; // m3[1][0] = m1[1][0] * m2[0][0] + m1[1][1] * m2[1][0]; // m3[1][1] = m1[1][0] * m2[0][1] + m1[1][1] * m2[1][1]; int multiplyTemp1; int multiplyTemp2; for (int row = 0; row < 2; ++row) { for (int col = 0; col < 2; ++col) { m3[row][row] += m1[row][col] * m2[col][row]; // if (row == 0 || row == 1) // { // multiplyTemp1 += m1[row][col] * m2[col][row]; // } } cout << endl; } // cout << multiplyTemp1 << " "; // cout << endl; /* m3 = [00, 01] [10, 11] * */ for (int row = 0; row < 2; ++row) { for (int col = 0; col < 2; ++col) { cout << m3[row][col] << '\t'; } cout << endl; } // for (int i = 0; i < 2; ++i) // { // for (int j = 0; j < 2; ++j) // { // // {1, 2} {5, 6} // // {3, 4} {7, 8} // m3[i][j] = m1[i][j] * m2[j][i] + m1[i][j + 1] * m2[j + 1][i]; // cout << m3[i][j] << "\t"; // } // cout << endl; // } return 0; } <output> PS C:\coding\tbc_review\TBCPP\Chapter6> g++ .\matrixByMatrix.cpp PS C:\coding\tbc_review\TBCPP\Chapter6> .\a.exe 19 0 0 50 \ 형태로 대각 성분만 억지로 끼워맞췄습니다. ㅠㅠ 감사합니다.
- 해결됨홍정모의 따라하며 배우는 C++
MinGW installation manager를 어디서 열어야 하나요?
안녕하세요! 선생님 말씀하신 옵션으로 코드블럭스를 설치했는데, MinGW installation manager를 어떻게 열어야하는지 모르겠습니다.. 당장은 visual studio로 공부하겠지만, 차후에 학교 과제를 할 때 code blocks도 많이 이용된다고 해서 gdb를 설치해두고 싶은데, installation manager를 어디서 열어야 하나요??
- 미해결홍정모의 따라하며 배우는 C++
11:52 행렬x행렬 하드 코딩으로 해봤습니다.
<code> #include <iostream> using namespace std; int main() { int m1[2][2] { {1, 2}, {3, 4}, }; int m2[2][2] { {5, 6}, {7, 8}, }; int m3[2][2] = {0,}; m3[0][0] = m1[0][0] * m2[0][0] + m1[0][1] * m2[1][0]; m3[0][1] = m1[0][0] * m2[0][1] + m1[0][1] * m2[1][1]; m3[1][0] = m1[1][0] * m2[0][0] + m1[1][1] * m2[1][0]; m3[1][1] = m1[1][0] * m2[0][1] + m1[1][1] * m2[1][1]; for (int row = 0; row < 2; ++row) { for (int col = 0; col < 2; ++col) { cout << m3[row][col] << '\t'; } cout << endl; } // for (int i = 0; i < 2; ++i) // { // for (int j = 0; j < 2; ++j) // { // // {1, 2} {5, 6} // // {3, 4} {7, 8} // m3[i][j] = m1[i][j] * m2[j][i] + m1[i][j + 1] * m2[j + 1][i]; // cout << m3[i][j] << "\t"; // } // cout << endl; // } return 0; } <결과> PS C:\coding\tbc_review\TBCPP\Chapter6> g++ .\matrixByMatrix.cpp PS C:\coding\tbc_review\TBCPP\Chapter6> .\a.exe 19 22 0 0 PS C:\coding\tbc_review\TBCPP\Chapter6> g++ .\matrixByMatrix.cpp PS C:\coding\tbc_review\TBCPP\Chapter6> .\a.exe 19 22 43 50 이제 저걸 for문으로 출력해보겠습니다.
- 해결됨홍정모의 따라하며 배우는 C++
알고리즘 연습할 때, 솔루션과 프로젝트 구조
안녕하세요. 강의를 다 듣고 책을 통해 알고리즘을 공부하는 중 입니다. 책의 경우 각각 챕터가 존재하고 챕터마다 여러 문제가 존재하는데 어떻게 솔루션과 프로젝트 구조를 잡을지 고민이 있어 질문을 합니다. 제가 하고 싶은 방향은 각 챕터를 프로젝트로 관리하고 문제는 파일로 관리하고 싶습니다. 하지만, 하나의 프로젝트에는 하나의 main 파일만 존재해야기 때문에 다른 문제를 풀려면 이전에 풀었던 문제를 모두 주석 처리를 해야해서 불편함이 있습니다. 이 경우는 하나의 챕터를 솔루션으로 설정하고 문제 하나를 프로젝트로 관리하는 방법이 가장 좋을까요?? 구글에 검색해서 해결하고 싶은데 마땅히 검색 키워드를 모르겠네요. When solving algorithm problems, how to set solution and project structure in vs 감사합니다.
- 미해결홍정모의 따라하며 배우는 C++
전위 연산자 만들기 4분21초 기준 14번째 줄
++m_digit; 부분을 ++(*this); 로 바꾸면 작동이 안됩니다, 왜 안되는 건지 궁금합니다.
- 미해결홍정모의 따라하며 배우는 C++
4분쯤 나온 코드 27번째 줄 질문입니다.
arr[i].getCents() = i; 로 i값을 arr[i]에 대입하셨는데 .getCents()에 무슨 의미가 있는지 궁금합니다.
- 해결됨홍정모의 따라하며 배우는 C++
(03:37) 리터럴리
(03:37)엌 어제 어떤 여학생들이 옆에 지나가면서 "야 리터럴리 그렇지않냐?" 이러던게 떠오르네요 ㅋㅋ