본문 바로가기

ECIM list (Help!)

C언어 포인터 - 문자열을 다룰 때 이중 포인터를 쓰는 이유 1.char * word = "hello" 이렇게되있을때, char * word = 0x12 이런식으로, 문자열의 주소값을 가지고있다고 생각해서 제가 이름값만 바로 넘겨버렸었거든요; 문자열의 주소값을 바탕으로 포인터로 접근하면 된다고생각했는데 안되더라구요 ㅠㅠ. 왜그런건가요 ㅠㅠ.? 왜, 문자열의 주소값이 아니라, 문자열을 가리키고있는 포인터의 주소를 이중포인터로 받아서 접근해야하는건가요?? 2.배열의 경우엔 이름이 주소값이라서 저렇게 넘겨졌구요; 제가 개념이 꼬인거같은데 이부분 조금만 설명해주시면안될까요 ..? c언어에서 문자열을 표현할때, 포인터로 표현할때와 배열의 표현할때 차이점을요 ㅠㅠ. 테스트를 위하여, 문자열 연산을 싱글 포인터로 바꿔봤습니다. #include #include #include .. 더보기
c언어 메모리동적할당 문제 Memory Allocation Malloc 출력값 알아내는게 문제인데요 출력값 첫번째는 30이고 두번째는 a부터 i까지 출력돼야 되는거 아닌가요? 두번째는 쓰레기값도 아니고 뭔 이상한 한자같은게 나오는데 원래 이렇게 나오는게 맞나요? Debug : For 문에 불필요한 세미 콜론이 있어서 오류입니다. ○ 질문하신 코드의 For Loop에 잘못된 세미 콜론이 있습니다. 이 때문에 For 문이 진행이 안되었습니다. 코드 개선 ○ 물론, 예제 코드라서 그랬겠지만, 코드에 잘못된 부분이 많습니다. ○ Malloc() 을 쓸 때는 Sizeof() 와 함께 써야 시스템이 바뀌어도 오류없이 동작합니다. 원래 코드는 위험합니다. ○ Malloc() 후에는 메모리를 리셋해 주는 것이 좋습니다. (이 부분은 생략) ○ 문자열을 다룰 때는 마지막에 Null 문자를 .. 더보기
Const (한정자) 관련 질문입니다. #include using namespace std; class CObj { private: const int m_iValue; const short m_sValue; int m_iTest; public: int* GetTest(void) const //1번 함수 { return &m_iTest; } int* const GetTest2(void) { return &m_iTest; // 2번 함수 } }; int main(void) { return 0; } 1번 함수는 왜 오류가 나는 건가요?? 그리고 nt* const GetTest(void) 이렇게도 되는데 이건 무슨 의미 인가요??? Const 선언의 위치는 알아보기 쉽게 맨 앞으로 해주세요 1. int* GetTest(void) const 이게 별로.. 더보기
두 정수의 최대공약수 구하기 - 디버깅 두 정수의 최대공약수를 구하는 코드입니다.뭐가 문제인지 잘 모르겠습니다.왜 고쳐야 하는지하고 어떻게 고쳐야 하는지 알려주시면 감사하겠습니다. 코드의 세세한 실수가 많네요 ○ Scanf() 함수의 입력 포멧 ("%d%d") 사이에 여백이 있어야 합니다. 이대로는 3, 36, 3 6 을 구분할 수 없습니다. ○ 두 숫자가 같은 것을 확인하는 부분은 (a == b) 입니다. 여기가 (a = b) 로 되니, 이 부분만 지나면 a, b 값이 똑같아 지고, 이후 부분은 건너뛰게 됩니다. ○ 출력 부분에 "%d" 가 없으니, c 를 출력할 수가 없습니다 .Printf() 함수 사용법을 더 명확하게 보세요 ○ 최대공약수를 못찾는 경우에 대한 예외처리 추가해주세요 코드 예제 #include int main() { int.. 더보기
C언어 재귀함수로 삼각형 그리기 - 재귀함수 연습 c언어 재귀함수 연습 원인좀 알려주세요. 재귀함수로 반복문 연습해보는중인데 저가 원하는 출력문은 ***** **** *** ** * 이렇게 나오는것인데 저위에 코드대로 해보면 ***** **** *** ** * ***** 출력문이 이런형태로 나오게되는데 원인좀 알려주세요!. 왜 한번더 돌게 되는지 설명좀 해주세요. 일단 완전 잘못 짰습니다. ○ for_1 함수 중간에 main() 함수를 다시 호출하는 것부터 완전 잘못된 코드입니다. 이것은 재귀함수가 아닙니다. ○ 코드를 고쳐줄까하고 보다가, 너무 모르는 것이 많은 것 같아서, 완전히 다시 짜서 올립니다. 1. 코드가 컴파일되서 돌지도 않습니다. 예를 들어, for_1() 함수의 return을 int 형으로 선언하셨는데, 실제로는 end==0 인 케이스에.. 더보기
피보나치 수열 비재귀방법으로 풀기 - Fibonacci number without recursion 피보나치 수열 재귀함수 이용하지 않고 비재귀로 하는방법 좀 알려주세요~~ 일단 재귀함수 이용하는건 했는데 비재귀는 어떻게 해야되는지 모르겠네요.. 더쉬울줄알았는데.. // 제가 작성한 피보나치 재귀함수 이용 버전입니다. Stack을 사용하면 됩니다 ○ 재귀함수를 없애는 가장 기본적인 방법은 Stack을 사용하는 것입니다. 재귀함수 자체가 실제로는 함수 Stack에 차곡차곡 결과값을 쌓고 있는 것입니다. 실제 Stack을 이용해서 값을 저장하면 그만입니다. ○ 특히 피보나치수열의 경우는 진짜 Stack을 쓸 필요도 없고, Stack 처럼 동작하는 Array면 됩니다. 제 코드에서도 Pop() 함수는 작성을 했지만, 막상 부르는 곳이 없습니다. 지우기도 귀찮아서 일단 남겨둡니다. ○ 참고로, 이 피보나치 수.. 더보기
배열 구조체를 이용한 성적출력 - 버블소팅 예제 (Bubble soring example) 질문 제목 : 배열 구조체를 이용한 성적출력 질문 요약 : 과목별로 성적을 출력하여 내림차순을 시키는 방법 질문 내용 : 아래함수 부분에서 down_stand함수에 내림차순을 시키는겁니다. 학교에서 자면서 열심히 연구했는데 도저히 안떠오르네요.ㅠㅠ 도와주세요...ㅠㅠ힌트라도..제발~ㅠㅠ Code Example: /* Written by rinehart@naver.com */ /* 2009. 2. 10. */ /* Tested on Windows, Cygwin, gcc */ /* This code example is very very ugly*/ /* It's originaly written by a questioner */ /* My code is the function : down_stand*/ #in.. 더보기
Find next biggest binary number : 다음으로 큰 2진수 찾기 10진수를 입력받아 2진수로 변환한 후 이 수보다 큰 수 중 가장 작은 수를 구하여라. 단, 주어진 수를 2진수로 변환하였을 때 1의 개수와 구하는 큰 수의 1의 개수는 같아야 한다. 단, 주어진 정수는 1보다 크거나 같고 1000000보다 작거나 같다 예) 입력 : 1 출력 : 2 입력 : 4 출력 : 8 입력 : 78 출력 : 83 Find next biggest binary number. Condition : Number of 1 should be same between input & output. /* Written by rinehart@naver.com */ /* 2009. 2. 10. */ /* Tested on Windows, Cygwin, gcc */ #include int main(voi.. 더보기
배열을 활용한 2의 100승 구하기 Calculate using array. (2 power 100, 2^100) int 형을 이용해서는 2의 31승 까지만 표현할 수 있습니다. Char 배열을 이용해서 이보다 더 큰 수를 계산해 봅시다. 예제는 2의 100승 입니다. /* Written by rinehart@naver.com */ /* 2009. 2. 9. */ /* Tested on Windows, Cygwin, gcc */ #include #define MAX (100) #define TRUE 1 #define FALSE 0 int main() { char a_Result[MAX]; int v_input = 0; int i = 0, j= 0; //Loop int b_first_non_zero = FALSE; //To avoid straight Zero print out. memset (a_Result, 0x00.. 더보기
씨언어에서 (c++아님) x,y의 좌표가 주어졌을때 각도 구하는 법 x,y의 좌표가 주어졌을때 각도 구하는 코딩 가르쳐주세요!! x, y 좌표를 이용해서 좌표축에 만들어지는 삼각함수를 이용하면 됩니다. 각도를 A 라고 하면, tan(A) = y/x 가 되지요. 반대로, x, y 좌표를 이용해서 각도 A를 구하는 것은 역함수 아크탄젠트를 이용하면 됩니다. 자세한 수학적 이론은 정석의 삼각함수를 찾아보세요. C 언어 라이브러리 중에 math.h 가 있습니다. 삼각함수를 제공합니다. 함수 설명은 http://www.cplusplus.com/reference/clibrary/cmath/atan2.html 여기를 참조하시고요, 예제코드는 아래 있습니다. Example /* atan2 example */ #include #include #define PI 3.14159265 int.. 더보기