Не компилируется код примера из книги - 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;
}

Объяснение кода листинга программы

  1. Включаются заголовочные файлы stdio.h и conio.h
  2. Определяются константы S и C, которые представляют количество строк и столбцов в массивах
  3. Функция sum() определена как функция с именем main()
  4. В функции main() определены переменные x и y, которые используются для инициализации массива massiv3
  5. Массив massiv1 инициализируется значениями {5, 120, -100, 0}, {20, 120, -30, -1000}, {304, -459, 234, 32432}, {342, -213, 543, -324}
  6. Массив massiv2 инициализируется значениями {34, -23, 453}, {543, -213, 546}, {234, 53, -23}, {0 ,543, -3}, {34 ,-45, 213}, {0, 324, -23}
  7. Переменные x и y инициализируются значениями 4 и 5 соответственно
  8. Массив massiv3 инициализируется значениями x * y + y
  9. Вызывается функция sum() для вычисления суммы элементов массива massiv1 с размерами 4x4
  10. Вызывается функция sum() для вычисления суммы элементов массива massiv2 с размерами 6x3
  11. Вызывается функция sum() для вычисления суммы элементов массива massiv3 с размерами 4x5
  12. Выводится сообщение summa massiv1[4][4] = и значение суммы массива massiv1
  13. Выводится сообщение summa massiv2[6][3] = и значение суммы массива massiv2
  14. Выводится сообщение summa massiv3[4][5] = и значение суммы массива massiv3
  15. Функция main() возвращает управление
  16. Функция sum() принимает три аргумента: int rows, int cols, int ar[rows][cols]
  17. Внутри функции sum() определена переменная summa, которая инициализируется значением 0
  18. Два вложенных цикла for перебирают все элементы массива ar[][]
  19. Внутри циклов переменная summa увеличивается на сумму соответствующих элементов массива ar[][]
  20. Возвращается значение переменной summa

Оцени полезность:

9   голосов , оценка 3.667 из 5
Похожие ответы