Не компилируется код примера из книги - C (СИ)
Формулировка задачи:
/*Списал код с книги. Visio 2012 не может его даже скомпилировать, а GCC не выводит результат(аварийно завершается программа), подскажите в чём дело? */ #include <stdio.h> #include <conio.h> #define S 4 #define C 4 int sum(int rows, int cols, int ar[rows][cols]); void main(void) { int x, y; int rs = 4, we = 5; int massiv1[S][C] = { {5, 120, -100, 0}, {20, 120, -30, -1000}, {304, -459, 234, 32432}, {342, -213, 543, -324} }; int massiv2[S + 2][C - 1] = { {34, -23, 453}, {543, -213, 546}, {234, 53, -23}, {0 ,543, -3}, {34 ,-45, 213}, {0, 324, -23} }; int massiv3[x][y]; for(x = 0; x < rs; x++) for(y = 0; y < we; y++) massiv3[x][y] = x * y + y; printf("summa massiv1[4][4] = %d\n", sum(S, C, massiv1)); printf("summa massiv2[6][3] = %d\n", sum(S + 2, C - 1, massiv2)); printf("summa massiv3[4][5] = %d\n", sum(rs, we, massiv3)); getch(); return; } int sum(int rows, int cols, int ar[rows][cols]) { int summa = 0; int q, a; for(q = 0; q < rows; q++) for(a = 0; a < cols; a++) summa += ar[q][a]; return summa; }
Решение задачи: «Не компилируется код примера из книги»
textual
Листинг программы
#include <stdio.h> #include <conio.h> #define S 4 #define C 4 int sum(int rows, int cols, int ar[rows][cols]); void main(void) { int x, y; int rs = 4, we = 5; int massiv1[S][C] = { {5, 120, -100, 0}, {20, 120, -30, -1000}, {304, -459, 234, 32432}, {342, -213, 543, -324} }; int massiv2[S + 2][C - 1] = { {34, -23, 453}, {543, -213, 546}, {234, 53, -23}, {0 ,543, -3}, {34 ,-45, 213}, {0, 324, -23} }; int massiv3[x][y]; for(x = 0; x < rs; x++) for(y = 0; y < we; y++) massiv3[x][y] = x * y + y; printf("summa massiv1[4][4] = %d\n", sum(S, C, massiv1)); printf("summa massiv2[6][3] = %d\n", sum(S + 2, C - 1, massiv2)); printf("summa massiv3[4][5] = %d\n", sum(rs, we, massiv3)); getch(); return; } int sum(int rows, int cols, int ar[rows][cols]) { int summa = 0; int q, a; for(q = 0; q < rows; q++) for(a = 0; a < cols; a++) summa += ar[q][a]; return summa; }
Объяснение кода листинга программы
- Включаются заголовочные файлы stdio.h и conio.h
- Определяются константы S и C, которые представляют количество строк и столбцов в массивах
- Функция sum() определена как функция с именем main()
- В функции main() определены переменные x и y, которые используются для инициализации массива massiv3
- Массив massiv1 инициализируется значениями {5, 120, -100, 0}, {20, 120, -30, -1000}, {304, -459, 234, 32432}, {342, -213, 543, -324}
- Массив massiv2 инициализируется значениями {34, -23, 453}, {543, -213, 546}, {234, 53, -23}, {0 ,543, -3}, {34 ,-45, 213}, {0, 324, -23}
- Переменные x и y инициализируются значениями 4 и 5 соответственно
- Массив massiv3 инициализируется значениями x * y + y
- Вызывается функция sum() для вычисления суммы элементов массива massiv1 с размерами 4x4
- Вызывается функция sum() для вычисления суммы элементов массива massiv2 с размерами 6x3
- Вызывается функция sum() для вычисления суммы элементов массива massiv3 с размерами 4x5
- Выводится сообщение
summa massiv1[4][4] =
и значение суммы массива massiv1 - Выводится сообщение
summa massiv2[6][3] =
и значение суммы массива massiv2 - Выводится сообщение
summa massiv3[4][5] =
и значение суммы массива massiv3 - Функция main() возвращает управление
- Функция sum() принимает три аргумента: int rows, int cols, int ar[rows][cols]
- Внутри функции sum() определена переменная summa, которая инициализируется значением 0
- Два вложенных цикла for перебирают все элементы массива ar[][]
- Внутри циклов переменная summa увеличивается на сумму соответствующих элементов массива ar[][]
- Возвращается значение переменной summa
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д