PDA

Показать полную графическую версию : [решено] невозможно преобразовать 'int (__cdecl *)(void)' в 'int'


котвася
17-06-2010, 00:53
вот код:

//----------------------------------------------------------------------

#include <iostream>

//----------------------------------------------------------------------

void Step(int&,int&, int);
void travelHorse(int [8][8],int,int,int&);
void printArray(int [8][8]);
int RandomStep(void);

int main()
{
setlocale(LC_ALL,"rus");
int arr[8][8]={{0,0}};
int horizontal=0;
int vertical=0;
int step;
int clock=0;
while(step=RandomStep)
{
if(step==10)
continue;
system("cls");
Step(horizontal, vertical, step);
travelHorse(arr,horizontal,vertical,clock);
printArray(arr);
std::cout<<clock<<std::endl;
}
system("pause");
return 0;
}

//----------------------------------------------------------------------

int RandomStep(void)
{
return rand()%7;
}

//----------------------------------------------------------------------

void Step(int &horizontal, int &vertical, int step)
{
switch(step)
{
case '0':
horizontal=2;
vertical=-1;
break;
case '1':
horizontal=1;
vertical=-2;
break;
case '2':
horizontal=-1;
vertical=-2;
break;
case '3':
horizontal=-2;
vertical=-1;
break;
case '4':
horizontal=-2;
vertical=1;
break;
case '5':
horizontal=-1;
vertical=2;
break;
case '6':
horizontal=1;
vertical=2;
break;
case '7':
horizontal=2;
vertical=1;
break;
default:
break;
}
}

//----------------------------------------------------------

void printArray(int arr[8][8])
{
for(int t=0; t<=9; t++)
std::cout<<"-";
std::cout<<std::endl;
for(int i=0; i<=7; i++)
{
std::cout<<"|";
for(int j=0; j<=7;j++)
std::cout<<arr[i][j];
std::cout<<"|";
std::cout<<std::endl;
}
for(int t=0; t<=9; t++)
std::cout<<"-";
std::cout<<std::endl;
}

//---------------------------------------------------------

void travelHorse(int arr[8][8], int horizontal, int vertical, int &clock)
{
static int horizontalPoint=0;
static int verticalPoint=0;
arr[horizontalPoint][verticalPoint]=0;
horizontalPoint+=horizontal;
verticalPoint+=vertical;
if((verticalPoint<0) || (verticalPoint>7) || (horizontalPoint<0) || (horizontalPoint>7))
{
std::cout<<"ОШИБОЧНЫЙ ВВОД"<<std::endl;
horizontalPoint-=horizontal;
verticalPoint-=vertical;
return;
}
arr[verticalPoint][horizontalPoint]=1;
clock++;
return;
}

//---------------------------------------------------------


1>c:\$p\mvs\{как программировать на с++}\путешествие_коня\путешествие_коня\unit.cpp(20) : error C2440: =: невозможно преобразовать 'int (__cdecl *)(void)' в 'int'
помогите разобратся

ganselo
17-06-2010, 12:34
while(step=RandomStep())

котвася
19-06-2010, 23:49
и еще вопрос:
что изменить в функции RandomStep() чтоб она генерировала число согласно таблицы ASCII

котвася
20-06-2010, 00:05
может я не правильно выразился,
если я для задания step использую cin.get() и ввожу 7 то step=55, то есть на 48 больше.
А если использую RandomStep() то оно есть какое есть. Просто прибавить 48 это не профессионально.
Есть ли другой способ?

ganselo
21-06-2010, 18:14
int RandomStep(void)
{
return '0' + rand()%7;
}




© OSzone.net 2001-2012