C++ 다차원 배열에서 표시된 요소만 출력하려면?

C++ 다차원 배열에서 표시된 요소만 출력하려면?

QA

C++ 다차원 배열에서 표시된 요소만 출력하려면?

본문


using namespace std;
int main() {
     int nums[2][4] = { {1, 2, 3, 4}, {5, 6, 7} };
     for (int i = 0; i < 2; ++i) {
        for(int j = 0; j < 4; ++j) {
           cout << nums[i][j] << "\n";
        }
     }
     return 0;
}

 

결과값

1

2

3

4

5

6

7

0

 

C++에서 2차원 배열 경우, 지정 길이보다 요소 개수가 작으면 0이 자동 배정되어

원래 배열엔 없는 결과값의 빨간색 부분 0이 출력됩니다.

순수하게 배열에 적힌 숫자만 가져오는 가장 최선의 방법은

행과 열의 요소 개수를 자동 계산해 가져오는 것 같은데,

검색해보니 행은 미지정 가능하나 열 부분은 반드시 지정해야 하더라구요.

 

혹시, 이런 경우엔 어떤 식으로 처리해서 배열요소만 출력되게 할 수 있는지?

 

이 질문에 댓글 쓰기 :

답변 1


#include <iostream>
using namespace std;
int main() {
     int nums[2][4] = { {1, 2, 3, 4}, {5, 6, 7} };
     for (int i = 0; i < 2; ++i) {
        for(int j = 0; j < 4; ++j) {
           if(nums[i][j] != NULL && nums[i][j] != 0)
               cout << nums[i][j] << "\n";
        }
     }
     return 0;
}

 

이렇게 처리하면 되지 않을까요? 0이거나 null은제외

답변 감사합니다.

그런데,
숫자 중에 0이 들어갈 수 있는 경우도 상정해 테스트 해보니,
아래처럼 중간의 숫자 0은 안 찍히더라구요.

#include <iostream>
using namespace std;

int main() {
    int nums[2][4] = { {1, 2, 3, 0}, {5, 6, 7} };
    for (int i = 0; i < 2; ++i) {
        for(int j = 0; j < 4; ++j) {
          if(nums[i][j] != NULL)
              cout << nums[i][j] << "\n";
        }
    }
    return 0;
}

결과값:
1
2
3
5
6
7

무엇 때문에 이렇게 값을 넣으시는지는 잘 모르겠지만
배열에서 0은 NULL 입니다.  #define NULL 0
배열에 NULL로 초기화 하고 출력해도 0으로 나오고요
 

즉 배열형식에 맞추던가 0이 아닌 다른 값으로 넣던가 하셔야 할 것 같네요

C++ 막 입문해는데, 걍 궁금해서요.
PHP 언어에선 아래처럼 배열 개수 구해서 반복문 돌리면 되는데,
C++에선 배열 요소 중에 0이 들어간 경우 어떻게 하는가 싶어서...

<?php
$arr = array(
  array(1,2,3,0),
  array(5,6,7)
);
for($i=0; $i<2; $i++) {
    $len = count($arr[$i]);
    for($j=0; $j<$len; $j++) {
        echo $arr[$i][$j]."<br>";
    }
}

c, c++은 배열이 할당되면 할당된 만큼 배열크기가 정해져있어서
num[i] 의 사이즈도 무조건 4로 나올거에요!

다른방법으로는 vector를 이용하시면 됩니다


#include <iostream>
#include <vector>
using namespace std;
int main() {

   vector<vector<int>> arr = {{1, 2, 3, 4}, {5, 6, 7}};
    
    int row_count = arr.size();
    
     for (int i = 0; i < row_count; ++i) {
        int col_count = arr[i].size(); 
        for(int j = 0; j < col_count; ++j) {
            cout <<  arr[i][j] << "\n";       
        }
     }
     
     return 0;
}

답변을 작성하시기 전에 로그인 해주세요.
전체 67
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT