ООП
Найти дисперсию элементов векторов строки и столбца, пересекающихся на максимальном элементе квадратной матрицы. Размерность матрицы не более чем 14*14. Формат числа ц.цц.
Дисперсия элементов вектора Y=( Y1,Y2, …Yn ):
Ну вот я написал такое а мне вываливает такие ошибки в чём дело
#include<conio.h>
#include<stdio.h>
#include<math.h>
class Matrix2
{
public:
void Vvod(float(*a)[14],int n);
void Max(float(*a)[14],int n,int *I,int *j);
float Res1(float *a, int n);
float Res2(float(*a)[14],int n,int j);
protected:
int i,j;
};
void Matrix2::Vvod(float(*a)[14],int n)
{
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
printf("A[%d][%d]=",i,j);
scanf("%f",&a[j]);
}
}
void Matrix2::Max(float(*a)[14],int n,int *I,int *j)
{
printf("\nMatritsa:\n");
for(i=0; i<n; i++)
{
for(j=0;j<n;j++)
{
if(a[*I][*J],a[j])
{
*I=i;
*J=j;
}
printf("%3.1f\t",a[j]);
}
printf("\n");
}
}
void Matrix2::Res1(float *a, int n);
{
float S=0, Ysr=0;
for(i=0; i<n; i++)
{
Ysr+=a;
printf("a=%f\n",a);
}
for9i=0; i<n; i++)
{
S+=pow(a-Ysr,2);
}
printf("--------------\n");
return S/n;
}
void Matrix2::Res2(float(*a)[14],int n,int j)
{
float S=0, Ysr=0;
for(i=0; i<n; i++)
{
Ysr+=a[J];
printf("a=%f/n",a[J]);
}
for(i=0; i<n; i++)
{
S+=pow(a[J]-Ysr,2);
}
return S/n;
void main()
{
int N;
int pI=0, pj=0;
float A[14][14];
float D1,D2;
printf("Vvedite razmernost matrici");
scanf("%d",&N);
if(N>14)N=14;
Vvod(A,N);
getch();
printf("\n");
Max(A, N, &pI, &pJ);
D1=Res1(&A[pI][0],N);
D2=Res2(A, N, pJ);
printf("\nmax=%3.2\n", A[pI][pJ]);
printf("\nD1=%3.2\n",D1);
printf("\nD2=%3.2\n",D2);
getch();
aObject.Vvod(float(*a)[14],int n);
aObject.Max(float(*a)[14],int n,int *I,int *j);
}
[C++ Error] matrix2.cpp(37): E2034 Cannot convert 'int' to 'int *'
[C++ Error] matrix2.cpp(40): E2451 Undefined symbol 'J'
[C++ Error] matrix2.cpp(40): E2034 Cannot convert 'int *' to 'int'
[C++ Error] matrix2.cpp(45): E2034 Cannot convert 'int *' to 'int'
[C++ Error] matrix2.cpp(51): E2333 Class member 'Matrix2::Res1(float *,int)' declared outside its class
[C++ Error] matrix2.cpp(51): E2316 'Matrix2::Res1(float *,int)' is not a member of 'Matrix2'
[C++ Error] matrix2.cpp(53): E2040 Declaration terminated incorrectly
Во-вторых, что значит выражение a[*I][*J],a[j]?
В-третьих, зачем у тебя во всех членах-функциях указано float(*a)[14]? Это что, какая-то внешняя матрица?
Matrix2 у тебя прототипы Res1 и Res2 возвращают значение float а в описании их - ничего не возвращается...
float Res1(float *a, int n);
float Res2(float(*a)[14],int n,int j);
void Matrix2::Res1(float *a, int n);
{
float S=0, Ysr=0;
for(i=0; i<n; i++)
{
Ysr+=a;
printf("a=%f\n",a);
}
for(i=0; i<n; i++)
{
S+=pow(a-Ysr,2);
}
printf("--------------\n");
return S/n;
}
void Matrix2::Res2(float(*a)[14],int n,int j)
{
float S=0, Ysr=0;
for(i=0; i<n; i++)
{
Ysr+=a[J];
printf("a=%f/n",a[J]);
}
for(i=0; i<n; i++)
{
S+=pow(a[J]-Ysr,2);
}
return S/n;
}
указатель на int в качестве индекса массива - тоже рулеззз... :)
удачи!
точка с запятой???
И вообще, если у тебя есть класс Matrix, почему он извращается с какой-то внешней матрицей, а не включает её в себя?
Цитата:
Originally posted by wanja
И вообще, если у тебя есть класс Matrix, почему он извращается с какой-то внешней матрицей, а не включает её в себя?
И вообще, если у тебя есть класс Matrix, почему он извращается с какой-то внешней матрицей, а не включает её в себя?
это, дружище, тактика программирования... а у коллеги проблемы с техникой... :)
хотя ты прав.
#include<conio.h>
#include<stdio.h>
#include<math.h>
class Matrix2
{
public:
void Vvod(float(*a)[14],int n);
void Max(float(*a)[14],int n,int *I,int *j);
float Res1(float *a, int n);
float Res2(float(*a)[14],int n,int j);
protected:
int i,j;
};
void Matrix2::Vvod(float(*a)[14],int n)
{
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
printf("A[%d][%d]=",i,j);
scanf("%f",&a[j]);
}
}
void Matrix2::Max(float(*a)[14],int n,int *I,int *J)
{
printf("\nMatritsa:\n");
for(int i=0; i<n; i++)
{
for(int j=0;j<n;j++)
{
if(a[*I][*J],a[j])
{
*I=i;
*J=j;
}
printf("%3.1f\t",a[j]);
}
printf("\n");
}
}
void Matrix2::Res1(int *a, int n)
{
float S=0, Ysr=0;
for(i=0; i<n; i++)
{
Ysr+=a;
printf("a=%f\n",a);
}
for9i=0; i<n; i++)
{
S+=pow(a-Ysr,2);
}
printf("--------------\n");
return S/n;
}
void Matrix2::Res2(int(*a)[14],int n,int j)
{
float S=0, Ysr=0;
for(int i=0; i<n; i++)
{
Ysr+=a[j];
printf("a=%f/n",a[J]);
}
for(int i=0; i<n; i++)
{
S+=pow(a[j]-Ysr,2);
}
return S/n;
}
void main()
{
int N;
int pI=0, pj=0;
float A[14][14];
float D1,D2;
printf("Vvedite razmernost matrici");
scanf("%d",&N);
if(N>14)N=14;
Vvod(A,N);
getch();
printf("\n");
Max(A, N, &pI, &pj);
D1=Res1(&A[pI][0],N);
D2=Res2(A, N, pj);
printf("\nmax=%3.2\n", A[pI][pj]);
printf("\nD1=%3.2\n",D1);
printf("\nD2=%3.2\n",D2);
getch();
aObject.Vvod(A,N);
aObject.Max(A);
}
[C++ Error] matrix2.cpp(53): E2316 'Matrix2::Res1(int *,int)' is not a member of 'Matrix2'
[C++ Error] matrix2.cpp(59): E2206 Illegal character '\' (0x5c)
[C++ Error] matrix2.cpp(65): E2206 Illegal character '\' (0x5c)
[C++ Error] matrix2.cpp(70): E2316 'Matrix2::Res2(int ( *)[14],int,int)' is not a member of 'Matrix2'
[C++ Error] matrix2.cpp(99): E2268 Call to undefined function 'Vvod'
[C++ Error] matrix2.cpp(105): E2268 Call to undefined function 'Max'
[C++ Error] matrix2.cpp(106): E2268 Call to undefined function 'Res1'
[C++ Error] matrix2.cpp(107): E2268 Call to undefined function 'Res2'
[C++ Error] matrix2.cpp(113): E2451 Undefined symbol 'aObject'
Цитата:
Originally posted by WD-40
[C++ Error] matrix2.cpp(53): E2316 'Matrix2::Res1(int *,int)' is not a member of 'Matrix2'
[C++ Error] matrix2.cpp(53): E2316 'Matrix2::Res1(int *,int)' is not a member of 'Matrix2'
В прототипе(в классе) написано float, а в реализации - int
Цитата:
[C++ Error] matrix2.cpp(59): E2206 Illegal character '\' (0x5c)
[C++ Error] matrix2.cpp(65): E2206 Illegal character '\' (0x5c)
Не знаю
Цитата:
[C++ Error] matrix2.cpp(70): E2316 'Matrix2::Res2(int ( *)[14],int,int)' is not a member of 'Matrix2'
В прототипе(в классе) написано float, а в реализации - int
Цитата:
[C++ Error] matrix2.cpp(99): E2268 Call to undefined function 'Vvod'
[C++ Error] matrix2.cpp(105): E2268 Call to undefined function 'Max'
[C++ Error] matrix2.cpp(106): E2268 Call to undefined function 'Res1'
[C++ Error] matrix2.cpp(107): E2268 Call to undefined function 'Res2'
Раз уж это члены-функции класса, их следует писать с именем объекта через точку.
И, кстати, где у тебя объявляется объект класса Matrix2?
Цитата:
[C++ Error] matrix2.cpp(113): E2451 Undefined symbol 'aObject'
А что такое aObject?
Цитата:
Originally posted by wanja
[C++ Error] matrix2.cpp(59): E2206 Illegal character '' (0x5c)
[C++ Error] matrix2.cpp(65): E2206 Illegal character '' (0x5c)
[C++ Error] matrix2.cpp(59): E2206 Illegal character '' (0x5c)
[C++ Error] matrix2.cpp(65): E2206 Illegal character '' (0x5c)
Это перепутал символы кодировки. Руской и английской. Не знаю только какой. Для примера очень часто путаются символы "c" и "c"