Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ООП

4.8K
26 марта 2004 года
WD-40
16 / / 21.02.2004
Почему выпадают такие ошибки я что то не пойму задача переделать под ООП

Найти дисперсию элементов векторов строки и столбца, пересекающихся на максимальном элементе квадратной матрицы. Размерность матрицы не более чем 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
247
29 марта 2004 года
wanja
1.2K / / 03.02.2003
Во-первых, где ты выделяешь склероз под матрицу?
Во-вторых, что значит выражение a[*I][*J],a[j]?
В-третьих, зачем у тебя во всех членах-функциях указано float(*a)[14]? Это что, какая-то внешняя матрица?
2
29 марта 2004 года
squirL
5.6K / / 13.08.2003
все от невнимательности, дружище :) например: в классе

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 в качестве индекса массива - тоже рулеззз... :)
удачи!
2
29 марта 2004 года
squirL
5.6K / / 13.08.2003
да вот еще... зачем у тебя после Matrix2::Res1()
точка с запятой???
247
29 марта 2004 года
wanja
1.2K / / 03.02.2003
И вообще, если у тебя есть класс Matrix, почему он извращается с какой-то внешней матрицей, а не включает её в себя?
2
29 марта 2004 года
squirL
5.6K / / 13.08.2003
Цитата:
Originally posted by wanja
И вообще, если у тебя есть класс Matrix, почему он извращается с какой-то внешней матрицей, а не включает её в себя?



это, дружище, тактика программирования... а у коллеги проблемы с техникой... :)

хотя ты прав.

4.8K
29 марта 2004 года
WD-40
16 / / 21.02.2004
Да на счёт того что у меня плохо с техникой не то слово это просто институтская Лаба ну вот а С++ начал учить месяц назад а сдавать то надо вот я тут кое что переправил не ошибок ещё больше стало если не затруднит поправьте меня а то скоро сдавать а я плохо представляю из-за чего вылетает стока ошибок заранее спасибо.

#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'
247
30 марта 2004 года
wanja
1.2K / / 03.02.2003
Цитата:
Originally posted by WD-40

[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?

5.8K
31 марта 2004 года
Digi
15 / / 25.03.2004
Цитата:
Originally posted by wanja

[C++ Error] matrix2.cpp(59): E2206 Illegal character '' (0x5c)
[C++ Error] matrix2.cpp(65): E2206 Illegal character '' (0x5c)


Это перепутал символы кодировки. Руской и английской. Не знаю только какой. Для примера очень часто путаются символы "c" и "c"

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог