본문 바로가기
C/☞

[37] 연습문제 : 2차원 배열

by TR. 2020. 7. 23.

연습문제1

 

int d_arr[3][4] = {{1,2,3,4},{12,33,14,15},{23,24,25,26}};
int s_arr[12] = {0};

// 위 2차원의 값을 1차원 arr에 저장 후 출력 
더보기
int k = 0;
	for(int i=0; i<3; i++){
		for(int j=0; j<4; j++){
			s_arr[k] = d_arr[i][j];
			k += 1;
		}
	}

	int n = 0;
	while(n < 12){
		printf("%d ", s_arr[n]);
		n += 1;
		if(n % 4 == 0){
			printf("\n");
		}
	}

 

연습문제2

 

int apt[3][4] = {
  {101, 102, 103, 104}, 
  {201, 202, 203, 204}, 
  {301, 302, 303, 304},
  };
int pay[3][4] = {
  {1000, 1100, 1200, 1300}, 
  {2000, 2100, 12200, 2300}, 
  {3000, 3100, 3200, 3300},
  };
  
// 1. 각 층별 관리비 합계 ==> 1층 2층 3층 
// 2. 주소를 입력하면 관리비 출력 ==> 303 ==> 3200
// 3. 주소 2개를 입력하면 관리비 교환 
// 4. 관리비 가장많이 나온집 출력 
더보기
int apt[3][4] = {
	  {101, 102, 103, 104}, 
	  {201, 202, 203, 204}, 
	  {301, 302, 303, 304},
	  };
	int pay[3][4] = {
	  {1000, 1100, 1200, 1300}, 
	  {2000, 2100, 12200, 2300}, 
	  {3000, 3100, 3200, 3300},
	  };
  
// 1. 각 층별 관리비 합계 ==> 1층 2층 3층 : 0 1 2
	for(int i=0; i<3; i++){
		int sum = 0;
		for(int j=0; j<4; j++){
			sum += pay[i][j];
		}
		printf("%d층 : %d원\n", i+1, sum);
	}

// 2. 주소를 입력하면 관리비 출력 ==> 303 ==> 3200
	int ho;
	printf("주소를 입력하세요 : ");
	scanf("%d", &ho);
	int idx1;
	int idx2;
	
	for(int i=0; i<3; i++){
		for(int j=0; j<4; j++){
			if(apt[i][j] == ho){
				idx1 = i;
				idx2 = j;
			}
		}
	}
	printf("%d호 : %d 원\n", ho, pay[idx1][idx2]);


// 3. 주소 2개를 입력하면 관리비 교환 // 값 교체
	int ho1;
	int ho2;
	printf("주소1 입력:");
	scanf("%d", &ho1);
	printf("주소2 입력:");
	scanf("%d", &ho2);

	int id1;
	int id2;
	int id3;
	int id4;

	for(int i=0; i<3; i++){
		for(int j=0; j<4; j++){
			if(apt[i][j] == ho1){
				id1 = i;
				id2 = j;
			}
			if(apt[i][j] == ho2){
				id3 = i;
				id4 = j;
			}
		}
	}

	// 값교체
	//int temp = pay[id1][id2];
	//pay[id1][id2] = pay[id3][id4];
	//pay[id3][id4] = temp;

	//printf("주소1 : %d원\n", pay[id1][id2]);
	//printf("주소2 : %d원\n", pay[id3][id4]);


// 4. 관리비 가장많이 나온집 출력
	int max = 0;
	int id5;
	int id6;

	for(int i=0; i<3; i++){
		for(int j=0; j<4; j++){
			if(pay[i][j] > max){
				max = pay[i][j]; // 
				id5 = i;
				id6 = j;
			}
		}
	}
	printf("관리비 max : %d호\n", apt[id5][id6]);

'C > ' 카테고리의 다른 글

[39]-A. 회원가입  (0) 2020.07.23
[39] 회원가입  (0) 2020.07.23
[36] 2차원 배열  (0) 2020.07.22
[35]-A. CGV 영화관 예매  (0) 2020.07.22
[35] CGV 영화관 예매  (0) 2020.07.22

댓글