본문 바로가기

C++

GSL : C/C++ 수치해석 라이브러리 라이브러리 소개 이번 포스팅에서는 이공계 분야의 수치해석에서 널리 쓰이는 GSL라이브러리에 대해 써 볼까 합니다. GSL은 GNU Scientific Library의 약자로서, 과학 및 공학 분야의 수치해석에 유용한 여러가지 함수들을 가지고 있는 C언어 라이브러리인데요. 어지간한 슈퍼컴퓨터에는 기본적으로 설치되어 있을 정도로 널리 쓰이기 때문에, 기본적인 사용 방법들을 알아두면 상당히 좋습니다. GSL - GNU Scientific Library - GNU Project - Free Software Foundation GSL - GNU Scientific Library The GNU Scientific Library (GSL) is a numerical library for C and C++ progra.. 더보기
C/C++ 에서 함수를 매개변수로 사용하기 함수 포인터를 이용한 구현 일반적으로 C언어나 C++ 에서 사용하는 함수의 경우, 인자(매개변수) 혹은 파라미터로 변수를 받아갑니다. 이 값들을 가지고 정의된 기능을 수행하게 되죠. 하지만 프로그램을 만들다 보면 함수 자체를 다른 함수의 매개변수로 하는 방식이 유용할 때가 있습니다. 함수의 포인터를 다른 함수의 인자로 설정함으로써 이를 구현할 수 있으며, 이 때 함수의 파라미터 및 리턴값을 정확하게 명시해야 합니다. Hello World! 코드를 약간 바꿔서 이를 사용해 봅시다. #include void let_us_say(void (*func_message)()); void greetings(); void goodbye(); int main(int argc, char *argv[]) { // funct.. 더보기
FFTW : C/C++ 고속 푸리에 변환 라이브러리 라이브러리 소개 현재 진행중인 연구에서 사용중인 C언어 푸리에 변환 라이브러리인 FFTW에 대해 간략히 포스팅해볼까 합니다. FFTW는 Fastest Fourier Transform in the West 의 약자인데요. 저 같은 토종 아시안은 이해 못하는 개그에서 파생된 이름이라는 카더라가 있습니다만, 중요한 내용은 아니므로 패스하겠어요. FFTW Home Page --> Introduction FFTW is a C subroutine library for computing the discrete Fourier transform (DFT) in one or more dimensions, of arbitrary input size, and of both real and complex data (as wel.. 더보기
sudoku (스도쿠) 퍼즐 푸는 프로그램 (C++) 예전에 포스팅했던 sudoku 퍼즐 푸는 프로그램 (C언어) 아이패드 앱(의 부가기능) 중에 스도쿠(sudoku) 퍼즐이 있길래 좀 해보다가, 이걸 푸는 프로그램을 C언어로 작성하는 잉여짓을 하게 되었습니다. 기본원리는 그냥 게임의 룰을 반영하여, 모든 빈칸 swstar.tistory.com 에 이어서, C++ 로 재구성한 코드입니다. 입출력 파일의 형식은 예전 포스팅과 동일하게 9행 9열의 텍스트 파일입니다. SudokuSolve라는 클래스를 도입하였으며, 이 클래스는 파일로부터 스도쿠 퍼즐 문제를 읽어들이고 퍼즐을 푸는 등의 멤버 함수들을 가지고 있습니다. main 함수에서는 객체를 선언하고 이 멤버 함수들을 실행하기만 하면 되는거죠. 퍼즐의 답을 출력하는 멤버 함수도 있는데요. 출력 파일의 포인터를.. 더보기
C/C++와 Fortran을 조합한 프로그래밍 목차 공통사항 C 메인 프로그램에서 Fortran subroutine 사용하기 Fortran 프로그램에서 C언어 함수 사용하기 수치계산을 위한 프로그램을 짜다 보면, 포트란 함수를 C 혹은 C++ 에서 쓰거나, 그 반대의 경우가 생길 때가 있습니다. 특히 역사가 좀 오래된 모델을 가져다 쓸 때 그렇죠. C언어에서 함수를 특정한 포맷으로 써주면, 오브젝트 파일들을 링크함으로써, 언어의 장벽을 뛰어넘을 수 있습니다. 소스 코드로부터 프로그램을 만드는 과정에서 등장하는 오브젝트 파일의 개념이 낮설게 느껴지거나, 여러개의 소스 파일로부터 프로그램을 만드는 구체적인 과정이 궁금하신 분들은 다음 포스팅을 읽어보시길 권장합니다. C/C++ 코드가 프로그램이 되는 과정 여기서는 C언어 또는 C++로 작성된 소스 파일,.. 더보기
Command-line arguments (C/C++ 명령행 인자) C언어 또는 C++ 의 메인 (main)함수를 특별한 방법으로 정의해서, 프로그램을 실행시킬때 커맨드 라인에서 문자열들을 전달해줄 수 있습니다. 그러면 이들이 명령행 인자에 저장되어 프로그램 내에서 사용이 가능하게 되죠. 대표적으로 커맨드라인에 들어가는 인자의 갯수를 세는 정수형 변수와 인자들을 저장하는 문자열들이 있습니다. int main(int argc, char *argv[]) { // .... 프로그램 내용 } 이렇게 해서 컴파일 한 뒤에 실행시킬때, $./[실행파일 이름] [옵션1] [옵션2] ... 이렇게 옵션들을 지정해 주면, 그 갯수와 값들이 argc와 argv라는 변수들 안에 저장됩니다. argc = 옵션의 갯수에 1을 더한 값 (정수) argv[i] = i-번째 옵션의 값 (문자열) /.. 더보기