당신은 당신이 아주 잘하려는 당신이하지 않은 것을 설명하지 않은 발생하는 문제에 대해 설명 했으므로 다음은 추측을 기반으로합니다.
빠른 갈색 여우가 게으른 개를 뛰어 넘었다 :
은 그래서 당신이 할하려는 것은 같은 문자열을입니다 보인다.
과 같은 2 차원 배열에 그것을 넣어 : 코드 문제
0 1 2 3 4 5 6 7 8
0 T h e q u i c k
1 b r o w n f o
2 x j u m p e d
3 o v e r t h e
4 l a z y d o g s
5 . x x x x x x x x
6 x x x x x x x x x
7 x x x x x x x x x
8 x x x x x x x x x
한 것은 당신이 s
에 w
에서 값을 복사 할 인덱스 p
내에서 실제로 있는지 확인하지 않는다는 것입니다 경계. 당신은 while(p != w.size())
라고 말하는 줄에서 이것을 처리하려고 시도한 것 같습니다. 그러나 바깥 쪽 루프는 p
이 범위를 넘어서서 증가하지 않도록 보호하고 내부 루프에서 사용됩니다. 대신에 p++; if (p==w.size()) break;
과 같은 것을 넣어야합니다. 내부 루프의 가장 큰 부분은 p
입니다. 또는 더 나은 아직 배열을 통해 대신 문자열을 반복해야합니다. 다음 의사 코드와 같은 뭔가 루프
for(size_t i=0; i<w.size(); ++i) {
int k = compute target row from i
int j = compute target column from i
s[k][j] = w[i]
}
는 또한, 여기 디버깅하고 같이 잘 배열을 시각화하는 몇 가지 코드의 .:의 전체 while(p){for(k){for(j){}}}
세트를 대체 할 것이다. 당신은 변경하지 않고이 프로그램을 실행하면
#include <iostream>
int main() {
char s[9][9] = {"The","quick","brown","fox","jumped","over","the","lazy","dogs."};
// your code to get input and copy it into the array goes here
//
// for(size_t i=0; i<w.size(); ++i) {
// int k = compute target row from i
// int j = compute target column from i
// s[k][j] = w[i]
// }
std::cout << " 0 1 2 3 4 5 6 7 8\n";
for (int i=0; i<9; ++i) {
std::cout << i;
for (int j=0; j<9; ++j)
std::cout << ' ' << s[i][j];
std::cout << '\n';
}
}
출력은 다음과 같아야합니다
0 1 2 3 4 5 6 7 8
0 T h e
1 q u i c k
2 b r o w n
3 f o x
4 j u m p e d
5 o v e r
6 t h e
7 l a z y
8 d o g s .
은 무엇 출력을 생성 않고 당신이 어떤 결과를 기대합니까? 제발 좀 더 구체적으로 말하십시오. – Lion
글자 w에서 2 차원 문자 배열로 모든 것을 출력 할 것으로 예상했다. 이걸 좀 도와 주실 래요? 감사. – user1567909
문자열'w'가 성공적으로 읽혀지고 충분한 원소 (적어도 81)를 포함하고 있는지 확인하십시오. 출력물에 9자를 인쇄 한 후에 줄 바꿈을 삽입하고 싶을 것입니다. 그리고 마지막 코멘트에서 질문에 대답하십시오 : 예, 우리는 숙제를 할 수는 있지만 그건 도움이되지 않습니다. –