Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] невозможно преобразовать 'int (__cdecl *)(void)' в 'int' (http://forum.oszone.net/showthread.php?t=178377)

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

невозможно преобразовать 'int (__cdecl *)(void)' в 'int'
 
вот код:
Код:


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

#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 1435966

while(step=RandomStep())

котвася 19-06-2010 23:49 1437655

и еще вопрос:
что изменить в функции RandomStep() чтоб она генерировала число согласно таблицы ASCII

котвася 20-06-2010 00:05 1437662

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

ganselo 21-06-2010 18:14 1438809

Код:

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



Время: 16:47.

Время: 16:47.
© OSzone.net 2001-