'프로그래밍'에 해당되는 글 24건

  1. 2007.12.19 참고소스2.
  2. 2007.12.19 참고소스.. 1
Note/Source Code2007. 12. 19. 14:47


[문제 19] 다음에 나오는 규칙은 ‘하노이의 탑’의 규칙이다 ‘하노이의 탑’을 풀 수 있는 프로그램을 작성하시오.


[규칙]

a, b, c라는 3개의 봉이 있다.

a의 봉에 도넛형 원반이 n장 끼워져 있다.(위쪽이 직경이 짧다).

이 원반을 모두 b봉으로 옮긴다.

단 원반은 한 번에 1장씩만 이동한다.

큰 원반은 작은 원반 위에 올려놓아서는 안된다.


[알고리즘 해설]

 ① 봉 a에서 n - 1개의 원반을 봉 c로 옮긴다.

 ② 봉 a에서 1개의 원반을 봉 b로 옮긴다.

 ③ 봉 c에서 n - 1개의 원반을 봉 b로 옮긴다.



[문제 20] 0 ~ 4 사이의 난수 20개를 발생시켜 0, 1, 2, 3, 4가 몇 개씩 발생하였는가를 출력하는 프로그램을 작성하시오.


[참고 자료]

 void srand(unsigned int seed);  // Sets a random starting point.

      seed : Seed for random-number generation

 int rand( void );  // range : 0 ~ RAND_MAX (0x7fff ⇒ 32767)



[문제 21] 점수를 높은 순으로 순위를 부여하는 프로그램을 작성하시오.(단, 같은 점수는 동일 순위를 부여한다. 그리고 대상자료가 내림차순으로 정렬되어 있을 것을 전제로 한다.)


[입력 데이터]

 95, 95, 90, 85, 85, 80, 75, 70, 60, 60



[문제 22] 1에서 100까지 숫자 중 3의 배수를 제외한 숫자들의 합을 구하는 프로그램을 작성하시오.



[문제 23] 2차원 배열의 가로, 세로의 합

  아래의 데이터를 input.dat 파일에서 읽어들여 출력 예시와 같이 가로, 세로의 합계를 구하여 표시하는 프로그램을 작성하라. (단, 첫 줄에 있는 데이터는 배열의 크기 행과 열의 크기를 나타내며 10이하의 정수이다.)

▸입력 형식 (input.dat)

▸출력 형식

 6   5

 1   2   3   4   5

 6   7   8   9  10

11  12  13  14  15

16  17  18  19  20

21  22  23  24  25

26  27  28  29  30

 1    2    3    4    5   15

 6    7    8    9   10   40

11   12   13   14   15   65

16   17   18   19   20   90

21   22   23   24   25  115

26   27   28   29   30  140

81   87   93   99  105  465



[문제 24] 정렬(sorting)

  임의의 정수 10개를 입력받아서 오름차순으로 정렬하여 출력하는 프로그램을 작성하라.


[입․출력 예시]

정수 10개를 입력하시오: 73 65 52 24 83 17 35 96 41 9

결과: 9 17 24 35 41 52 65 73 83 96



[문제 25] 소수(素數)

  소수란 1과 자기 자신으로 밖에 나눌 수 없는 정수를 말한다. 입력받은 범위까지의 소수를 출력하는 프로그램을 작성하라.

단, 입력하는 정수의 범위는 2 ~ 200으로 가정한다.

[입․출력 예시]

정수를 입력하세요(2 - 200) : 13

   2   3   5   7  11  13


[문제 26] 계승(階乘, factorial) 구하기

  자연수 n을 입력받아서 n의 계승을 구하는 프로그램을 작성하시오. 단, 계승의 계산은 재귀 함수(recursive function)로 작성한다.


[입․출력 예시]

자연수(n)을 입력하시오: 5

5!의 값은 120입니다.


[알고리즘 해설]

               

Posted by 스카이데이즈


Note/Source Code2007. 12. 19. 14:46


출처 : 방학 중 강신재 교수님 수업 참고 자료

         Homepage : klp.daegu.ac.kr

문제 내용

-

[문제 10] 반지름을 입력받아 원의 둘레와 원의 면적을 구하는 프로그램을 작성하시오.


[입․출력 예시]

  반지름 = 10

  원의 둘레 = 62.8

  원의 면적 = 314.0


[알고리즘 해설]

  (반지름 * 2 * 3.14) = 둘레

  (반지름 * 반지름 * 3.14) = 넓이



[문제 11] 숫자를 입력받아서 그 수가 홀수인지 짝수인지를 출력하는 프로그램을 작성하시오.


[알고리즘 해설]

   2로 나누었을 때 나머지가 0이면 그 수는 짝수.

   2로 나누었을 때 나머지가 1이면 그 수는 홀수.



[문제 12] 두 수를 입력받아서 두 수 사이의 홀수의 합과 짝수의 합을 구하는 프로그램을 작성하시오. (단, 두 수의 입력은 큰 수와 작은 수와는 상관없이 입력이 가능하도록 한다.)


[알고리즘 해설]

  ① 두 수 입력받기.

  ② 두 수 중 큰 값과 작은 값을 가려내기.

  ③ 두 수 사이의 수를 2칸씩 차이가 나도록 계산.

  ④ 작은 값의 나머지가 0이면 es는 짝수의 합, os는 홀수의 합이다.

  ⑤ 작은 값의 나머지가 1이면 es는 홀수의 합, os는 짝수의 합이다.

[문제 13] 2개의 직선 ϨǴϨǴǴǴǴǴǴǴǴǴǴǴǴŷŷǴϨǴǴ̹ͫˮˮˮˮˮˮͫŷǴͫˮ


[알고리즘 해설]

  교점의 좌표는 연립방정식의 해와 일치한다. 따라서, 좌표를 구하는 식을 세우면,

          ......................... (x 좌표)

          .......... (y 좌표)

가 된다. 이 공식을 프로그램에 그대로 적용하면 된다.



[문제 14] 최대공약수와 최소공배수 구하기

  두 수를 입력받아 그 두수의 최대공약수와 최소공배수를 구하여 출력하시오.


[알고리즘 해설]

 ① 최대공약수

  두 수의 나머지와 두 수 중 작은 수의 최대공약수를 구하는 방법(재귀호출 사용).

  나머지가 0이 될 때까지 계속 반복한다.

      GcdRecursion(30, 15) → 30 % 15  = 0.

      GcdRecursion(15, 0) → 15를 return함.

 ② 최소공배수 = 첫 번째 수 × 두 번째 수 / 최대공약수



[문제 15] 성적을 입력받아서 다음과 같은 결과를 출력하는 프로그램을 작성하시오.

 90 이상   A

 80 - 89   B

 70 - 79   C

 60 - 69   D

 60 이하   F

 



[문제 16] 다음과 같은 결과를 출력할 수 있도록 프로그램을 작성하시오.

*

* *

* * *

* * * *

* * * * *



[문제 17] 3명의 학생에 대한 국어, 영어, 수학 성적을 입력받아 총점과 평균을 구하는 프로그램을 작성하시오.



[문제 18] 사용자 정의 함수(swap)를 만들어 두 데이터 값을 교환하는 프로그램을 작성하시오

Posted by 스카이데이즈