Ir ao conteúdo
  • Cadastre-se

Relry

Membro Pleno
  • Posts

    21
  • Cadastrado em

  • Última visita

posts postados por Relry

  1. @RiXaRd simples cara, o seu unico erro foi ter colocado a atribuição no lugar onde era pra ser uma comparação, veja
     

    if (tabuleiro[linha--][coluna--]=' ')
       	{
       		v[linha--][coluna--]='.';
    	}

     

    eu nem tinha reparado, mas o certo é

    if (tabuleiro[linha--][coluna--] == ' ')
       	{
       		v[linha--][coluna--]='.';
    	}

    com 2(dois) = (iguais)

    adicionado 28 minutos depois

    @RiXaRd eu cheguei a modificar um pouco seu codigo, caso queira aproveitar alguma coisa esta ai

    #include<stdio.h>
    #include<stdlib.h>
    
    //----------------------------DEFINIÇÕES--------------------------------------//
    #define MAX_LINHA 16
    #define MAX_COLUNA 16
    #define MAX_JOGADAS 75
    
    
    //----------------------------DECLARACOES GLOBAIS-----------------------------//
    char v[MAX_LINHA][MAX_COLUNA], tabuleiro[MAX_LINHA][MAX_COLUNA];
    int lin,col,jogarDeNovo, x = 0, linha, coluna, opcao, y, contador;
    //----------------------------------------------------------------------------//
    
    //----------------------------CABEÇALHO DAS FUNÇÕES--------------------------//
    
    void carregarJogo();
    void inicio();
    void escolha_mapa();
    
    
    
    //----------------------------------------------------------------------------//
    //Funcao principal do programa
    
    int main()
    {
    
    	int  opcao,l,c,contador;
        char resp = 'N';
    
    
    	carregarJogo(); //executa uma vez a cada rodada, preenchendo todas as posições com espaco em branco ( ' ' )
        escolha_mapa();
    
    	system ("cls");
        inicio();
    
        system("cls");
        inicio();
    
    }
    
    //----------------------------------------------------------------------------//
    //essa funcao faz a matriz ficar com o estilo do mapa, e também preenche com %c, para que o valor possa ser inserido no mapa
    void inicio()
    {
    	for (contador=MAX_JOGADAS; contador>0; contador--)
    	{
    
            printf("     ");
            for(int x = 0; x < MAX_COLUNA; x++){
                printf("C%02d ", x+1);
            }
            printf("\n");
    
            for (linha = 0; linha < MAX_LINHA; linha++)
            {
                printf("L%02d |", linha+1);
                for (int colV = 0; colV < MAX_COLUNA; colV++){
                    printf(" %c |", v[linha][colV]);
                }
                printf("\n");
                //printf("L%02d | %c | %c | %c | %c | %c | %c | %c | %c | %c | %c | %c | %c | %c | %c | %c |\n", linha+1,v[linha][0], v[linha][1],v[linha][2],v[linha][3],v[linha][4],v[linha][5],v[linha][6],v[linha][7],v[linha][8],v[linha][9],v[linha][10],v[linha][11],v[linha][12],v[linha][13],v[linha][14],v[linha][15]);
            }
            /*
            for ( ; linha < 15; linha++)
            {
                printf("L%d| %c | %c | %c | %c | %c | %c | %c | %c | %c | %c | %c | %c | %c | %c | %c |\n", linha+1, v[linha][0], v[linha][1],v[linha][2],v[linha][3],v[linha][4],v[linha][5],v[linha][6],v[linha][7],v[linha][8],v[linha][9],v[linha][10],v[linha][11],v[linha][12],v[linha][13],v[linha][14],v[linha][15]);
            }//*/
    
            printf("Jogadas Restantes: %d\n", contador);
            printf("Digite as coordenadas: ");
            scanf("%d %d",&linha,&coluna);
            if (tabuleiro[linha-1][coluna-1]==' ')
            {
                v[linha-1][coluna-1]='.';
            }
            else
            {
                v[linha-1][coluna-1]=tabuleiro[linha-1][coluna-1];
            }
    	}
    }
    
    //----------------------------------------------------------------------------//
    // inicializa a matriz com espaço em branco ( ' ' ).
    
    void carregarJogo()
      {
    
        int lin, col;
        for(lin = 0; lin < MAX_LINHA ; lin++)
        {
    		    for(col = 0 ; col < MAX_COLUNA ; col++)
    		    {
                        v[lin][col] = ' ' ;
                        tabuleiro[lin][col] = ' ' ;
                }
    	}
    }
    
    //------------------------------------------------------------------------------//
    //funcao usada para escolher o mapa quando o jogo inicia
    
    void escolha_mapa()
    {
    	int y;
    	printf("Escolha o mapa que deseja jogar:\n\nDigite 1 para Mar;\n       2 para Lagoa;\n       3 para Rio;\n");
    	scanf("%d",&opcao);
    
    	fflush (stdin);
    
    
    	switch (opcao)
    	{
    		case 1:
    
    			//porta aviao
    			tabuleiro[9][2]='p'; tabuleiro[9][3]='p'; tabuleiro[9][4]='p'; tabuleiro[9][5]='p'; tabuleiro[9][6]='p';
    			//hidroaviao
    			tabuleiro[5][1]='h'; tabuleiro[4][2]='h'; tabuleiro[5][3]='h';
    			tabuleiro[7][1]='h'; tabuleiro[6][2]='h'; tabuleiro[7][3]='h';
    			tabuleiro[15][9]='h'; tabuleiro[14][10]='h'; tabuleiro[15][11]='h';
    			//cruzador
    			tabuleiro[14][10]='c'; tabuleiro[14][11]='c';
    			tabuleiro[3][8]='c';  tabuleiro[3][9]='c';
    			tabuleiro[8][8]='c'; tabuleiro[8][9]='c';
    			//encouracado
    			tabuleiro[1][9]='e'; tabuleiro[1][10]='e'; tabuleiro[1][11]='e'; tabuleiro[1][12]='e';
    			tabuleiro[4][3]='e'; tabuleiro[4][4]='e'; tabuleiro[4][5]='e'; tabuleiro[4][6]='e';
    			//submarino
    			tabuleiro[0][1]='s'; tabuleiro[0][9]='s'; tabuleiro[11][6]='s'; tabuleiro[13][12]='s';
    			break;
    
    
    		case 2:
    
    			//porta aviao
     			tabuleiro[11][2]='p'; tabuleiro[11][3]='p'; tabuleiro[11][4]='p'; tabuleiro[11][5]='p'; tabuleiro[11][6]='p';
    			//hidroaviao
     			tabuleiro[5][1]='h'; tabuleiro[4][2]='h'; tabuleiro[5][3]='h';
     			tabuleiro[9][1]='h';  tabuleiro[8][2]='h'; tabuleiro[9][3]='h';
     			tabuleiro[11][9]='h';  tabuleiro[10][10]='h'; tabuleiro[11][11]='h';
     			//cruzador
     			tabuleiro[0][10]='c';  tabuleiro[0][11]='c';
     			tabuleiro[2][10]='c';   tabuleiro[2][11]='c';
     			tabuleiro[9][8]='c';  tabuleiro[9][9]='c';
     			//encouracado
     			tabuleiro[8][2]='e';  tabuleiro[8][3]='e'; tabuleiro[8][4]='e'; tabuleiro[8][5]='e';
     			tabuleiro[10][3]='e';  tabuleiro[10][4]='e'; tabuleiro[10][5]='e'; tabuleiro[10][6]='e';
     			//submarino
     			tabuleiro[0][1]='s';  tabuleiro[11][9]='s'; tabuleiro[6][6]='s'; tabuleiro[12][12]='s';
     			break;
    
    		case 3:
    
    			//porta aviao
    			tabuleiro[13][13]='p'; tabuleiro[13][12]='p'; tabuleiro[13][11]='p'; tabuleiro[13][10]='p'; tabuleiro[13][9]='p';
    			//hidroaviao
    			tabuleiro[1][2]='h'; tabuleiro[2][1]='h'; tabuleiro[2][3]='h';
    			tabuleiro[5][6]='h'; tabuleiro[4][7]='h'; tabuleiro[6][7]='h';
    			tabuleiro[14][6]='h'; tabuleiro[13][7]='h'; tabuleiro[14][8]='h';
    			//cruzador
    			tabuleiro[15][15]='c'; tabuleiro[15][14]='c';
    			tabuleiro[3][10]='c';  tabuleiro[3][11]='c';
    			tabuleiro[7][2]='c'; tabuleiro[7][3]='c';
    			//encouracado
    			tabuleiro[6][1]='e'; tabuleiro[7][1]='e'; tabuleiro[8][1]='e'; tabuleiro[9][1]='e';
    			tabuleiro[4][3]='e'; tabuleiro[4][4]='e'; tabuleiro[4][5]='e'; tabuleiro[4][6]='e';
    			//submarino
    			tabuleiro[13][4]='s'; tabuleiro[11][11]='s'; tabuleiro[2][14]='s'; tabuleiro[12][12]='s';
    			break;
    
    		default:
    		{
    			printf("\nOpcao invalida!!!\n\n");
    			escolha_mapa();
    		}
    	}
    }
    
    
    //--------------------------------FIM DO PROGRAMA-----------------------------//

     

    adicionado 30 minutos depois

    @RiXaRd Outra coisa... qualquer duvida ou se precisar de ajuda pra randomizar a posição dos navios só dar um toque.

    • Curtir 1
    • Obrigado 1
  2. @RiXaRd hmm... não estou em casa agr para ver o codigo, mas eu olhei aqui e tenho outra dica pra você, quando você usa os operadores de incremento(++) e decremento(--) nas variaveis você acaba armazenando um novo valor a elas, ou seja...
     

    if (tabuleiro[linha--][coluna--]=' ')
    {
    	v[linha--][coluna--]='.';
    }

    acima se tivermos o valor de linha = 0 e coluna = 1 ao passar pelo if a verificação estaria tabuleiro[0][1] e logo após isso as suas variáveis teriam um valo a menos atribuído a elas, quando ele entrasse no if aconteceria um erro de memoria pois ele tentaria acessar um array que não existe em v[-1][0]

    • Curtir 2
  3. @moisesC  se você quer aconpanhar a declaração e valor de cada variavel (debugar), deve ter uma atalho igual a este no seu CB

    59d52205112bc_debugcb.png.a6529d0338093a686ecbc0fa9e8d544b.png

    no canto direito o penultimo item, clina na janelinha com um 'bug'(Debugging windows) e clica em "Watches", logo após você clica no segundo item da esquerda pra direita (Run to cursor), ai ele entra no modo depuração de linha a linha, só você ir apertando F7 pra ele pular para a proxima instrução... caso seu programa for muito grande é só marcar um "Breakpoint" onde quer começar a depurar e apertar no primeiro item "play vermelho"(Debug / Continue)

    • Curtir 4
  4. @Gustavo.A.Barroso Nunca fui muito fã de livros, sempre fui curioso e procurava coisas na internet video-aulas e tudo mais, mas uma vez comprei um livro na faculdade pra ajudar nos meus estudos "Treinamento em Linguagem C - Victorine Viviane Mizrahi", confesso que ele ajudou muito e ainda ajuda quando quero relembrar como faz determinada coisa, fala sobre as coisas mais básicas do programa em c até algumas coisas mais avançadas, também trata de ponteiros com códigos de exemplos intuitivos.

  5. Hoje em dia meus amigos falam que eu sou louco por querer aprender assembly, mas por mais que isso não me dê algum futuro, conhecimento nunca é demais...

    Eu uso o "GUI Turbo Assembler x64" no meu Windows 7 e estou tentando aprender um pouco sobre essa linguaguem, enfim minha duvida:

    Se eu fizer uma MACRO no programa eu consigo passar uns "parametros" por exemplo:

    PosCursor MACRO X, Y
        mov dl, X ; passa o valor da coordenada X para DL
        mov dh, Y ; passa o valor da coordenada Y para DH
        mov ah, 2h ; subfuncao para posicionar cursor
        mov bx, 0 ; subfuncao para posicionar cursor
        int 10h ; interrupção para posicionar cursor do console
    ENDM

    E então eu poderia simplesmente usar ele assim:

    PosCursor 5, 10 ; posiciona o cursor do console na posição X = 5 e Y = 10

    Agora se eu criar uma Procedure(proc) e chamar ela com o comando "call" teria como passar parâmetros?

    • Curtir 2
  6. #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <conio.h>
    
    typedef struct
    {
        char nome[30];
        char email[30];
        char telefone[20];
    } agenda;
    
    agenda* alocar();
    void cadastro(agenda*, int *);
    int realocar(agenda *, int);
    void consultar(agenda *,int);
    
    int main()
    {
        int resp;
        int i = 0;
    
        agenda *p = alocar();
    
        while (resp != 9)
        {
            printf("\n1 - Cadastrar");
            //printf("\n2 - Alterar");
            printf("\n3 - Consultar");
           // printf("\n4 - Excluir");
           // printf("\n5 - Pesquisar");
            printf("\n9 - Sair\n");
            printf("--> ");
            scanf("%d",&resp);
            fflush(stdin);
    
            switch(resp){
            case 1:
                cadastro(p,&i);
                break;
    
            case 3:
                consultar(p,i);
                break;
    
            case 9:
                break;
    
            default:
                printf("Opcao invalida! ");
            }
    
            printf("\n\nPressione ENTER para continuar...");
            getchar();
            system("cls");
        }
    
        return 0;
    }
    
    agenda* alocar()
    {
        agenda *p = (agenda*) malloc(1*sizeof(agenda));
        if (p!= NULL)
        {
            return p;
        }
        else
        {
            printf("\nMEMORIA INSUFICIENTE\n");
            exit(1);
        }
    }
    
    int realocar(agenda *p,int i)
    {
        p = (agenda*) realloc(p,i*sizeof(agenda));
        if(p!= NULL)
        {
            //printf("\nRealocado com sucesso!");
            return 1;
        }
        else
        {
            //printf("\nN foi possivel realocar!");
            return 0;
        }
    }
    
    void cadastro(agenda*p, int *i)
    {
        if(!realocar(p, *i+1)){ // se não conseguir realocar
            printf("\nN foi possivel adicionar novo contato!");
            return;
        }
        //int resp;
        int j = *i;
    
        printf("Digite o nome: ");
        gets(p[j].nome);
        printf("Digite o email: ");
        gets(p[j].email);
        printf("Digite um telefone: ");
        gets(p[j].telefone);
        j++;
        *i = j;
        /*printf("\nCadastrar mais (s-1/n-0): ");
        scanf("%d",&resp);
        system("cls");
        while (resp == 1)
        {
            realocar(p,j);
            fflush(stdin);
            printf("\nDigite o nome: ");
            gets(p[j].nome);
            printf("Digite o email: ");
            gets(p[j].email);
            printf("Digite um telefone: ");
            gets(p[j].telefone);
            printf("\nCadastrar mais (s-1/n-0): ");
            scanf("%d",&resp);
        }//*/
    }
    
    void consultar(agenda *p, int i)
    {
        if(i == 0)
        {
            printf("\nSem registro!\n");
            return;
        }
    
        int k;
        for (k = 0; k < i; k++)
        {
            printf("\nID: %03d", k);
            printf("\nNome: %s",p[k].nome);
            printf("\nEmail: %s",p[k].email);
            printf("\nTelefone: %s\n",p[k].telefone);
        }
    }

    @Gustavo.A.Barroso talvez esse código já te ajude, dei uma alterada em umas partes, da pra melhorar mais, poderia acrescentar um ponteiro para o próximo contado da agenda dentro da struct e um ponteiro global pro ultimo elemento (isso se você já aprendeu a mexer com pilha/lista)

  7. 13 minutos atrás, devair1010 disse:

    @Gustavo Andretto     esse código posiciona a setinha do windows na posição

    certa .  mas como pegar a posição do cursor na tela do console e posicionar

    em outra posição que a gente quiser ?

    Eu consegui fazer usando o GetConsoleScreenBufferInfo(), pra pegar informações do console como tamanho da tela, posição do cursor. Pra setar o cursor num novo lugar você pode usar SetConsoleCursorPosition()

    • Curtir 1
  8. Olá, sou novo na parte de eletrônica e uns dias atras desmontei um brinquedo velho, o mesmo ainda funcionava, mas se quer eu usava, foi então que decidi tirar todos suas peças para futuro uso, foi quando me deparei com uma pecinha comprida com 16 pinos(8 de cada lado), não sei se é um microcontrolador ou processador, alem disso não tinha nada escrito nele, a unica coisa quer tinha era uma bolinha de baixo dele escrito "F6", fora isso mais nada... ficarei grato se alguém me ajudar a saber o que é e a diferença de microcontrolador e processador.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!