Jump to content
Fórum Script Brasil
  • 0

(RESOLVIDO)xxx.EXE parou de funcionar--- stdlib.h > atoi()


Araki

Question

Por favor, podem me mandar e-mail se quiserem, agredeço desde já.

[EDIT] A Imagem do erro:1hiSP.jpg

#include <stdio.h>
#include <stdlib.h>


char tabuleiro[2][2];

void deseja();
void limpar_tabuleiro(){
    int il,ic;
    fflush(stdin);
    for(il=0;il<3;il++){
        for(ic=0;ic<3;ic++){
            tabuleiro[il][ic]='#';
        }
    }

}
void escrever_tabuleiro(){

    system("cls");
    printf("\n       1  2  3\n");
    printf("\n    1  %c| %c |%c ",tabuleiro[0][0],tabuleiro[0][1],tabuleiro[0][2]);
    printf("\n      --|---|--");
   // printf("\n    |   |  ");
    printf("\n    2  %c| %c |%c ",tabuleiro[1][0],tabuleiro[1][1],tabuleiro[1][2]);
    printf("\n      --|---|--");
    printf("\n    3  %c| %c |%c\n\n\n",tabuleiro[2][0],tabuleiro[2][1],tabuleiro[2][2]);
}

int checar_jogada(char jogador){
if( tabuleiro[0][0]==jogador && tabuleiro[0][1]==jogador && tabuleiro[0][2]==jogador ||
    tabuleiro[1][0]==jogador && tabuleiro[1][1]==jogador && tabuleiro[1][2]==jogador ||
    tabuleiro[2][0]==jogador && tabuleiro[2][1]==jogador && tabuleiro[2][2]==jogador ||

    tabuleiro[0][0]==jogador && tabuleiro[1][0]==jogador && tabuleiro[2][0]==jogador ||
    tabuleiro[0][1]==jogador && tabuleiro[1][1]==jogador && tabuleiro[2][1]==jogador ||
    tabuleiro[0][2]==jogador && tabuleiro[1][2]==jogador && tabuleiro[2][2]==jogador ||

    tabuleiro[0][0]==jogador && tabuleiro[1][1]==jogador && tabuleiro[2][2]==jogador ||
    tabuleiro[2][0]==jogador && tabuleiro[1][1]==jogador && tabuleiro[0][2]==jogador)

    {
        return(1);
    }else{
        return(0);
    }
}

char trocar_jogador(char jogador){
    if(jogador=='X'){
        fflush(stdin);
        return ('O');
    }else{
        fflush(stdin);
        return ('X');
    }
}

void computar_jogada(char jogador, char jogada[2]){
        int linha, coluna;
        linha=atoi(jogada[0]);
        coluna=atoi(jogada[2]);
        tabuleiro[linha][coluna]=jogador;
}

int realizar_jogada(char jogador){
    char marcar[2];
    escrever_tabuleiro();
    printf("Vez do jogador ' %c '\n",jogador);
    printf("Digite onde deseja marcar %c:\n",jogador);
    scanf("%s",&marcar);

    computar_jogada(jogador,marcar);
    if(checar_jogada(jogador)==0){
        escrever_tabuleiro();
        return (0);
    }else{
        printf("O jogador %c VENCEU!",jogador);
        return(1);
    }
}

void comecar_jogo(){
    char jogador;
    do{
    jogador='X';
    jogador=trocar_jogador(jogador);
    realizar_jogada(jogador);
    }while(realizar_jogada(jogador)==0);
    deseja();
}

void deseja(){
    char escolha;
    printf("Deseja iniciar um novo jogo? 's' ou 'n'?\n");
    scanf("%c",&escolha);
    switch(escolha){
        case's':
                system("cls");
                limpar_tabuleiro();
                comecar_jogo();
                fflush(stdin);
        case 'n':
            exit(0);
            fflush(stdin);
        default:
            fflush(stdin);
            deseja();
    }
}


main(){
    system("title JOGO DA VELHA");
    system("color 0a");
    printf("\n                      Bem Vindo ao Jogo da Velha!\n\n");
    printf("\n  Os comandos são simples: Deve se digitar a linha e a coluna separador por 1 caractere qualquer ex.'espaço'");
    printf("\n  Por exemplo: o Jogador O digita '2 2'");
    printf("\n  Com isso 'O' sera marcada na 'casa do meio';\n\n");
    deseja();
}

Edited by Durub
Adicionar tags code [Durub]
Link to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 0

Aos que também tem esse problema eis a solução(apesar de ter alguns erros de lógica no programa):

Eis a sintaxe que causava crush

deve se usar

atoi(&jogada[0]), ao invés de atoi(jogada[0]);

Link to comment
Share on other sites

  • 0

Olha galera, isso foi um mini-projeto em sala de aula, MUDEI MUITO antes de entregar, assim que o prazo de entrega acabar(para evitar roubo por colegas) eu posto o novo código aqui. ok Obrigado.

Galera, isso foi um mini-projeto em sala de aula... 1º Período.

Alterei o meu código antes de entregar e ficou, muito, mas muito diferente.

Assim que o prazo de entrega se esgotar(para evitar plágio de colegas de sala <_< )

to ADMIN:

Desculpe por não fazer a edição correta dos posts, sou iniciante por aqui. Mas pretendo ser bem mais presente para aprender e ajudar com/os Programadores.

A propósito, para postar o novo código devo abrir um outro post e linkar com este?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152k
    • Total Posts
      651.5k
×
×
  • Create New...