Error: array type has incomplete element type - C (СИ)
Формулировка задачи:
в функции выдает ошибку
\arifm.c|4|error: array type has incomplete element type|
подправьте пожалуйста
main
функция
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include "locale.h"
- #include <time.h>
- void arifm(int[], int, int);
- int main()
- {
- int n,m,i,j; //n - строка m - столбец
- setlocale(LC_CTYPE, "RUSSIAN");
- printf("Введите размер квадратной матрицы n*n: ");
- scanf("%d", &n);
- m=n;
- int mat[n][m];
- srand(time(NULL));
- for(i=0; i<m; i++)
- {
- for (j=0;j<n;j++)
- {
- printf(" %d", mat[i][j]=rand()%10);
- }
- printf("\n");
- }
- arifm((int) mat, n, m);
- return 0;
- }
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- void arifm(int mat[][] ,int n, int m)
- {
- int i, j;
- double arr[n],sum=0.0;
- for(i=0;i<m;i++)
- {
- for(j=0;j<n;j++){
- sum=sum+mat[j][i];// вычисление суммы элементов столбца
- }
- sum=sum-mat[i][i];// вычитание элемента столбца по главной диагонали
- sum=sum/(n-1);//вычисление среднего арифметического
- arr[i]=sum;//присваивание значение sum элементу массива
- printf("среднее арифметическое столбцов: %.2f\n",arr[i]);
- sum=0;
- }
- }
Решение задачи: «Error: array type has incomplete element type»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <locale.h>
- #include <time.h>
- #include <malloc.h>
- void print(int** mat, int n, int m)
- {
- int i, j;
- for(i=0;i<m;i++)
- {
- for(j=0;j<n;j++)
- printf("%d ",mat[i][j]);
- printf("\n");
- }
- }
- void arifm(int** mat, int n, int m)
- {
- int i, j;
- double sum;
- double* arr;
- sum = 0.0;
- arr = malloc(n*sizeof(double));
- for(i=0;i<m;i++)
- {
- for(j=0;j<n;j++){
- sum=sum+mat[j][i];// вычисление суммы элементов столбца
- }
- sum=sum-mat[i][i];// вычитание элемента столбца по главной диагонали
- sum=sum/(n-1);//вычисление среднего арифметического
- arr[i]=sum;//присваивание значение sum элементу массива
- printf("среднее арифметическое столбцов: %.2f\n",arr[i]);
- sum=0;
- }
- free(arr);
- }
- int main()
- {
- int** mat;
- int n,m,i,j; //n - строка m - столбец
- setlocale(LC_CTYPE, "RUSSIAN");
- printf("Введите размер квадратной матрицы n*n: ");
- scanf("%d", &n);
- m = n;
- mat = (int**) malloc( m * sizeof(int*));
- for(i = 0; i < m; i++)
- mat[i] = (int*) malloc( n * sizeof(int ));
- srand(time(NULL));
- for(i=0; i<m; i++)
- {
- for (j=0;j<n;j++)
- {
- printf(" %d", mat[i][j]=rand()%10);
- }
- printf("\n");
- }
- print(mat, n, m);
- arifm(mat, n, m);
- for(i=0;i<n;i++)
- free (mat[i]);
- free(mat);
- return 0;
- }
Объяснение кода листинга программы
- print - функция для вывода элементов матрицы на экран
- arifm - функция для вычисления среднего арифметического элементов столбцов матрицы
- main - функция, с которой начинается выполнение любой программы на языке C
- mat - двумерный массив (матрица), в котором будут храниться случайные числа
- n, m - переменные для хранения размеров матрицы
- i, j - переменные для хранения индексов элементов матрицы
- setlocale - функция для установки текущей локали
- printf - функция для вывода информации на экран
- scanf - функция для ввода информации с клавиатуры
- malloc - функция для выделения памяти под массив
- srand - функция для инициализации генератора случайных чисел
- rand - функция для генерации случайных чисел
- free - функция для освобождения памяти, выделенной под массив
- return - оператор, завершающий выполнение функции и возвращающий значение
- %d - спецификатор формата для вывода целых чисел
- %d - спецификатор формата для ввода целых чисел
- *nn** - размер матрицы в квадратных элементах
- m = n; - присваивание переменной m значение переменной n
- mat = (int) malloc( m sizeof(int));** - выделение памяти под массив указателей на матрицу
- for(i = 0; i < m; i++) - цикл для заполнения матрицы случайными числами
- mat[i] = (int) malloc( n sizeof(int )); - выделение памяти под массив значений матрицы
- printf(
%d
, mat[i][j]=rand()%10); - вывод элемента матрицы на экран - printf(
\n
); - переход на новую строку - print(mat, n, m); - вызов функции для вывода элементов матрицы на экран
- arifm(mat, n, m); - вызов функции для вычисления среднего арифметического элементов столбцов матрицы
- for(i=0;i<n;i++) - цикл для освобождения памяти под массив значений матрицы
- free (mat[i]); - освобождение памяти под массив значений матрицы
- free(mat); - освобождение памяти под массив указателей на матрицу
- return 0; - завершение выполнения функции и возврат значения 0
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д