inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

[04:58] 연습문제 9-> 0, 0->9 로 돌아가게 하는 법

미해결

홍정모의 따라하며 배우는 C++

안녕하세요. 연습문제 풀어봤습니다. 9에서 ++ 하면 0이 되게 하는 부분은 m_digit == 9 일 때는 그냥 m_digit에 0을 대입 했습니다. <코드> Digit & Digit :: operator ++ () { if (m_digit == 9 ) { m_digit = 0 ; } else { ++m_digit; } return * this ; } Digit & Digit :: operator -- () { if (m_digit == 0 ) { m_digit = 9 ; } else { --m_digit; } return * this ; } Digit Digit :: operator ++ ( int ) { Digit temp (m_digit); // m_digit++; ++(* this ); return temp; } Digit Digit :: operator -- ( int ) { Digit temp (m_digit); // m_digit++; --(* this ); return temp; } <출력> PS C:\coding\tbcpp_review\Chapter9> .\a.exe prefix --0 9 9 prefix ++9 0 0 postfix 0-- 0 9 postfix 9++ 9 0 <전체코드> #include <iostream> using namespace std ; class Digit { private: int m_digit; public: Digit ( int digit = 0 ) : m_digit (digit) {} // prefix Digit & operator ++ (); Digit & operator -- (); // postfix Digit operator ++ ( int ); Digit operator -- ( int ); friend ostream & operator << ( ostream & out , const Digit & digit ) { out << digit . m_digit ; return out; } }; Digit & Digit :: operator ++ () { if (m_digit == 9 ) { m_digit = 0 ; } else { ++m_digit; } return * this ; } Digit & Digit :: operator -- () { if (m_digit == 0 ) { m_digit = 9 ; } else { --m_digit; } return * this ; } Digit Digit :: operator ++ ( int ) { Digit temp (m_digit); // m_digit++; ++(* this ); return temp; } Digit Digit :: operator -- ( int ) { Digit temp (m_digit); // m_digit++; --(* this ); return temp; } int main () { Digit digit1 ( 0 ); Digit digit2 ( 9 ); Digit digit3 ( 0 ); Digit digit4 ( 9 ); cout << "prefix --0" << endl; cout << "--digit1(0) : " << --digit1 << endl; cout << "digit1(0) : " << digit1 << endl; cout << "prefix ++9" << endl; cout << ++digit2 << endl; cout << digit2 << endl; cout << "postfix 0--" << endl; cout << digit3-- << endl; cout << digit3 << endl; cout << "postfix 9++" << endl; cout << digit4++ << endl; cout << digit4 << endl; return 0 ; } 감사합니다.

  • C++
호두 댓글 1 좋아요 2 조회수 237

25분 01초경 중괄호 안 x=1

해결됨

홍정모의 따라하며 배우는 C++

중괄호 안에서만 x=1이 쓰이고나서 중괄호 밖으로 나오면 다시 main문의 x가 쓰여야하는 것아닌가요? 왜 계속 중괄호 한의 1이 사용되는지 헷갈립니다

  • C++
tjrwn0716 댓글 2 좋아요 1 조회수 233

MinGW installation manager를 어디서 열어야 하나요?

해결됨

홍정모의 따라하며 배우는 C++

안녕하세요! 선생님 말씀하신 옵션으로 코드블럭스를 설치했는데, MinGW installation manager를 어떻게 열어야하는지 모르겠습니다.. 당장은 visual studio로 공부하겠지만, 차후에 학교 과제를 할 때 code blocks도 많이 이용된다고 해서 gdb를 설치해두고 싶은데, installation manager를 어디서 열어야 하나요??

  • C++
삼다 댓글 2 좋아요 0 조회수 428

질문입니다.

미해결

it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비

혹시 n이 주어지면 n번째 위치한 숫자를 반환하려면 어떻게 해야될까요?

  • C++
  • 코테 준비 같이 해요!
두리황 댓글 2 좋아요 0 조회수 265

정적 바인딩과 동적 바인딩 차이가 이해가 안됩니다.

미해결

홍정모의 따라하며 배우는 C++

교수님 저도 이 강의에서 13일전에 나왔던 질문자와 같은 질문이 있습니다. "두 코드를 비교하시면서 동적, 정적 바인딩의 차이를 설명해주셨는데, 결국 result나 func_ptr 모두 런타임에서 op값이 무엇이냐에 따라서 결정되는 것 아닌가요?" 이런질문이 있었는데 강의가 어느부분인지 표기해서 올리라고 하신 답글을 달아주셨네요. 여기에 덧붙여서 좀더 디테일하게 질문을 하자면, 결국 op를 cin으로 런타임에 받아서 그 op에 따른 케이스에따라 result 나 func_ptr이나 모두 결정되는 것이 아닌가합니다. 그래서 cout << result << endl;이나 cout << func_ptr(x,y) << endl; 이나 동일하게 런타임에 입력하는 op값에 따라 결정되는 것이 아닌가 생각합니다. 그래서 차이를 잘 모르겠습니다. 강의는 12.5 동적바인딩과 정적바인딩이고 1분15초쯤입니다. 교수님께서 질문을 하면 고민 더 해보라고 하시는 답글을 매번 해주시는 것 같아서 질문 전에 자료도 찾아보고 고민해봤는데 이 예제에서의 정적바인딩 동적바인딩 차이를 가늠하기가 좀 어렵네요 찾아보면 대부분이 예제를 int a = 0 이런걸 정적바인딩으로 설명해서 이미 컴파일타임에 a가 결정되는 이런걸 정적바인딩이라고 설명을 해놓아서 더욱 헷갈리는 것 같습니다. 교수님의 보다 자세한 의견을 듣고싶습니다.

  • C++
sualyer010 댓글 3 좋아요 5 조회수 1019

6.3 배열과 반복문

미해결

홍정모의 따라하며 배우는 C++

안녕하세요 교수님, 11분 40초에 < 부호에 <=로 바꾸면 run time error가 난다는 게 무슨 뜻인가요? 프로그램 상 작동은 아웃풋 값은 똑같이 작동이 되길래 궁금해서 질문 올립니다. 감사합니다!

  • C++
민경준 댓글 4 좋아요 1 조회수 419

m_i 값이 안바뀌는 이유가 뭔가요?

미해결

홍정모의 따라하며 배우는 C++

// // main.cpp // inheritance_ex01 // // Created by Kevin on 04/10/2019. // Copyright &copy; 2019 Kevin. All rights reserved. // #include <iostream> using namespace std; class Mother { // basic class private: int m_i; public: //Mother() {} Mother(const int& i_in) : m_i(i_in) { std::cout << "Mother constructor" << std::endl; std::cout << "m_i " << m_i << std::endl; } void setValue(const int& i_in) { std::cout << "i_in " << i_in << std::endl; m_i = i_in; std::cout << "m_i " << m_i << std::endl; } int getValue() { return m_i; } }; class Child : public Mother { private: double m_d; public: Child(const int& i_in, const double& d_in) : Mother(i_in), m_d(d_in) { std::cout << "Child constructor" << std::endl; Mother::setValue(i_in); } void setValue(const int& i_in, const double& d_in) { } void setValue(const double& d_in) { m_d = d_in; } double getValue() { return m_d; } }; // derived class int main(int argc, const char * argv[]) { Mother mother(512); std::cout << mother.getValue() << std::endl; Child child(1024, 2048); std::cout << "m_i value : " << mother.getValue() << std::endl; // 왜 512인가요? std::cout << "m_d value : " << child.getValue() << std::endl; return 0; }

  • C++
김영성 댓글 4 좋아요 1 조회수 378

상속 질문 있습니다

해결됨

홍정모의 따라하며 배우는 C++

class Base { public: int x; }; class Derived : Base { }; 상속받은 Derived옆에 Base의 접근지정자를 쓰지 않으면 private으로 접근지정자가 들어가는건가요? 접근지정자를 쓰지않아도 오류가 뜨지않는걸 보니 자동으로 뭔가가 들어가는거 같아요

  • C++
오늘했던거 까먹는사람 댓글 1 좋아요 0 조회수 146

10.06 컨테이너 클래스 질문있습니답

해결됨

홍정모의 따라하며 배우는 C++

안녕하세요 교수님 첫질문입니다ㅎㅎ reset(), resize(), insertBefore(const int& value, const int& ix), remove(const int& ix), push_back(const int & value) 이렇게 함수 제목을 정해 주셨는데 resize()에서 input이 없이 구현이 가능해서 알려주신것 같은데 어떻게 input없이 resize를 할수 있는지 궁금합니다... 아래 코드는 제가 만든 함수코드 입니다 //컨테이너 클래스 //다른 클래스들을 담는 클래스 #include <iostream> #include <initializer_list> using namespace std; class IntArray { private: int m_length = 0; int* m_data = nullptr; public: IntArray(const int& length) : m_length(length) { m_data = new int[length]; } IntArray(const std::initializer_list<int> &arr) :IntArray(arr.size()) { int count = 0; for (auto & e : arr) { m_data[count] = e; ++count; } } ~IntArray() { delete[] m_data; } void reset() { delete[] m_data; } void resize(const int & rsize) { //이부분이 궁금합니다!!! m_length = rsize; int* temp = new int[rsize]; memcpy(temp, m_data, sizeof(int) * m_length); reset(); m_data = temp; } void insertBefore(const int& value, const int& ix) { resize(m_length + 1); for (int i = m_length-2; i > ix-1; --i) m_data[i + 1] = m_data[i]; m_data[ix] = value; } void remove(const int& ix) { for (int i = ix + 1; i < m_length; i++) m_data[i - 1] = m_data[i]; resize(m_length - 1); } void push_back(const int & value) { resize(m_length + 1); m_data[m_length-1] = value; } friend ostream& operator << (ostream& out, IntArray& arr) { for (unsigned i = 0; i < arr.m_length; i++) out << arr.m_data[i] << " "; return out; } }; int main() { IntArray my_arr{ 1,3,5,7,9 }; cout << my_arr << endl; my_arr.insertBefore(10, 1); //1, 10, 3, 5, 7, 9 cout << my_arr << endl; my_arr.remove(3); //1, 10, 3, 7, 9 cout << my_arr << endl; my_arr.push_back(13); //1, 10, 3, 7, 9, 13 cout << my_arr << endl; return 0; }

  • C++
오늘했던거 까먹는사람 댓글 1 좋아요 2 조회수 215

13.4강 클래스 멤버 함수 특수화

미해결

홍정모의 따라하며 배우는 C++

특수화를 클래스 내부에 선언, 정의는 불가능한가요?

  • C++
최종민 댓글 1 좋아요 2 조회수 201

32번 선택정렬 질문입니다.

미해결

it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비

//32번 #include<stdio.h> #include<vector> #include<algorithm> using namespace std; int main() { int n; int tmp; scanf("%d",&n); vector<int>a(n); for(int i=0;i<n;i++) { scanf("%d",&a[i]); } for(int i=0;i<n;i++) { for(int j=i+1;j<n;j++) { if(a[i]>a[j]) { tmp=a[i]; a[i]=a[j]; a[j]=tmp; } } } for(int i=0;i<n;i++) { printf("%d ",a[i]); } } 제가 이런식으로 짰는데요 정렬은 잘되지만 선생님과 코드가 달라서요 제가 짠것은 버블정렬인가요?

  • C++
  • 코테 준비 같이 해요!
댓글 3 좋아요 0 조회수 263

19번 문제 질문입니다.

미해결

it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비

#include <stdio.h> int main() { int a[105]={0,}; int n,t,j; int num; int sum=0; scanf("%d",&n); for(int i=1;i<=n;++i) { scanf("%d",&a[i]); } for(int i=1;a[i]!=0;++i) { for(j=i+1;a[j]!=0;++j) { if(a[i]<=a[j]) break; if(a[j+1]==0) { sum++; } } } printf("%d",sum); } 선생님 19번문제를 이렇게 풀면 채점결과 통과는합니다. 하지만 시간을 효율적으로 더 줄이기위해서 a[i]가 a[j]보다 작아서 break 되는순간 a[i]를 ++i를 이용하지않고 바로 a[j]부터 시작해서 비교를 하려는 생각을 해봤습니다. 55 34 46 89가 있으면 55가 89에 걸리는순간 89부터 검사를 하려구요 그래서 이렇게 다시 짜봤습니다. #include <stdio.h> int main() { int a[105]={0,}; int n,t,j; int num; int sum=0; scanf("%d",&n); for(int i=1;i<=n;++i) { scanf("%d",&a[i]); } for(int i=1;a[i]!=0;++i) { for(j=i+1;a[j]!=0;++j) { if(a[i]<=a[j]) { i=j; break; } if(a[j+1]==0) { sum++; } } } printf("%d",sum); } i=j를 넣는방식으로 짰는데 이러면 어떤건 통과하고 어떤건 통과가안되더라구요 그 이유가 뭔가요??

  • C++
  • 코테 준비 같이 해요!
댓글 2 좋아요 0 조회수 201

selection 에 문자나 범위를 초과하는 수를 넣으면

미해결

홍정모의 따라하며 배우는 C++

안녕하세요, 교수님. 좋은 강의 감사합니다. selection에 문자와 범위를 초과하는 수를 넣었는데 그림과 같이 무한으로 도는걸 발견했습니다. 디버깅으로 selection을 보면 문자일 때는 0으로 나왔습니다. selection에 문자나 엄청나게 큰 수를 넣으면 do-while 안에 내용이 왜 무한으로 도는 건가요??

  • C++
유동호 유 댓글 1 좋아요 3 조회수 204

struct, tuple 의 return 형태 관련

미해결

홍정모의 따라하며 배우는 C++

안녕하세요 교수님, struct 와 tuple 의 경우 아래처럼 프린트를 해보니까 return by reference 로 반환하는것 같습니다. (주소가 같네요). 이 경우에는 영상 초반의 return by reference 와 달리 에러 메시지도 안나오고 문제가 없는지요? using namespace std; struct Something { int a; int d; }; Something getSomething() { Something s { 4 , 7 }; cout << &s << " " << sizeof (s) << endl; return s; } tuple< int , double , double > getTuple() { int a = 10 ; double d = 3.14 ; tuple< int , double , double > tup = make_tuple(a, d, 0.0 ); cout << &tup << " " << sizeof (tup) << endl; return tup; } int main() { // tuple<int, double, double> tup = getTuple(); // cout << &tup << " " << sizeof(tup) << endl; Something s = getSomething(); cout << &s << " " << sizeof (s) << endl; }

  • C++
aeriepeak 댓글 1 좋아요 2 조회수 191

제 코드 어떤부분을 수정하면 되는걸까요?

미해결

it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비

16번문제 인데요 5번만 통과가안되더라구요 int main() { //freopen("input.txt", "rt", stdin); char a[100]; char b[100]; int i, j=0; int sum; char tmp; scanf("%s%s", a, b); for (i = 0; a[i] != '\0'; ++i) { for (j=0; b[j] != '\0'; ++j) { if (a[i] == b[j]) { tmp = b[i]; b[i] = b[j]; b[j] = tmp; } } } sum = strcmp(a, b); if (sum == 0) printf("YES"); else printf("NO"); } 이런식으로 정렬해서 b배열을 a배열처럼 같게만들어서 비교하는거였는데 시간이 오래걸려서 에러가뜨는건가요??.. 비쥬얼스튜디오에서는 stack 'a' corrupted ~~라고 나오는데 이거 너무 오래걸려서 에러나는건가요?? dev에서는 NO라고나오네요 비쥬얼은 YES라고 나오는데 에러뜨구요 어떤점이 잘못된건가요? 선생님이 알려주신 답변은 이해했는데 제 코드에서 수정하는거로는 성공시킬수없나요? 버블정렬n2이라서 그런건가요???

  • C++
  • 코테 준비 같이 해요!
댓글 1 좋아요 0 조회수 292

9번 모두의 약수 코드와 처음에 알려주신 반복문 코드 차이가 무엇인가요?

미해결

it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비

9번 #include <iostream> using namespace std; int main(void) { int num,i,j=1; int sum; scanf("%d",&num); if(num>=5 && num <=50000) for(i=1;i<=num;++i) { sum=0; for(j=1;j<=i;++j) { if(i%j==0) sum++; } printf("%d ",sum); } } }이런식으로 코딩하면 n제곱이라고 알려주셨는데 반복문이 2개써서 n의 제곱인가요?? 선생님이 알려주신 시간이 더 적게 드는 방법도 반복문이 2개인데 이것의 시간복잡도를 구하는 방법은 없는건가요? 어떻게해서 nlog n보다는 덜 하다는 걸 구하셧는지 소스를 보고 시간복잡도를 대략적으로 구하는 방법이 궁금합니다!

  • C++
  • 코테 준비 같이 해요!
댓글 3 좋아요 0 조회수 377

visual studio에서 freopen은 어떻게 사용하나요?

미해결

it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비

Dev파일이 아닌 visual 같은경우는 프로젝트 안에 어디로 추가해야되나요??

  • C++
  • 코테 준비 같이 해요!
댓글 2 좋아요 1 조회수 1569

break, continue, and ++count vs count++

미해결

홍정모의 따라하며 배우는 C++

break, continue가 block을 escape 혹은 skip 하는거라고 강의중에 설명해주셨는데, 이것들이 switch, for, while문에서만 해당하는 것인가요? 일반 block에서도 사용하는 사례가 있는지 궁금합니다. 다음은 a++ vs ++a 질문입니다. int count( 0 ) ; do { if (count== 5 ) continue ; cout << count << endl ; } while (++count< 10 ) ; // ++count vs count++; 위와 같은 경우에는 0 ~ 9 가 출력이되고 (5제외) int count( 0 ) ; do { if (count== 5 ) continue ; cout << count << endl ; } while (count++< 10 ) ; // ++count vs count++; 위의 경우에는 0~10이 출력이 됩니다. (5제외) debugger를 통해서도 확인해보았으나 아직 조금 헷갈리는 것 같습니다. operator priority는 a++ , ++a, > 이 순서라 일단 증가 되는게 둘다 먼저고 10과 비교 해서 되는 것 같은데, count++ <10의 경우에는 10까지 나오는지 잘 모르겠습니다. count 가 9일때 count++하면 10이되고 10<10 : false 이므로 count 10은 프린트가 안되야 할것 같거든요. 감사합니다.

  • C++
Jason Hong 댓글 1 좋아요 1 조회수 205

교수님, 좀 바보같은 질문인데요 ..

미해결

홍정모의 따라하며 배우는 C++

제가 예전부터 포인터를 공부할 때마다 궁금했던게.. int *x; int y,z; 이렇게 선언 됐을때, x=&z; // 이건 되지만 y=&z; // 이건 안되는 이유가 굉장히 궁금했습니다. 뭐 이유는 당연히 주소는 포인터형 변수에 넣어야하기 때문이지만, 결국 변수의 주소라는것도 하나의 숫자로 표현된 값인데 왜 int형 변수에는 주소를 못담고 포인터형 변수에만 담을 수 있는걸까요? 1학년때 공부할 때 하도 궁금해서 주소가 숫자가 아니고 string인가 ? 해서 string변수에 담아봤지만 그것도 안됐던 기억이 나네요 ㅎㅎ; 저는 학부시절 공부할때 그래서 Address라는 숨은 '자료형'이 따로 있다고 그냥 스스로 생각했고, 후배들에게 멘토링을 해줄때도 그렇게 생각하면 편하다고 말해줬거든요. 이것도 보안상의 이유로 포인터 변수에 메모리주소를 직접 입력할 수 없는것과 같은 이치인가요 ? 학부시절 교수님께 부끄러워 못했던 질문을 여기서 해보네요.. 혹시 공부하다 저처럼 엉뚱한 의문을 갖는 수강생들이 있을까해서 한번 남겨봅니다 :)

  • C++
오미순 댓글 1 좋아요 10 조회수 260

교수님 질문 드립니다.

미해결

홍정모의 게임 만들기 연습 문제 패키지

안녕하십니까? 교수님 따배시 C++ 완강하고 게임문제 패키지 열심히 듣고있는 평범한 직장인 입니다.(유튜브도 정말 재밌게 보고있습니다.) 몇일째 해결되지 않는 문제가 있어서 문의드립니다. 지금것 문제가 없다가 금번 FMOD 예제 파일을 실행 할 때 C 라이브러리 함수들이 호환이 안되더라구요 ㅠ 지금 visual studio 에서 C++로 공부중인데 이상하게 해당 FMOD 예제 파일에서만 호환이 안됩니다.. 예를들면 conio.h, printf 와 같은 함수 및 헤더파일에 빨간 밑줄이 가며 Identify 하지 못한다고 나옵니다... ㅠ 혹시나 해서 새로 파일을 만들면 문제가 없는데 예제파일에서만 그런 문제가 발생하며 새로 다운도 받아보고 구글링으로 문제해결하려 노력해봤지만 방법이 보이지 않아 문의드립니다. 혹시 해결 방법이 있을까요?

  • oop
  • OpenGL
  • C++
댓글 1 좋아요 4 조회수 327

인기 태그

인프런 TOP Writers

주간 인기글