Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.05.2013, 12:07   #1
RG21
Пользователь
 
Регистрация: 17.04.2013
Сообщений: 15
Вопрос что за ошибка? и как исправить?

Язык С++. Даны два множества точек на плоскости. Выбрать три различные точки первого множества так, чтобы круг, ограниченный окружностью, проходящей через эти три точки, содержал все точки второго множества и имел минимальную площадь.

error C2664: Reset: невозможно преобразовать параметр 3 из "bool *" в "bool &"

Код:
#include <stdafx.h>
#include <iostream>
 
 #include <conio.h>
 #include <stdio.h>
 #include <math.h>
using namespace std;



 template<class T>
 T Reset(T massive1[2][3], T X[2], bool &opr)
 {
 int k,h,k1,h1;
 bool b=0;
 float A[2][3],Raz,elem,H=1,det,Sum;

 int n=2;

 for(k=0; k<n; k++)
 for(h=0; h<n+1; h++)
 A[k][h]=massive1[k][h];


 for(k=0; k<n-1; k++)
 {

 if(A[k][k]==0)
 {
 b=0;
 for(k1=k+1; k1<n; k1++)
 if(A[k1][k]!=0)
 {
 for(int kk=0; kk<n+1; kk++) // 1
 {
 elem = A[k1][kk];
 A[k1][kk]=A[k][kk];
 A[k][kk]=elem;
 }
 
 H=-H;
 b=1;
 break;
 }
 if(b==0)
 {k++; break;}
 }

 for(k1=k+1; k1<n; k1++)
 {
 Raz=A[k1][k]/A[k][k];

 for(h1=k; h1<n+1; h1++)
 A[k1][h1]-=Raz*A[k][h1];
 }

 }

 if(H==-1)
 {
 for(k=0; k<n; k++)
 for(h=0; h<n+1; h++)
 A[k][h]=-A[k][h];
 }

 det=1;
 for(k=0; k<n; k++)
 det*=A[k][k];

 
 if(det==0)
 {opr=false; }
 else
 {

 opr=true;

 X[n-1]=A[n-1][n]/A[n-1][n-1];

 for(k=n-2; k>=0; k--)
 {
 Sum=0;
 for(h=k+1; h<n; h++)
 Sum+= X[h]*A[k][h];

 X[k]=(A[k][n]-Sum)/A[k][k];

 }


 }

 return *X;
 }

 

 float Array(float mas[2][3], float x1, float y1, float x2, float y2, float x3, float y3)
 {

 mas[0][0]=2*x1+2*x2-2*2*x3;
 mas[1][0]=2*x1+2*x3-2*2*x2;

 mas[0][1]=2*y1+2*y2-2*2*y3;
 mas[1][1]=2*y1+2*y3-2*2*y2;

 mas[0][2]=x1*x1+x2*x2-2*x3*x3+y1*y1+y2*y2-2*y3*y3;
 mas[1][2]=x1*x1+x3*x3-2*x2*x2+y1*y1+y3*y3-2*y2*y2; 

 return **mas;
 }


 float Rad(float x0, float y0,float x1, float y1, float x2, float y2, float x3, float y3)
 {
 float R,ugl;

 if((x1==x0 && y1==y0)||(x2==x0 && y2==y0)||(x3==x0 && y3==y0))
 {R=0; return R;}

 else
 {
 if(x1!=x0)
 {
 ugl=atan((y1-y0)/(x1-x0));
 R=(x1-x0)/cos(ugl);
 return R;
 }

 if(x2!=x0)
 {
 ugl=atan((y2-y0)/(x2-x0));
 R=(x2-x0)/cos(ugl);
 return R;
 }

 if(x3!=x0)
 {
 ugl=atan((y3-y0)/(x3-x0));
 R=(x3-x0)/cos(ugl);
 return R;
 }

 }
 }


 void main()
 {
 int n=2,m,k,h;
 float m_1[2][3];
 float an_1[2];
 float **To,**Mn;
 float R;
 float x0,y0;
 float Total[9];
 int size=0,step=0;

 bool bb=0,b,opr=0;

 cout <<"Kolichestvo tochek na 1-om mnojestve \n\n n1=";
 cin>>n;
 cout <<"Kolichestvo tochek na 2-om mnojestve \n\n n2=";
 cin>>m;

 To=new float *[n];

 for(int k=0; k<n; k++)
 To[k]= new float [2];

 Mn=new float *[m]; 

 for(int k=0; k<m; k++)
 Mn[k]= new float [2];

 cout<<"\n\n";

 cout<<"\n\n 1-oe mnojestvo\n\n";
 for(int k=0; k<n; k++)
 {
 cout<<"X"<<k+1<<"=";
 cin>>To[k][0];
 cout<<"Y"<<k+1<<"=";
 cin>>To[k][1];
 }

 cout<<"\n\n 2-oe mnojestvo\n\n";
 for(int k=0; k<m; k++)
 {
 cout<<"X"<<k+1<<"=";
 cin>>Mn[k][0];
 cout<<"Y"<<k+1<<"=";
 cin>>Mn[k][1];
 }


 float Otv[3];
 float r,x1,y1,x2,y2,x3,y3;

 for(int k1=0; k1<n-2; k1++)
 for(int k2=k1+1; k2<n-1; k2++)
 for(int k3=k2+1; k3<n; k3++)
 {

 x1=To[k1][0];
 x2=To[k2][0];
 x3=To[k3][0];

 y1=To[k1][1];
 y2=To[k2][1];
 y3=To[k3][1];

 Array(m_1,x1,y1,x2,y2,x3,y3);
 Reset<float>(m_1,an_1,&bb);

 x0=an_1[0];
 y0=an_1[1];
 R=Rad(x0, y0,x1, y1, x2, y2, x3, y3);

 b=1;

 for( int k=0; k<m; k++)
 {
 r=sqrt((Mn[k][0]-x0)*(Mn[k][0]-x0)+(Mn[k][1]-y0)*(Mn[k][1]-y0));

 if(r>R)
 {b=0; break;}
 }

 if(b)
 { opr=1;
 if(step==0)
 {
 Total[0]=R;
 Total[1]=x0;
 Total[2]=y0;
 Total[3]=x1;
 Total[4]=y1;
 Total[5]=x2;
 Total[6]=y2;
 Total[7]=x3;
 Total[8]=y3;
 step++;
 }
 else
 {
 if(Total[0]>R)
 {
 Total[0]=R;
 Total[1]=x0;
 Total[2]=y0;
 Total[3]=x1;
 Total[4]=y1;
 Total[5]=x2;
 Total[6]=y2;
 Total[7]=x3;
 Total[8]=y3;
 }
 }
 }

 } 

 if(step==0)
 cout<<"Takaya okrujnost ne suwestvuet";

 else
 {

 cout<<endl;
 cout<<"x0="<<Total[1]<<endl;
 cout<<"y0="<<Total[2]<<endl;
 cout<<"R="<<Total[0]<<endl;

 cout<<"\n\n\n Udv. toch.\n\n";

 cout<<"("<<Total[3]<<","<<Total[4]<<")\n";
 cout<<"("<<Total[5]<<","<<Total[6]<<")\n";
 cout<<"("<<Total[7]<<","<<Total[8]<<")\n";

 }
 getch();
 return ;
 }

Последний раз редактировалось Stilet; 17.05.2013 в 12:11.
RG21 вне форума Ответить с цитированием
Старый 17.05.2013, 12:22   #2
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
error C2664: Reset: невозможно преобразовать параметр 3 из "bool *" в "bool &"
А что непонятно? Вы передаёте в функцию адрес переменной, типа bool*, а функция ожидает ссылку на переменную, bool&. Судя по использованию opr в функции, неправильно первое: вызывайте Reset<float>(m_1, an_1, bb);

Это сообщение касается только описанной ошибки.
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Графика в Delphi, как исправить или что дописать Марина 666 Помощь студентам 0 16.12.2011 00:10
Ошибка в программе, как исправить? GoldSteals Свободное общение 5 15.04.2011 13:30
ошибка компилятора как исправить mato Visual C++ 5 10.04.2011 16:11
кто знает что это такое и как исправить? Yury111 Безопасность, Шифрование 4 17.06.2009 08:59
Что значит ошибка и как исправить? Pirotexnik Общие вопросы Delphi 2 26.03.2009 19:52