** 실습1 **

/* 1 배열
 문제)5개의 정수를 {95, 75, 85, 100, 50}으로 초기화 하고 오름차순으로 정렬하여 출력하는 프로그램
 출력예)50 75 85 95 100
 */

		int[] arr = {95, 75, 85, 100, 50};
		int i, j, tmp;
		
		for(i = 0 ; i < arr.length-1 ; i++)
		{
			for(j = i + 1 ; j < arr.length ; j++)
			{
				if(arr[i] > arr[j])
				{
					tmp = arr[i];
					arr[i] = arr[j];
					arr[j] = tmp;
				}
			}
		}
		
		for(i = 0 ; i < arr.length ; i++)
		{
			System.out.printf("%d ", arr[i]);
		}

** 실습2 **

/* 2
 문제)10개의 정수를 입력받아 배열에 저장할 후 내림차순으로 정렬하는 프로그램.
 입력예)95 100 88 65 76 89 58 93 77 99
 출력예)100 99 95 93 89 88 77 76 65 58
 */

		int[] a = new int[10];
		int i, j, tmp;
		for(i = 0 ; i < a.length ; i++)
		{
			a[i] = scn.nextInt();
		}
		
		for(i = 0 ; i < a.length-1 ; i++)
		{
			for(j = i + 1 ; j < a.length ; j++)
			{
				if(a[i] < a[j])
				{
					tmp = a[i];
					a[i] = a[j];
					a[j] = tmp;
				}
			}
		}		
		for(i = 0 ; i < a.length ; i++)
		{
			System.out.printf("%d ",a[i]);
		}
		//바로위 for문을 정식 선택알고리즘으로 변경
		int val, idx = 0;	//val변수는 기준값 저장, idx변수는 교환할 j인덱스값 저장
		for(i = 0 ; i < a.length-1 ; i++)
		{			
			val = a[i];
			for(j = i+1 ; j < a.length ;j++)		// 100 95 88 65 76 89 58 93 77 99
			{
				if(val < a[j])
				{
					val = a[j];
					idx = j;
				}
			}
			
			//최종 자리교환		
			if(idx > i)
			{
				tmp = a[i];
				a[i] = a[idx];
				a[idx] = tmp;
			}
			
			//디버깅 
			System.out.println("i : " + i + ", idx : " + idx);
			for(int k = 0 ; k < a.length ; k++) 
			{
				System.out.printf("%d ", a[k]);
			}
			
			System.out.println();
			
			idx = i; 	//0;	//초기화 꼭 해야한다.
		}
		
		System.out.println();
		
		for(i = 0 ; i < a.length ; i++)
		{
			System.out.printf("%d ",a[i]);
		}

 

** 실습3 **

/* 3
 문제)최대 100개 정수를 입력받다가 0 이 입력되면 종료하고 그때까지 입력된 수 중 
   5의 배수의 개수와 합계, 평균을 출력하는 프로그램
 입력예)35 10 23 100 64 51 5 0
 출력예)5의 배수 : 4개
    합계 : 150
    평균 : 37.5
 */

		int[] a = new int[100];
		int i, cnt = 0, sum = 0;
		double avg;
		
		for(i = 0 ; i < a.length ; i++)
		{
			a[i] = scn.nextInt();
			
			if(a[i] == 0)
				break;
			
			if (a[i] % 5 == 0)
			{				
				cnt++;
				sum += a[i];
			}
		}
		
		avg = (double)sum / cnt;
		
		System.out.printf("5의 배수 : %d개\n", cnt);
		System.out.printf("합계 : %d\n", sum);
		System.out.printf("평균 : %.1f", avg);
		//위에 for문을 for2개로 나누어 처리
		
		int num = 0;
		for( i = 0 ; i < a.length ; i++)
		{
			a[i] = scn.nextInt();
			if(a[i] == 0)
				break;
			num++;
		}
		for(i = 0 ; i < num ; i++)
		{
			if(a[i] % 5 == 0)
			{
				sum += a[i];
				cnt++;
			}
		}
			
		
		avg = (double)sum / cnt;
		
		System.out.printf("5의 배수 : %d개\n", cnt);
		System.out.printf("합계 : %d\n", sum);
		System.out.printf("평균 : %.1f", avg);

** 실습4 **

/* 4
 문제)100개 이하의 정수를 입력받다가 0이 입력되면 0을 제외하고 그때까지 입력방은
   개수를 출력한 후 입력 받은 정수를 차례로 출력하되 그 수가 홀수이며 2배한 값을
   짝수이면 2로 나눈 몫을 출력하는 프로그램.
   단, 값 출력은 배열을 이용하지 않음.(배열의 입력값은 변경 없음.)
 입력예)8 10 5 15 100 0
 출력예)5
    4 5 10 30 50 
 */

		int[] arr = new int[100];
		int i, cnt = 0;
		
		
		for(i = 0 ; i < arr.length ; i++)
		{
			arr[i] = scn.nextInt();
			
			if(arr[i] == 0) break;
			
			cnt++;
		}
		
		System.out.println(cnt);
		int val;
		
		for(i = 0 ; i < cnt ; i++)
		{
			if(arr[i] % 2 == 0)
			{
				val = arr[i] / 2;
			}
			else
				val = arr[i] * 2;
			
				System.out.printf("%d ", val);
		}
		//위와 동일한 결과로 for문 1번만 사용경우 출력결과 순서변경
		
		int tmp;
		for(i = 0 ; i < arr.length ; i++)
		{
			arr[i] = scn.nextInt();
			
			if(arr[i] == 0) 
			{
				System.out.println("\n" + cnt);
				break;
			}
			
			cnt++;
			
			if(arr[i] % 2 == 0)
				tmp = arr[i] / 2;
			else
				tmp = arr[i] * 2;
			
			System.out.print(tmp + " ");
		}

** 실습5 **

/* 5
 문제)정수 10개를 입력받아 최대 값을 출력하는 프로그램 작성.
   단, 변수는 배열변수 score와 출력용 max, for문용 i만을 선언함.
     정수는 0~100사이 값만 입력받으며 나머지 값 입력시
     "숫자의 범위가 초과 되었습니다."
     "0~100사이의 숫자를 다시 입력하세요.>"
 입력예)110
    숫자의 범위가 초과 되었습니다.
    0~100사이의 숫자를 다시 입력하세요.>
 입력예)95 67 88 65 76 89 58 93 77 99 (입력시마다 하나의 값 입력 후 바로 엔터)
 출력예)가장 큰 값은 99입니다.
 */

//for문 1번만 사용할 경우
		
		int[] a = new int[10];
		int max = 0, i;
		
		for(i = 0 ; i < a.length ; i++)
		{
			a[i] = scn.nextInt();
			
			if(a[i] < 0 || a[i] > 100)
			{
				System.out.println("숫자의 범위가 초과 되었습니다.");
				System.out.print("0~100사이의 숫자를 다시 입력하세요.>");
				i--;
				continue;
			}
			
			if(a[i] > max)
			{
				max = a[i];
			}
		}
		
		System.out.printf("가장 큰 값은 %d입니다.\n", max);
		//while문 사용한 풀이 (for문 2개)
		
		int[] a = new int[10];
		int max = 0, i;
		
		for(i = 0 ; i < a.length ; i++)
		{
			a[i] = scn.nextInt();
			
			while(a[i] < 0 || a[i] > 100)
			{
				System.out.println("숫자의 범위가 초과 되었습니다.");
				System.out.print("0~100사이의 숫자를 다시 입력하세요.>");
				a[i] = scn.nextInt();
			}
		} 
		
		max = a[0];
		for(i = 1 ; i < a.length ; i++)
		{
			if(max < a[i])
			{
				max = a[i];
			}
		}
		
		System.out.printf("가장 큰 값은 %d입니다.\n", max);
		//if 사용 (for문 2개)
		
		int[] a = new int[10];
		int max = 0, i;
		
		for(i = 0 ; i < a.length ; i++)
		{
			a[i] = scn.nextInt();
			
			if(a[i] < 0 || a[i] > 100)
			{
				System.out.println("숫자의 범위가 초과 되었습니다.");
				System.out.print("0~100사이의 숫자를 다시 입력하세요.>");
				i--;
				continue;
			}
		}
		
		max = a[0];
		for(i = 1 ; i < a.length ; i++)
		{
			if(max < a[i])
			{
				max = a[i];
			}
		}
		
		System.out.printf("가장 큰 값은 %d입니다.\n", max);

** 실습6 **

/* 6
 문제)20 이하의 정수 n을 입력받고 n명의 점수를 입력받아 높은 점수 부터 차례로 출력하는 프로그램
 입력예)5
      35 10 35 100 64
 출력예)100 64 35 35 10
 */

		int i, j, tmp;
		
		int n = scn.nextInt();
		
		int[] score = new int[n];
		
		for(i = 0 ; i < score.length ; i++)
		{
			score[i] = scn.nextInt();
		}
		
		for(i = 0 ; i < score.length-1 ; i++)
		{
			for( j = i + 1 ; j < score.length ; j++)
			{
				if(score[i] < score[j])
				{
					tmp = score[i];
					score[i] = score[j];
					score[j] = tmp;
				}
			}
		}
		
		for(i = 0 ; i < score.length ; i++)
		{
			System.out.print(score[i] + " ");
		}
		//정렬은 모두 받아두고 밖에서 정렬하는것이 제일 좋다.

** 실습7 **

/* 7
 문제)정수 5개를 입력받을 배열을 선언한 후 정수 5개를 입력받아 배열에 저장한 후 
   배열복사를 통해 크기가 2배인 배열에 복사하고 언래 배열 크기뒤부터 다시 입력 
   5개를 받아 출력하는 프로그램 작성.
   단, 추가 입력까지 모두 한 후에 배열 복사 진행.
 입력예)10 20 30 40 50 (arr에 입력)
 출력예)arr.length : 5 (arr로 출력)
    10 20 30 40 50 
 입력예)1 2 3 4 5   (tmp에 입력)
 배열복사 후 출력
 최종출력예)10 20 30 40 50 1 2 3 4 5 (arr로 출력)
 */

 

 

 

 

 

 

'수업끄적끄적_7MONTH > Java' 카테고리의 다른 글

11/13 수업 (11일차)  (2) 2023.11.13
11/10 수업 (10일차)  (0) 2023.11.10
11/08 수업(8일차)  (0) 2023.11.08
11/07 수업 (7일차)  (1) 2023.11.07
11/06 수업 (6일차)  (0) 2023.11.06

+ Recent posts