Итак, я не знаю, что это за ошибки, пока вы не опубликуете их, но у меня есть идея, почему ваш вывод преждевременно обрезается.
Итак, подведем итоги, давайте еще раз посмотрим на ваш код (соответствующая часть ":
cout << columns << " " << rows;
cout << endl;
for( int k = 0; k < rows; k++) {
for( int l = 0; l < columns; l++) /* { */
cout << matrix[k][l] << " ";
/* } */
cout << endl;
reader.close();
count_ones(matrix, rows,columns);
return 0;
}
Я отступил, чтобы было легче читать, а также добавлять скобки для комментариев, просто чтобы было понятнее, что и чем выполняется.
Итеперь вывод:
4 3
1 2 3 4
Хорошо, теперь давайте разберем, что происходит.
cout << columns << " " << rows;
cout << endl;
Это создает строку:
4 3
Покахорошо, верно?
Теперь мы вводим lop:
for( int k = 0; k < rows; k++) {
for( int l = 0; l < columns; l++) /* { */
cout << matrix[k][l] << " ";
/* } */
cout << endl;
и получаем это:
1 2 3 4
Это должна быть первая строка матрицы.
Выполняется больше кода:
reader.close();
count_ones(matrix, rows,columns);
, что не имеет отношения к вашей проблеме.
А теперь вот это:
return 0;
}
Упс! Мы 'мы просто вышли из функции, вызвав return.
Цикл больше не будет выполняться, потому что мы преждевременно прервали его , вернув его, только выведя первую строкуматрица.
Решение: Просто переместите оператор возврата за пределы цикла следующим образом:
cout << columns << " " << rows;
cout << endl;
for( int k = 0; k < rows; k++) {
for( int l = 0; l < columns; l++) /* { */
cout << matrix[k][l] << " ";
/* } */
cout << endl;
reader.close();
count_ones(matrix, rows,columns);
}
return 0;
И это должно решить проблему.
Наконец, несколько дружеских советов, примите совет Сами Кухмонена и сделайте отступ в своем коде.Это облегчает чтение и улавливание подобных вещей.
РЕДАКТИРОВАТЬ: Еще один момент, как упомянул Р.К.Лохана, вы, вероятно, тоже хотите извлечь эти строки из цикла:
reader.close();
count_ones(matrix, rows,columns);
Примерно так:
for( int k = 0; k < rows; k++) {
for( int l = 0; l < columns; l++) /* { */
cout << matrix[k][l] << " ";
/* } */
cout << endl;
}
reader.close();
count_ones(matrix, rows,columns);
return 0;
Поскольку вы, вероятно, хотите делать их только один раз, а не несколько раз.