본문 바로가기

프로그램

【C언어】 영문 대소문자를 변환하는 함수 프로그램 예시 영문자로만 이루어진 문자열을 입력받고, 그 문자의 대소문자를 변환해서 출력해주는 프로그램의 예시입니다. 방법 1은 변환해주는 함수를 이용해서 전체 코드를 짰습니다. 방법 2는 함수없이 그대로 쭉 나열해서 만든 코드 예시입니다. 둘다 거의 비슷한 결과물을 출력해줍니다. (방법 1) 함수 이용 #define _CRT_SECURE_NO_WARNINGS #include int func_charr(char charr[100]) { // 영문 대소문자 변환해주는 함수 int i; for (i = 0; sizeof(charr); i++) { if ((charr[i] >= 'a') && (charr[i] = 'A') && (charr[i] = 10.0) { break; } // 무한루프를 빠져나가는 곳. (10번 실행..
【C언어】 최소공배수를 찾는 함수 프로그램 예시 최소공배수란, 두개 이상의 정수의 공통되는 배수 중에 가장 작은 수를 말합니다. 아래의 코드 예시는 이 최소공배수를 찾아주는 프로그램입니다. 내부에 함수를 이용해서 만든 것입니다. 일정한 수의 범위 내에서만 작동합니다. #define _CRT_SECURE_NO_WARNINGS #include void lcm(int a, int b) { int i; for (i = a; i
【C언어】 소수를 출력하는 함수 프로그램 예시 소수(prime number)란, 1과 자기자신만으로 나누어 떨어지는 1보다 큰 양의 정수를 보고 말합니다. 아래의 예시는 사용자로부터 x를 입력받고 그 이하의 모든 소수를 출력해주는 프로그램 예시입니다. 코드 짜는건 자유로워서 제가 이번에 짜본 것은 for 루프를 2개 사용해서 만들었습니다. 그리고 primenum이라는 함수를 통해서 구현했습니다. 1) 함수 선언 - 소수를 찾아주는 부분 2) 사용자로부터 정수를 입력받음 3) 그 이하 모든 소수를 출력함. 끝. #define _CRT_SECURE_NO_WARNINGS #include void primenum(int N) { int i, j; for (i = 2; i
ANSYS 연습 9번째 - 단순 지지보 이전에 수치해석 문제를 풀면서 MATLAB을 통해서 단순 지지보를 특이함수로 해석하는 문제를 풀었던 적이 있습니다. 이번에는 그 문제를 ANSYS 를 통해서 구현해보았습니다. 재료나 구체적인 부분이 부족한 곳은 제가 임의로 가정하여 해석하였습니다. 결과 자체가 이전에 풀어서 나온 정답과 크게 다르지 않아서 가정을 수정하여 다시 해보지는 않았습니다. 물론 실력향상을 위한 교과서의 문제였어서 오늘 연습은 여기까지 마무리했습니다. 아래부터가 자세한 연습내용입니다. 그리고 이전에 MATLAB을 통해서 단순지지보의 특이함수 문제풀이 링크를 아래에 남겨두겠습니다. 흥미있으신 분들은 보시면 좋을 것 같습니다. 【MATLAB】 단순 지지보 특이함수 문제풀이 - 위 링크가 이전에 수치해석 문제를 풀었던 내용입니다. 문제..
【MATLAB】 기계입실론 ε 계산 문제풀이 [문제] 컴퓨터에서 기계입실론 ε은 1보다 더 큰수를 만들기 위해 더할 수 있는 가장 작은 수로 생각할 수 있다. 이 아이디어를 기초로한 알고리즘은 다음과 같다. 단계 1 : ε = 1이라 놓는다. 단계 2 : 1 + ε 이 1보다 작거나 같으면 단계 5로 가고, 그렇지 않으면 단계 3으로 간다. 단계 3 : ε = ε/2 단계 4 : 단계 2로 되돌아간다. 단계 5 : ε = 2 X ε 이 알고리즘에 기초하여 기계입실론을 계산하는 M-파일을 개발하라. 결과를 확인하기 위해 내장함수 eps로 구한 값과 비교하라. [문제풀이] 문제에서, '기계입실론(ε)'이 '1보다 더 큰수를 만들기 위해 더할 수 있는 가장 작은 수'라고 정의해주고 있습니다. 이번 문제는 이 ε을 구하는 문제입니다. 먼저, 내장함수 ep..
【MATLAB】 벡터의 외적 문제풀이 - Chapra의 응용수치해석 연습문제 3.20번 [문제] 직교좌표 벡터는 x-, y-, z-축을 따르는 크기에 단위벡터 (i, j, k)를 곱한 것으로 생각할 수 있다. 이런 경우 두 벡터 {a} 와 {b}의 내적은 그들 벡터의 크기와 그들 벡터 사이의 각도의 cosine과의 곱에 해당한다. 외적은 또 다른 벡터 {c} = {a} X {b}를 만들며, 이 벡터는 {a}, {b}로 정의되는 면에 수직이고, 그 방향은 오른손 법칙에 의해 규정된다. 두 개의 벡터가 전달되면 θ, {c} 그리고 {c}의 크기를 반환하고, 원점은 0에 있는 세 벡터 {a}, {b}, {c}의 3차원 그래프를 그리는 M-파일 함수를 작성하라. {a}와 {b}에 대하여는 점선을, {c}에 대하여는 실선을 사용하라. 다음의 경우에 ..
【MATLAB】 지나간 날짜를 구하는 문제 풀이 - Chapra의 응용수치해석 연습문제 3.16 [문제] 어떤 년도에서 지나간 날짜를 구하는 M-파일 함수를 개발하라. 이 함수의 첫번째 줄은 다음과 같이 설정한다. 여기서 mo는 달(1-12), da는 일(1-31), 그리고 leap는 평년일 때는 0이고 윤년일 때는 1이다. 1997년 1월 1일, 2004년 2월 29일, 2001년 3월 1일, 2004년 6월 21일, 그리고 2008년 12월 31일에 대해 이 프로그램을 검증하라. *힌트 : 이를 위한 좋은 방법은 for와 switch 구조를 결합시키는 것이다. [문제풀이] 먼저, '윤년'이라는 개념이 사용되었습니다. 윤년은 4년마다 2월 29일로 함으로써 4년간의 연평균 일수를 365.25일로 만들어주는 개념입니다. 시간이 지날수록 계절과 맞지 않..
【MATLAB】 소구간별 함수 예제 풀이 - Chapra의 응용수치해석 연습문제 3.14 풀이 [문제] 소구간별 함수(piecewise function)는 독립변수와 종속변수 사이의 관계를 단일 방정식으로 표현하기 어려울 경우에 유용하다. 예를 들어 로켓의 속도는 다음과 같이 기술될 수 있다. t의 함수로 v를 계산하는 M-파일 함수를 작성하라. 그리고 이 함수를 사용하여 t가 -5에서 50까지 t에 대한 v의 그래프를 생성하는 스크립트를 작성하라. [문제풀이] 소구간별 함수라는 어려운 말을 사용했지만, 위에서 주어진 로켓의 속도처럼 일정한 구간별로 다른 함수값을 갖는 함수를 보고 말합니다. 문제에서는 이 함수를 주어주고 함수값과 그래프를 구해보라고 지시하고 있습니다. 결국 문제에서 원하는게 2가지 입니다. 1) t를 함수로 v를 계산하는 함수..
【MATLAB】 단순 지지보 특이함수 문제풀이 - Chapra의 응용수치해석 3판 연습문제 3.10 [문제] Q. 단순 지지보가 그림에 나타나 있다. 특이함수(singularity function)를 사용하여 보를 따라 생기는 처짐을 다음과 같이 나타낼 수 있다. 특이함수는 다음과 같이 정의할 수 있다. 보를 따르는 거리 x에 대한 처짐(점선)의 그래프를 생성하기 위한 M-파일을 작성하라. 보의 왼쪽 끝에서 x = 0이 됨을 유의하라. [문제풀이] 우선, 구간별로 if~elseif 구문을 만들어서 해보려다가 실패....하고 아래와 같이 함수를 이용해서 스크립트에서 실행하는 것으로 대체해서 풀어보았습니다. 우선, 위의 사진은 '함수 M-파일'입니다. singul이라는 이름의 함수를 지정해서 세 개의 변수(a,b,c)를 받아서 특이함수를 계산하는 함수를..
【MATLAB】 직교좌표계와 극좌표계 변환 문제풀이 - Chapra의 응용수치해석 3판 연습문제 3.6 [문제] Q. 2차원 공간상에서 한 점의 위치를 나타내는 데 원점을 기준으로 두 개의 거리가 필요하다. 직교좌표계에서 수평과 수직 거리 (x, y) 극좌표계에서 반지름과 각도 (r, θ) 극좌표계 (r, θ)를 기초로 하여 직교좌표계를 구하는 것은 상대적으로 간단하다. 그러나 반대 과정은 간단하지 않다. 반지름은 다음 식에 의해 계산된다. r = (x^2 + y^2)^(1/2) 만약 좌표가 1사분면과 4사분면(즉, x > 0인 경우)에 있다면, θ 를 구하기 위한 간단한 식은 다음과 같다. θ = atan(y/x) (참고 atan는 tan의 역함수) 다른 경우에 대해서는 어려움이 야기된다. 다음의 표는 그 가능성을 요약한 것이다. x y θ 0 atan..