실험프로젝트 6주차_002

오늘은 저번에 참가 하지 못한 특강시간에 한 배열에 관환 좀...
응용문제라고나 할까?
아무튼 그 연습문제에 대해 프로그래밍을 해 보었다.

숫자를 10개 입력받고.
그것을 배열에 바로 저장.
그리고 순차적으로 정리.

일단 소스는....................................

--------------------------------------------------

import java.io.*;

public class Study0409_2
{
 public static void main( String arg[])
 {
  String no = null;
  int [] a = new int[10];
  int z, t , x = 0;
  System.out.println("정수10개를 입력하세요.");
  for (z=0 ; z < a.length ; z++){
   System.out.print((z+1)+"번째 정수 입력: ");
   try{
    BufferedReader br = new BufferedReader
     ( new InputStreamReader(System.in) );
    no = br.readLine();
   }catch(IOException e){}
   int num = Integer.parseInt(no);
   System.out.println();   
   a[z] = num;
  } // for문을 이용하여 받은 정수를 바로바로 각각의 배열의 자리에 저장한다.
  System.out.println( "입력하신 정수는 다음과 같습니다." );
  for (z = 0 ; z < a.length ; z++){
   System.out.print( (z+1)+"번째 정수 : "+ a[z]+"\t" );
   if( (z+1) % 2 == 0 ){
    System.out.println(" ");             // 숫자 두개 뜨고 줄바꿈 ㅋ
   }
  } 
  for (z = 0 ; z < a.length ; z++){ // 원래는 단일 for문으로 했으나..
   for ( t = 1 ; t < a.length ; t++ )  // 이중으로 하지 않으면.. 바로 옆자리 바께
   {                                          // 안바꾸어주는 치명적인 오류가... ㅡㅡㅋ
    if (a[t-1] > a[t])
    {
     x = a[t-1];
     a[t-1] = a[t];
     a[t] = x;                              // 숫자를 바꾸는 방법은 매우 고전적이고 비효율 적이지만..
    }                                         // 초보에겐 이보다 좋은 방법도 없다 ㅎㅎㅎ
   }  
  }
  
  System.out.println( "순차적으로 배열을 하면 다음과 같습니다." );
  for (z = 0 ; z < a.length ; z++){
   System.out.print( (z+1)+"번째 정수 : "+ a[z]+"\t" );    if( (z+1) % 2 == 0 ){
    System.out.println(" ");              // 한줄에 숫자는 두개씩 정렬 ㅋ
   } 
  }
 }
}

--------------------------------------------------

출력결과는

--------------------------------------------------

M:\java\0409>javac Study0409_2.java

M:\java\0409>java Study0409_2
정수10개를 입력하세요.
1번째 정수 입력: 80

2번째 정수 입력: 45

3번째 정수 입력: 7

4번째 정수 입력: 800

5번째 정수 입력: 65

6번째 정수 입력: 48

7번째 정수 입력: 7

8번째 정수 입력: 804

9번째 정수 입력: 1

10번째 정수 입력: 3

입력하신 정수는 다음과 같습니다.
1번째 정수 : 80 2번째 정수 : 45
3번째 정수 : 7  4번째 정수 : 800
5번째 정수 : 65 6번째 정수 : 48
7번째 정수 : 7  8번째 정수 : 804
9번째 정수 : 1  10번째 정수 : 3
순차적으로 배열을 하면 다음과 같습니다.
1번째 정수 : 1  2번째 정수 : 3
3번째 정수 : 7  4번째 정수 : 7
5번째 정수 : 45 6번째 정수 : 48
7번째 정수 : 65 8번째 정수 : 80
9번째 정수 : 800        10번째 정수 : 804

--------------------------------------------------

출력결과가 매우 만족스럽다 히히..

원래 이거 워크북에서 봤을때
버블배열 매소드 였나? 그걸 사용해서 하면 간단히 할수 있는데.
for문과 if문을 이용하여 노가다적인 방법으로
매우 비효율 적이게 만들었다 ㅋㅋㅋ

숫자 교환을 할때 처음에 단일 for문을 사용하였더니..;; ㅡㅡㅋ
이게 바로 옆에 있는 숫자들만 바꾸어 주길래
이중for문으로 바꾸어봤더니..
ㅋㅋㅋ 하나의 배열에 대해 10개의 정수들이 다 움직이는 것을
하여 주기에
잘 순차적으로 정리가 되었다. ㅋㅋㅋㅋ

굿~ ㅋㅋㅋㅋ

프로젝트로 원래는 간단한 카드게임을 만들생각이었느나.
간단한 축구메니지먼트 게임으로 바꾸려고 한다.
직접 게임 진행에 대해
움직이는 것은 없고.
전체적인 진행에 대한 방향? 음.. 그러니까 즉.. 감독이 되어서 하는
텍스트형 게임을 만들면 될꺼 같다.
음... 잘 안되면...
문서화 하기 좋은 야구 게임을 만들수도 있고.. ㅎ
그리고 휴식기간에는 선수영입과 방출.. 요정도..?
팀은 한 4개정도로...
그리고 선수는.. 한 100여명?
아무래도 힘들기야 하겠고.
각각에 상황에 맞는 결과를 보여줄려면 노가다 적인
프로그래밍이 필요하겠지만..
그래도 만들고 나면 상당히 재미 있고.
뿌듯한 프로그램이 완성될것같다. ㅎㅎㅎ


물론... 아직 계획서 제출기간이 남아 있어..
바뀔수도 있지만..
지금 이렇게 세웟으니.. 일단 각각에 대해
흐름에 대해 구상을 좀 해봐야겟다~ ㅋ

이 글과 관련있는 글을 자동검색한 결과입니다 [?]

by 날아라숑카 | 2008/04/15 15:51 | 실험프로젝트 | 트랙백 | 덧글(1)

트랙백 주소 : http://dduckjava.egloos.com/tb/242609
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 김교수 at 2008/04/16 18:43
위의 프로그램에서 한 정렬의 방법이 사실 기본적으로는 버블정렬입니다.

그런데 버블정렬에서는 일단계에서는 n번을 비교하면 그 다음은 n-1번을 그 다음은 n-2번을 이렇게 비교하는 수가 점점 줄어드는데 위 프로그램에서는 계속 n번씩 비교한다는...ㅎㅎ 그래도 정렬은 잘 되니까 큰 문제는 없죠.ㅎㅎ

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶