C++ 다차원 배열에서 표시된 요소만 출력하려면? 채택완료
sinbi
4년 전
조회 2,845
</p>
<p>using namespace std;</p>
<p>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;
}</p>
<p>
결과값
1
2
3
4
5
6
7
0
C++에서 2차원 배열 경우, 지정 길이보다 요소 개수가 작으면 0이 자동 배정되어
원래 배열엔 없는 결과값의 빨간색 부분 0이 출력됩니다.
순수하게 배열에 적힌 숫자만 가져오는 가장 최선의 방법은
행과 열의 요소 개수를 자동 계산해 가져오는 것 같은데,
검색해보니 행은 미지정 가능하나 열 부분은 반드시 지정해야 하더라구요.
혹시, 이런 경우엔 어떤 식으로 처리해서 배열요소만 출력되게 할 수 있는지?
댓글을 작성하려면 로그인이 필요합니다.
답변 1개
채택된 답변
+20 포인트
4년 전
</p>
<p>#include <iostream></p>
<p>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;
}</p>
<p>
이렇게 처리하면 되지 않을까요? 0이거나 null은제외
로그인 후 평가할 수 있습니다
답변에 대한 댓글 5개
s
sinbi
4년 전
�
냑냑
4년 전
무엇 때문에 이렇게 값을 넣으시는지는 잘 모르겠지만
배열에서 0은 NULL 입니다. #define NULL 0
배열에 NULL로 초기화 하고 출력해도 0으로 나오고요
즉 배열형식에 맞추던가 0이 아닌 다른 값으로 넣던가 하셔야 할 것 같네요
배열에서 0은 NULL 입니다. #define NULL 0
배열에 NULL로 초기화 하고 출력해도 0으로 나오고요
즉 배열형식에 맞추던가 0이 아닌 다른 값으로 넣던가 하셔야 할 것 같네요
s
sinbi
4년 전
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>";
}
}
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>";
}
}
�
냑냑
4년 전
c, c++은 배열이 할당되면 할당된 만큼 배열크기가 정해져있어서
num[i] 의 사이즈도 무조건 4로 나올거에요!
다른방법으로는 vector를 이용하시면 됩니다
[code]
#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;
}
[/code]
num[i] 의 사이즈도 무조건 4로 나올거에요!
다른방법으로는 vector를 이용하시면 됩니다
[code]
#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;
}
[/code]
s
sinbi
4년 전
완전 잘 됩니다.
w3schools.com 사이트엔 소개 조차 안 된 고급 기술이네요. ㅎ
덕분에 좋은 기술 비웠씁니다. 감사합니다. 주말 잘 보내세요 ~~
w3schools.com 사이트엔 소개 조차 안 된 고급 기술이네요. ㅎ
덕분에 좋은 기술 비웠씁니다. 감사합니다. 주말 잘 보내세요 ~~
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
그런데,
숫자 중에 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