Ir ao conteúdo
  • Cadastre-se

Relry

Membro Pleno
  • Posts

    22
  • Cadastrado em

  • Última visita

  1. Relry

    C++ Batalha naval em c++

    @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.
  2. Relry

    C++ Batalha naval em c++

    @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]
  3. Relry

    C++ Batalha naval em c++

    @RiXaRd tente apenas deixar a variavel tabuleiro global(a que esta fora da main) e apaga esta variavel local que esta dentro da escolha_mapa()
  4. Relry

    C++ Batalha naval em c++

    @RiXaRd cara, me parece que sua função escolha_mapa() esta setando os valores dos objetos do seu tabuleiro na variavel local desta função e não na variavel global tabuleiro, verifica isso amigo.
  5. @TYSQUARE89 Como assim posicionar os argumentos? Poderia me mostrar um exemplo?
  6. tenta colocar um "fflush(stdin)" antes do "gets"
  7. @moisesC se você quer aconpanhar a declaração e valor de cada variavel (debugar), deve ter uma atalho igual a este no seu CB 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)
  8. @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.
  9. 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?
  10. #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)
  11. for(i=0; i < n; i++){ a[i] = rand()%21-10; } No laço 'for' que coloca os valores aleatórios no vetor você poderia mudar para esse que sortei de -10 até 10
  12. @Gustavo Andretto seria uma boa se você usar ponteiros, caso você precise cadastrar mais de 10 alunos você terá um problema
  13. @devair1010 por nada man, qualquer coisa só perguntar
  14. @1freakday olha não ouvi falar q ela é instável quando procurei na net, até porque estou usando ela aqui numa boa e ta tudo dando certo por enquanto
  15. 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()

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!