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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д