묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결홍정모의 따라하며 배우는 C++
6.3 배열과 반복문
안녕하세요 교수님, 11분 40초에 < 부호에 <=로 바꾸면 run time error가 난다는 게 무슨 뜻인가요? 프로그램 상 작동은 아웃풋 값은 똑같이 작동이 되길래 궁금해서 질문 올립니다. 감사합니다!
-
미해결홍정모의 따라하며 배우는 C++
m_i 값이 안바뀌는 이유가 뭔가요?
// // main.cpp // inheritance_ex01 // // Created by Kevin on 04/10/2019. // Copyright © 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++
상속 질문 있습니다
class Base { public: int x; }; class Derived : Base { }; 상속받은 Derived옆에 Base의 접근지정자를 쓰지 않으면 private으로 접근지정자가 들어가는건가요? 접근지정자를 쓰지않아도 오류가 뜨지않는걸 보니 자동으로 뭔가가 들어가는거 같아요
-
해결됨홍정모의 따라하며 배우는 C++
10.06 컨테이너 클래스 질문있습니답
안녕하세요 교수님 첫질문입니다ㅎㅎ 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++
13.4강 클래스 멤버 함수 특수화
특수화를 클래스 내부에 선언, 정의는 불가능한가요?
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
32번 선택정렬 질문입니다.
//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]); } } 제가 이런식으로 짰는데요 정렬은 잘되지만 선생님과 코드가 달라서요 제가 짠것은 버블정렬인가요?
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
19번 문제 질문입니다.
#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++
selection 에 문자나 범위를 초과하는 수를 넣으면
안녕하세요, 교수님. 좋은 강의 감사합니다. selection에 문자와 범위를 초과하는 수를 넣었는데 그림과 같이 무한으로 도는걸 발견했습니다. 디버깅으로 selection을 보면 문자일 때는 0으로 나왔습니다. selection에 문자나 엄청나게 큰 수를 넣으면 do-while 안에 내용이 왜 무한으로 도는 건가요??
-
미해결홍정모의 따라하며 배우는 C++
struct, tuple 의 return 형태 관련
안녕하세요 교수님, 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; }
-
미해결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이라서 그런건가요???
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
9번 모두의 약수 코드와 처음에 알려주신 반복문 코드 차이가 무엇인가요?
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보다는 덜 하다는 걸 구하셧는지 소스를 보고 시간복잡도를 대략적으로 구하는 방법이 궁금합니다!
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
visual studio에서 freopen은 어떻게 사용하나요?
Dev파일이 아닌 visual 같은경우는 프로젝트 안에 어디로 추가해야되나요??
-
미해결홍정모의 따라하며 배우는 C++
break, continue, and ++count vs count++
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++
교수님, 좀 바보같은 질문인데요 ..
제가 예전부터 포인터를 공부할 때마다 궁금했던게.. int *x; int y,z; 이렇게 선언 됐을때, x=&z; // 이건 되지만 y=&z; // 이건 안되는 이유가 굉장히 궁금했습니다. 뭐 이유는 당연히 주소는 포인터형 변수에 넣어야하기 때문이지만, 결국 변수의 주소라는것도 하나의 숫자로 표현된 값인데 왜 int형 변수에는 주소를 못담고 포인터형 변수에만 담을 수 있는걸까요? 1학년때 공부할 때 하도 궁금해서 주소가 숫자가 아니고 string인가 ? 해서 string변수에 담아봤지만 그것도 안됐던 기억이 나네요 ㅎㅎ; 저는 학부시절 공부할때 그래서 Address라는 숨은 '자료형'이 따로 있다고 그냥 스스로 생각했고, 후배들에게 멘토링을 해줄때도 그렇게 생각하면 편하다고 말해줬거든요. 이것도 보안상의 이유로 포인터 변수에 메모리주소를 직접 입력할 수 없는것과 같은 이치인가요 ? 학부시절 교수님께 부끄러워 못했던 질문을 여기서 해보네요.. 혹시 공부하다 저처럼 엉뚱한 의문을 갖는 수강생들이 있을까해서 한번 남겨봅니다 :)
-
미해결홍정모의 게임 만들기 연습 문제 패키지
교수님 질문 드립니다.
안녕하십니까? 교수님 따배시 C++ 완강하고 게임문제 패키지 열심히 듣고있는 평범한 직장인 입니다.(유튜브도 정말 재밌게 보고있습니다.) 몇일째 해결되지 않는 문제가 있어서 문의드립니다.지금것 문제가 없다가 금번 FMOD 예제 파일을 실행 할 때 C 라이브러리 함수들이 호환이 안되더라구요 ㅠ 지금 visual studio 에서 C++로 공부중인데 이상하게 해당 FMOD 예제 파일에서만 호환이 안됩니다.. 예를들면 conio.h, printf 와 같은 함수 및 헤더파일에 빨간 밑줄이 가며 Identify 하지 못한다고 나옵니다... ㅠ 혹시나 해서 새로 파일을 만들면 문제가 없는데 예제파일에서만 그런 문제가 발생하며 새로 다운도 받아보고 구글링으로 문제해결하려 노력해봤지만 방법이 보이지 않아 문의드립니다. 혹시 해결 방법이 있을까요?
-
해결됨홍정모의 따라하며 배우는 C++
저는 true라고 입력해도 false로 나오네요..
include using namespace std;int main() {bool b;cin >> b; cout << boolalpha;cout << "your input : " << b << endl;}여기 코딩에 문제가 있는건가요 ???
-
미해결홍정모의 따라하며 배우는 C++
초급한 질문이라 죄송합니다.
우선 강의 중 몇분 몇초 부분이라 정하기 어려운 질문입니다 ㅠ고민을 아무리 해봐도 답을 찾이 못해서 남깁니다.입출력연산자 오버로딩에서 아래와 같이 const 를 빼고 Cents ¢s 로 받으면std::ostream &operator << (std::ostream &out, Cents ¢s)단항 연산자가 붙지 않으면 cout << cents1 << endl; 는 출력이 되고cout << -cents1 << endl; 는 왜 출력이 안될까요?ㅠconst 쪽 강의를 다시 들어도,, 디버거로 찍어보며 천천히 따라가도 이유를 모르겠어서 질문 남깁니다 .감사합니다.
-
미해결홍정모의 따라하며 배우는 C++
너무 초급한 질문이라 부끄럽지만 여쭤봅니다.
교수님 수업하실 떄iostream 안의 std namespace 내의 함수? 활용을 편리하게 하기 위해using namespce std; 를 선언 하시고 cout,cin...등등 을 사용하시는데iostream 외 ctime, ramdom 등을 추가로 include 하시면 그것들 안의 std 역시using namespce std; 영향을 받아 std:: 를 쓰지않고도 안의 함수를 사용 가능 한데 매번 std::time, std::random 이렇게 작성 하시는 이유는 무엇인지요? 매번 궁금했어서 여쭤봅니다.용기내서 여쭤봅니다.감사합니다.
-
미해결홍정모의 따라하며 배우는 C++
질문드립니다.
강의시간 14분38초 부근 내용 질문드립니다.객체의 소유권을 이전하기 위해서 기존 R-Value refence의멤버 변수(m_ptr)를 nullptr로 설정을 안하게 되면, 같은 메모리 할당 된 곳을 두번 해제하게 된다고 생각해 반드시 nullptr로 설정이 필요하다고 생각하였으나,강의 내용에서는 nullptr로 설정하는 것이 선택적인 부분이라는 내용으로 말씀을 하신거 같아..제가 오해하고 있는 개념이 있는지 질문드립니다.
-
미해결홍정모의 따라하며 배우는 C++
강의 마지막 문제 질문입니다
안녕하세요 강사님, 강의 잘 보고 있습니다.include using namespace std;void doSomething(int x){x = 123;cout << x << endl; // #2}int main(){int x = 0;cout << x << endl; // #1doSomething(x);cout << x << endl; // #3return 0;}저는 위에서 부터 순서대로 #2, #1, #3123, 0, 123이 나올줄 알았는데 실행시켜보니 0, 123, 0이 나왔습니다무조건 int main()이 먼저 실행되나요?그렇다 쳐도 int main() 안의 #1, #3 이 먼저 실행이되고 #2가 나중에 실행되야하는게 아닌가 싶습니다.step in 기능으로 해보았는데도 잘 안되서 질문 올립니다.감사합니다.