Это первый раз, когда я использую C. Я должен сделать домашнее задание по числовой математике на C.
Итак, у меня проблема с использованием многомерных массивов. Я не знаю, почему я получаю следующие ошибки:
- подписанное значение не является ни массивом, ни указателем, ни вектором
- подписанное значение не является ни массивом, ни указателем, ни вектором
- В функции «inMatrix»:
ошибка: подписанное значение не является ни массивом, ни указателем, ни вектором |
- В функции «inVector»: |
ошибка: подписанное значение не является ни массивом, ни указателем, ни вектором |
- В функции «outVector»: |
ошибка: подписанное значение не является ни массивом, ни указателем, ни вектором |
- В функции «main»: |
ошибка: несовместимый тип для аргумента 2 'plu ’|
- примечание: ожидается ‘float (*) [(long unsigned int) (k)]’, но аргумент имеет тип «float» |
ошибка: несовместимый тип для аргумента 3 'plu ’|
- ожидается "float *", но аргумент имеет тип "float" |
Например:
Я не знаю, почему он жалуется на 'float *', когда я не использовал указатель с плавающей точкой. Поиск в Google не дал никаких результатов, поэтому я не знаю, в чем ошибка Я не понимаю эту ошибку «значение в подписке не является ни массивом, ни указателем, ни вектором».
Что я могу сделать? Как я могу переписать свой исходный код, чтобы избавиться от этих ошибок компилятора?
Извините за мой плохой английский.
#include <stdio.h>
#include <stdlib.h>
void inMatrix(double matrix, int n)
{
int j, i;
for (i = 0; i < n; i++)
{
for (j= 0; j < n; j++)
{
scanf("%lf", &matrix[i][j]);
}
}
}
void inVector(double vektor, int n)
{
int k;
for (k = 0; k < n; k++)
{
scanf("%lf", &vektor[k]);
}
}
void outVector(double vektor, int n)
{
int k;
for (k = 0; k < n; k++)
{
printf("%.8lf", vektor[k]);
}
}
int plu(int k, float A[k][k], float b[k], float x[k])
{
int P[k];
int n, m, p, i, j;
int d=0;
int r=0;
int T=0;
float t=0;
float y[k];
//seged vektorok
for(n=1; n<k;n++)
{
x[n]=0;
y[n]=0;
}
// Permutaciós matrix
// permutation
for(i=1; i<k; i++)
{
P[i]=i;
}
// Rendezes
// sorting
for(d=1; d<k-1;d++)
{
p=0;
for(i=d; i<k; i++)
{
t=A[i][d];
if(t<0)
t=-1*t;
if(t>p)
{
p=t;
r=i;
}
}
//Ha szingularis
//If singular
if(p==0)
{
// printf("szingularis");
return 1;
}
//Matrix Csere
//Matrix change
T=P[r];
P[r]=P[d];
P[d]=T;
//matrix elem csere
//matrix value change
for(i=1; i<k; i++)
{
t=A[r][i];
A[r][i]=A[d][i];
A[d][i]=t;
}
for(i=d+1;i<k;i++)
{
A[i][d]=A[i][d]/A[d][d];
for(j=d+1; j<k; j++)
{
A[i][j]=A[i][j]-A[i][d]*A[d][j];
}
}
}
// Megoldas Vektorra
// Solve for Vector
for(n=1; n<k;n++)
{
t=0;
for(m=1;m<=n-1;m++)
{
t+=A[n][m]*y[m];
}
y[n]=b[P[n]]-t;
}
for(n=k-1;n>=1;n--)
{
t=0;
for(m=n+1; m<k;m++)
{
t+=A[n][m]*x[m];
}
x[n]=(y[n]-t)/A[n][n];
}
return 0;
}
int main()
{
//int i,j,k, num,value;
// d as numbers of dimmension
int d;
// Read dimension of array
scanf("%d", &d);
float matrix[d][d];
float vector[d];
inMatrix(matrix[d][d], d);
inVector(vector[d], d);
float resVector[d];
if(plu(d,matrix[d][d],vector[d], resVector[d])==1)
{
printf("szingularis");
}
else
{
outVector(resVector[d], d);
}
return 0;
}