반응형 컴퓨터공학/C,C++,C#33 C에서 복소수 연산 C에서 복소수를 사용하는 방법은 다음과 같다. #include double complex z1 = 1.0 + 2.0 * I; double complex z2 = 3.0 - 4.0 * I; creal(z1); // 복소수의 실수부 반환 cimag(z1); // 복소수의 허수부 반환 double complex za = z1 + z2; // 복소수 덧셈 double complex zb = z1 - z2; // 복소수 뺄셈 double complex zc = z1 * z2; // 복소수 곱셈 double complex zd = z1 / z2; // 복소수 나눗셈 complex.h에 정의된 복소수 함수는 다음과 같은 것들이 있다. 함수 설명 cabs 복소수의 절대값 conj Conjugate cexp 복소수의 지.. 2018. 8. 11. C에서 정수 나눗셈의 올림(Floor)과 내림(Ceiling) 함수 C의 math.h에서 제공하는 올림(Floor)과 내림(Ceiling) 함수는 부동소수점만 지원하고 정수는 지원하지 않는다. 정수를 올림 또는 내림을 하기 위해서는 직접 함수를 만들어야 한다. 2개의 양의 정수 x와 y가 있을 때 x / y의 결과값을 올림하기 위한 코드는 다음과 같다. z = x / y + ( x % y !=0 ); 2개의 정수 x와 y가 있을 때 x는 양 또는 음의 정수이고 y는 항상 양의 정수이면, x / y의 결과값을 올림하기 위한 코드는 다음과 같다. z = x / y + ( x % y > 0 ); 2개의 양의 정수 x와 y가 있을 때 x / y의 결과값을 내림하기 위한 코드는 다음과 같다. z = x / y; 2개의 정수 x와 y가 있을 때 x는 양 또는 음의 정수이고 y는 항.. 2018. 6. 26. C# 숫자 - 문자 변환 자리수 (ToString, Format) i = 100; 코드 표시 문자 s = i.ToString("D"); "100" s = i.ToString("X"); "64" s = i.ToString("D8"); "00000100" s = i.ToString("X8"); "00000064" s = string.Format("{0,0}", i); "100" s = string.Format("{0,0:X}", i); "64" s = string.Format("{0,10}", i); " 100" s = string.Format("{0,10:X}", i); " 64" 2018. 5. 26. C#에서 툴팁 (Tooltip) 사용하기 C#에서 툴팁을 사용하기 위해서는 다음과 같은 코드를 Form_load에 입력한다. ToolTip toolTip1 = new ToolTip(); toolTip1.ShowAlways = true; toolTip1.IsBalloon = true; toolTip1.AutoPopDelay = 0; toolTip1.InitialDelay = 0; toolTip1.ReshowDelay = 500; toolTip1.SetToolTip(button11, "Insert space"); toolTip1.SetToolTip(button3, "Clear screen"); 위의 코드를 실행하면 다음과 같이 표시된다. 위의 코드에서 toolTip1.IsBalloon = false 로 하면 다음 그림과 같이 표시된다. 2018. 4. 13. VC++ Edit Box에서 자동 스크롤 하기 MFC에서 CEdit에 새 텍스트를 추가할 때 가장 아래로 자동으로 스크롤하기 위해서는 다음과 같이 제일 마지막 줄을 SetSel 한 후 ReplaceSel로 텍스트를 추가하면 된다. CString s = "New Text"; int i = m_edit1.GetWindowTextLength(); m_edit1.SetSel(i, i); m_edit1.ReplaceSel(s, 0); 2018. 3. 25. VC++에서 SetDIBitsToDevice와 StretchDIBits에서 이미지가 깨지는 이유 VC++에서 SetDIBitsToDevice와 StretchDIBits을 사용할 때 이미지가 깨지는 경우가 있다. SetDIBitsToDevice와 StretchDIBits은 4바이트 단위로 이미지 데이터를 맞춰야 한다. 즉, 1024 바이트나 1028 바이트의 이미지는 괜찮지만 1025 바이트나 1026 바이트나 1027 바이트가 되어서는 안된다. 2018. 3. 25. C++ 클래스를 복사하는 방법 C++에서는 =연산자 (=operator)가 기본적으로 클래스를 복사하는 기능을 한다. 하지만, Operator Overloading으로 =연산자 기능을 변경 시킬 수 있다. =연산자를 이용하여 복사하면 subclass와 superclass 사이의 복사에 의해 데이터가 잘리는 Object Slicing의 위험이 있다. 포인터를 이용하여 클래스를 복사하는 방법은 다음과 같다. ClassName* classA = new ClassName; ClassName* classB; classB = new ClassName(*classA); Java와 C#에서는 =연산자로 복사가 되지 않고 복사 함수를 사용해야 하며 =연산자는 Object Reference (Object의 주소, C의 포이터와 유사)만 전달된다. 2018. 3. 23. [VC++] 프로그램 사이에 데이터 전송하는 방법 VC++에서 프로그램 사이에 데이터를 전달하는 방법은 몇 가지가 있다. 그 중에서 WM_COPYDATA 메세지를 이용하여 데이터를 전달하는 방법은 다음과 같다. 1. 전송 프로그램// 전송 데이터 선언struct stBuf{int n;char c[256];}; // 윈도우 찾기m_Window=::FindWindow(NULL, "RxWindow"); // "Rx Window"는 수신측 윈도우의 이름if(::IsWindow(m_Window)) MessageBox("Window Found"); // 메세지 전송COPYDATASTRUCT copyData; stBuf buf; buf.c[0] = 'A';buf.c[1] = 'B';buf.c[2] = 'C';buf.n = 3; copyData.dwData=1;cop.. 2018. 3. 20. [C#] textBox의 커서 위치 구하기 textBox에서 커서의 라인과 컬럼 위치를 구하는 코드는 다음과 같다. int line = textBox1.GetLineFromCharIndex(textBox1.SelectionStart); int column = textBox1.SelectionStart - textBox1.GetFirstCharIndexFromLine(line); 2018. 3. 9. 이전 1 2 3 4 다음 반응형