
C/C++
Программирование на си в Визуал студио
Написала код для ввода двумерного массива с клавиатуры. Ввожу числа, потом массив собирается только из нечетных.. Скажите, пожалуйста, что не так?

scanf_s("%d%d", &arr[i][j]); вводит 2 числа (%d%d), первое записывает по адресу элемента arr[i][j], второе - куда Бог пошлет (смотря какой мусор окажется на стеке при вызове функции). Удивительно, что программа не падает по access violation.
Юрий Катурга
Скажите, пожалуйста, что конкретно необходимо исправить?
#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;
}
1. arr - у тебя глобальная переменная?
2. зачем ты запрашиваешь два числа? для ячейки достаточного одного
3. не выполняется : "потом массив собирается только из нечетных.."
начало соответствует твоим действиям
2. зачем ты запрашиваешь два числа? для ячейки достаточного одного
3. не выполняется : "потом массив собирается только из нечетных.."
начало соответствует твоим действиям
Юрий Катурга
Да, arr - глобальная переменная
Юрий Катурга
Запрашиваю число строк и число столбцов
Юрий Катурга
Если Вы знаете, скажите, пожалуйста, что конкретно исправить?
Похожие вопросы
- День добрый \[-_-]/ вопрос по вузовскому программированию на си(C)
- Программирование на Си
- Как написать код по этому заданию? Программирование на Си
- Помогите с программированием на Си
- Помогите с программированием на Си Работа с последовательностями элементов
- Помогите Программирование на Си (одномерные массивы)
- Помогите с программированием на си
- Программирование на СИ "Написать программу подсчёта суммы нечётных элементов из 20 введенных"
- Программирование на си
- Программирование на си