1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

problema em programa(urgente)!!!

Discussão em 'Programação' iniciada por ricardomarioper, 19 de Janeiro de 2009. (Respostas: 8; Visualizações: 552)

  1. ricardomarioper

    ricardomarioper Power Member

    boas...tenho um programa que me esta a dar um problema....algum me pode ajudar????è bastante urgente...
     
  2. Baderous

    Baderous Banido

    Se colocasses a dúvida era mais fácil responder.
     
  3. ricardomarioper

    ricardomarioper Power Member

    opah
    o codigo é bue grande...nao da pra te mandar o programa ou assim??
     
  4. Baderous

    Baderous Banido

    Mete aqui a parte que está a dar erro que o povo vê.
     
  5. ricardomarioper

    ricardomarioper Power Member

    opah..o programa é gigante...tem 800 linhas de comando
     
  6. Baderous

    Baderous Banido

    Mas mete aqui a parte que está a dar erro. Ou não sabes qual é essa parte? Ou destrocaste assim 800 linhas duma vez só à patrão e lembraste-te no fim que podia dar erro?
     
  7. ricardomarioper

    ricardomarioper Power Member

    o erro é:nova_posicao identifier not found
    numa linha que é: aux=nova_posicao(a,b,m,&x,&y);


    Código:
    void deslocarB(){
        int x,y,aux,v=1,ptotalB=0,contador=0,a,b;
        int m[8];
        bool VF=false;
     
        ptotalB=peixesB;
    do{
            a=rand() % xx;
            b=rand() % yy;
     
                //procura peixe B e que ainda n se tenha mexido
                if(aquario[a][b].mov==false && aquario[a][b].icon==symbolB){
                    v=1;
                    contador++;
                    if(aquario[a][b].num_parado==nparB){
                        //se o peixe ja n se mexer N_vezes_parado_B o peixe MORRE
                        aquario[a][b].icon=espacovazio;
                        aquario[a][b].status=false;
                        aquario[a][b].num_mov = 0;
                        aquario[a][b].num_parado = 0;
                        peixesB--;
                        v=0;
                    }else{
                        if(aquario[a][b].num_mov>=nmovsB){
                            VF=false;
                            aux=9;
                            do{
                                x=a;
                                y=b;
                                aux--;
     
                                switch(aux){
                                        case 1: 
                                            x--;
                                            y--;
                                            break;
     
                                        case 2: 
                                            y--;
                                            break;
     
                                        case 3: 
                                            x++;
                                            y--;
                                            break;
     
                                        case 4: 
                                            x--;
                                            break;
     
                                        case 5: 
                                            x++;
                                            break;
     
                                        case 6: 
                                            x--;
                                            y++;
                                            break;
     
                                        case 7: 
                                            y++;
                                            break;
     
                                        case 8: 
                                            x++;
                                            y++;
                                            break;
                                }
                                if(aquario[x][y].icon == symbolB && aux !=0 ){// verifica se pode criar 1 filho, tem de se ter movimentado N_movimentos_A vezes
                                    VF=true;
                                    v=1;
                                }
                                else{
                                    if(aux==0){
                                        VF=true;
                                        v=0;
                                    }
                                }
                            }while(VF==false);
                        }
                        if(v==0){
                            VF=false;
                            for(int x=0; x<8; x++){
                                m[x]=0;
                            }
                            do{
                                aux=gerir_pos(a,b,m,&x,&y);
                                if(aquario[x][y].icon == symbolA || aquario[x][y].icon == ' ' && m!=0){//cria 1 filho
                                    if(aquario[x][y].icon == symbolA){
                                        peixesA--;
                                    }
                                    aquario[x][y].icon=symbolB;
                                    //gotoxy(x,y);printf("%c",aquario[x][y].imagem);
                                    aquario[x][y].status=true;
                                    aquario[x][y].num_mov=0;
                                    aquario[x][y].num_parado=0;
                                    aquario[a][b].num_mov=0;
                                    aquario[x][y].mov=true;
                                    aquario[a][b].mov=true;
                                    //getch();
                                    peixesB++;
                                    VF=true;
                                    v=0;
                                }
                                else{
                                    if(aux==0){
                                        v=1;
                                        VF=true;
                                    }
                                }
                            }while(VF==false);
                        }
                        if(v==1){
                            VF=false;
                            //se nao tenta-se mexer
                            for(int x=0; x<8; x++){
                                m[x]=0;
                            }
                            do{
                                aux=gerir_pos(a,b,m,&x,&y);
                                if(aquario[x][y].icon==symbolA && aux!=0){//come B
                                    aquario[a][b].icon=espacovazio;
                                    //gotoxy(a,b);printf("%c",aquario[a][b].imagem);
                                    aquario[a][b].status=false;
                                    aquario[x][y].num_mov=aquario[a][b].num_mov;
                                    aquario[a][b].num_mov=0;
                                    aquario[a][b].num_parado=0;
                                    aquario[a][b].mov=false;
                                    aquario[x][y].icon=symbolB;
                                    //gotoxy(x,y);printf("%c",aquario[x][y].imagem);
                                    aquario[x][y].status=true;
                                    aquario[x][y].mov=true;
                                    aquario[x][y].num_mov++;
                                    aquario[x][y].num_parado=0; 
                                    peixesA--;
                                    VF=true;
                                }else{
                                    //se n encontrar nenhum peixe A faz isto
                                    if(aux==0){
                                        VF=false;
                                        for(int x=0; x<8; x++){
                                            m[x]=0;
                                        }
                                        do{
                                            aux=nova_posicao(a,b,m,&x,&y);
                                            if(aquario[x][y].status==false && aux!=0){//se a casa vazia
                                                aquario[a][b].icon=espacovazio;
                                                //gotoxy(a,b);printf("%c",aquario[a][b].imagem);
                                                aquario[a][b].status=false;
                                                aquario[x][y].num_mov = aquario[a][b].num_mov;
                                                aquario[x][y].num_parado = aquario[a][b].num_parado;
                                                aquario[a][b].num_mov=0;
                                                aquario[a][b].num_parado=0;
                                                aquario[x][y].icon=symbolB;
                                                //gotoxy(x,y);printf("%c",aquario[x][y].imagem);
                                                aquario[x][y].status=true;
                                                aquario[x][y].mov=true;
                                                VF=true; 
                                                aquario[x][y].num_parado++; 
                                            }else{
                                                if(aux==0){//se o peixe ja se tiver tentado mover em todas as direccoes e n tiver conceguido, fica a espera "aquario[a][b].N_vezes_parado++;"
                                                    //n encontra casas vazia e fica a espera
                                                    aquario[a][b].num_parado++; 
                                                    aquario[a][b].mov=true;
                                                    VF=true; 
                                                }
                                            }
                                        }while(VF==false);
                                    }
                                }
                            }while(VF==false);
                        }
                    }
                }
    }
                while(contador!=ptotalB);
        back();
    }
    
     
    Última edição pelo moderador: 20 de Janeiro de 2009
  8. Baderous

    Baderous Banido

    Estás a invocar a função nova_posicao e não a definiste ou então definiste-a depois da main e não colocaste o seu header antes da main.
     
  9. ricardomarioper

    ricardomarioper Power Member

    obrigado
    olha agora tenho outro erro....lol

    com este código os "peixitos" deveriam mover-se,mas ficam parados....
    tens ideia do porque????

    Código:
    void deslocarA(){
        int x,y,aux,ptotalA=0,contador=0,a,b;
        bool VF=false;
     
        ptotalA=peixesA;
    do{
            a=rand() % xx;
            b=rand() % yy;
     
                //procura peixe A e que ainda n se tenha mexido
                if(aquario[a][b].mov==false && aquario[a][b].icon==symbolA){
                    contador++;
     
                    if(aquario[a][b].num_parado==nparA){
                        //se o peixe ja n se mexer N_vezes_parado_A o peixe MORRE
                        aquario[a][b].icon=espacovazio;
                        aquario[a][b].status=false;
                        aquario[a][b].num_mov = 0;
                        aquario[a][b].num_parado = 0;
                        peixesA--;
                    }else{
                        int m[8];
                        //coloca o vector m a 0
                        for(int x=0; x<8; x++){
                            m[x]=0;
                        }
                        VF=false;
                        //este siclo vai ser feito te o peixe A se reproduzir ou se mover ou ficar parado
                        do{
                            aux=gerir_pos(a,b,m,&x,&y);
                            //descobre 1 espaço livre
                            if(aquario[x][y].status==false && aux!=0){//se a casa tiver vazia
                                if(aquario[a][b].num_mov==nmovsA){// verifica se pode criar 1 filho, cria filho
                                    aquario[x][y].icon=symbolA;
                                    aquario[x][y].status=true;
                                    aquario[x][y].num_mov=0;
                                    aquario[x][y].num_parado=0;
                                    aquario[a][b].num_mov=0;
                                    aquario[x][y].mov=true;
                                    aquario[a][b].mov=true;
                                    peixesA++;
                                }else{
                                    //se nao movimenta-se para a nova casa
                                    aquario[a][b].icon=espacovazio;
                                    aquario[a][b].status=false;
                                    aquario[a][b].mov=false;
                                    aquario[x][y].num_mov = aquario[a][b].num_mov;
                                    aquario[x][y].num_parado = aquario[a][b].num_parado;
                                    aquario[a][b].num_mov=0;
                                    aquario[a][b].num_parado=0;
                                    aquario[x][y].icon=symbolA;
                                    aquario[x][y].status=true;
                                    aquario[x][y].mov=true;
                                    aquario[x][y].num_mov++;
                                }
                                VF=true;
                            }else{
                                if(aux==0){
                                    //n encontra casas vazia e fica a espera
                                    aquario[a][b].num_parado++; 
                                    aquario[a][b].num_mov=0;
                                    aquario[a][b].mov=true;
                                    VF=true; 
                                }
                            }
                        }while(VF==false);
                    }
                }
    }
                while(contador!=ptotalA);
                //coloca a variavel movimento a false em toda a estrotura
        back();
    
     
    Última edição pelo moderador: 20 de Janeiro de 2009

Partilhar esta Página