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

Gostaria de pedir ajuda em um programa simples em c

Discussão em 'Programação' iniciada por mateus05, 29 de Março de 2013. (Respostas: 1; Visualizações: 694)

  1. este programa esta dando erro de execuçao e nao sei o motivo segue abaixo o codigo comentado.
    Código:
    #include <stdio.h>#include <stdlib.h>
    #include <time.h>
    #define n 10
    void geracor(char senha[4]);//funçao que gera as cores aleatorias.
    int verifica(char **matriz,char vetor[4],int *cont);//funçao que recebe as cores inseridas pelo usuario, verifica se esta correto e imprime o resultado.
    int main()
    {
    	int opcao=0,i,cont=0,resul;
    	char **matriz, senha[4];
    	matriz=(char**) calloc(10,sizeof(char*));
    	for(i=1;i<10;i++)
    	{
    		matriz[i]=(char*) calloc(5,sizeof(char));
    	}
    	while(opcao!=1)//verifica se o usuario quer começar a jogar.
    	{
    		printf("jogar digite 1\n encerrar digite0\n ajuda digite 3\n");
    		scanf("%d", &opcao);
    		if(opcao==3)
    			printf("Senha é	um	 famoso	jogo	de	 tabuleiro,	inventado	em	'1971',	em	que	o objetivo é descobrir	a	combinação	secreta	dos	pinos	coloridos.'1.' No	 início	 'do'	 jogo,	há	combinação	 secreta	 de	 '4'	 pinos	 selecionados	 de	 um conjunto	de	'6'	pinos	de	cores	diferentes,	exceto	preto	e	branco;			'2.' Uma	 jogada	 consiste	 em	 tentar	 adivinhar	 a	 combinação	 secreta,selecionando	'4'	pinos	de	cores	diferentes	e	inserindo-os	em	uma	das	linhasde	buracos	'do'	tabuleiro;'3.' A	cada	jogada,	são	dadas	dicas	sobre	a	composição	da	combinação	secreta;'4.' Se,	 dentro	 'do'	 limite	 de	 '10'	 tentativas	 o	 jogador	 acertar	 a	 combinação,	 ojogo	acaba	com	um	vencedor;'5.' Caso	contrário,	o	jogo	termina	com	um	perdedor	e	a	combinação	secreta	érevelada.\n");
    		else if(opcao==0)
    			return 0;
    	}	
    	geracor(senha);
    	for(i=0;i<4;i++)
    		printf("%c\n", senha[i]);
        printf("Para a cor verde digite: v';'\n Para a cor roxa digite: r; \n");
        for(i=0; i<n; i++)
        {
    		printf("insira a senha separada por espaços.\n");
            scanf("%c %c %c %c", &matriz[cont][0], &matriz[cont][1], &matriz[cont][2], &matriz[cont][3]);
    		scanf("%*c");
            resul=verifica(matriz,senha,&cont);
            cont++;
            if(resul==1)
    		{
                printf("voce venceu.\n");
                return 0;
            }
    	}	
    	printf("voce perdeu.\n");//quando o usuario faz 10 tentativas o jogo e encerrado anunciando a derrota do usuario.
    	for(i=0;i<10;i++)
    	{
    		if(matriz[i]!=NULL)
    			free(matriz[i]);
    	}
    	if(matriz!=NULL)
    		free(matriz);
        return 0;
    }
    void geracor(char *senha)
    {
    	srand(time(NULL));
        int aux=-1,i,j,cont;
        senha[0]=(rand()%6);
    	for(i=0;i<4;i++)
    	{
    		cont=0;
    		aux=(rand()%6);
    		for(j=0;j<i;j++)
    		{
    			if(senha[j]==aux)
    				cont+=1;	
    		}	
    		if(cont==0)
    			senha[i]=aux;
    		else
    			i--;
    	}
        for(i=0; i<4; i++)
        {
            switch(senha[i])
            {
                case 0: senha[i]='a';
                    break;
                case 1: senha[i]='l';
                    break;
                case 2: senha[i]='r';
                    break;
                case 3: senha[i]='v';
                    break;
                case 4: senha[i]='m';
                    break;
                case 5: senha[i]='c';
                    break;
            }
        }
    }
    int verifica(char **matriz,char vetor[4],int *cont)
    {
        int i,j,x=0;
    	char vpb[4];
    	for (i=0;i<4;i++)
    		printf("%c", matriz[*cont][i]);
        for(i=0;i<4;i++)//laço que verifica se o usuario acertou a cor e sua determinada posicao.
        {
            if(matriz[*cont][i]==vetor[i-1])
    			vpb[i]='p';
    		else 
    			vpb[i]=' ';
        }
    	for(i=0;i<4;i++)//laço que verifica se o usuario acertou a cor e nao a posiçao.
    	{
    		for(j=0;j<4;j++)
    		{
    			if(matriz[*cont][i]==vetor[j]&&vpb[i]==' ')
    			{
    						vpb[i]='b';
    			}
    		}
    	}
    	for(i=0;i<4;i++)
    	{
    		printf("%c", vpb[i]);
    	}
    	for(i=0;i<4;i++)
    	{
    		if(vpb[i]=='p')
    			x++;
    	}
    	if(x==4)
    		return 1;
    	return 2;
    }	
     
  2. dagas46

    dagas46 Power Member

    Qual é o erro?
     

Partilhar esta Página