C/C++

Программирование на си в Визуал студио

Написала код для ввода двумерного массива с клавиатуры. Ввожу числа, потом массив собирается только из нечетных.. Скажите, пожалуйста, что не так?
scanf_s("%d%d", &arr[i][j]); вводит 2 числа (%d%d), первое записывает по адресу элемента arr[i][j], второе - куда Бог пошлет (смотря какой мусор окажется на стеке при вызове функции). Удивительно, что программа не падает по access violation.
ФИ
Флорид Ибрагимов
72 115
Лучший ответ
Юрий Катурга Скажите, пожалуйста, что конкретно необходимо исправить?
 #include  
#include
#include

#define ROWS 64
#define COLUMNS 32

size_t length(const char* msg, size_t limit) {
size_t value = 0;
while (!value || value > limit) {
printf("%s", msg);
scanf_s("%zu", &value);
}
return value;
}

unsigned keyboard_input(int* row, size_t columns) {
size_t i = 0;
unsigned width = 0U;
unsigned signs = 0U;
printf("Введите %zu целых чисел: ", columns);
while (i < columns) {
scanf_s("%i", &row[i]);
signs = (unsigned)log10(fabs(row[i])) + 1U;
if (row[i] < 0) ++signs;
if (width < signs) width = signs;
++i;
}
return width + 1U;
}

void show(int* row, size_t columns, unsigned width) {
size_t i = 0;
while (i < columns) {
printf("%*i", width, row[i]);
++i;
}
puts("");
}

int main(void) {
int matrix[ROWS][COLUMNS] = { 0 };
size_t rows = 0;
size_t columns = 0;
size_t i = 0;
unsigned max_width = 0U;
unsigned width = 0U;
system("chcp 1251 > nul");
rows = length("Введите количество строк матрицы: ", ROWS);
columns = length("Введите количество столбцов матрицы: ", COLUMNS);
puts("Введите матрицу:");
while (i < rows) {
width = keyboard_input(matrix[i], columns);
if (max_width < width) max_width = width;
++i;
}
system("cls");
i = 0;
while (i < rows) {
show(matrix[i], columns, max_width);
++i;
}
system("pause > nul");
return 0;
}
Саша Пронченко
Саша Пронченко
67 877
1. arr - у тебя глобальная переменная?
2. зачем ты запрашиваешь два числа? для ячейки достаточного одного
3. не выполняется : "потом массив собирается только из нечетных.."
начало соответствует твоим действиям
Юрий Катурга Да, arr - глобальная переменная
Юрий Катурга Запрашиваю число строк и число столбцов
Юрий Катурга Если Вы знаете, скажите, пожалуйста, что конкретно исправить?