-
Posts
26 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Livros
Cursos
Análises
Fórum
Tudo que Lucas Assunção de Sousa postou
-
C Fazer a posição do vetor retornar para trás.
Lucas Assunção de Sousa respondeu ao tópico de Lucas Assunção de Sousa em C/C#/C++
Então, eu tentei aplicar a minha nova lógica, mas não funcionou. Tentei separar por if/else if e também por um if só, mas não está indo. Quando fiz usando apenas uma condição (no caso checando seu a string tinha uma letra P) substituía por x. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <locale.h> main () { setlocale(LC_ALL,"portuguese"); char linha[100]; char linha2[100]; int l; puts("Língua do P"); puts(""); printf("Digite a frase: "); fgets(linha, 100, stdin); for(l = 0; l < 100; l++) { if((toupper(linha[l]) != 'P' && toupper(linha[l + 1]) != 'Q') && toupper(linha[l]) != 'R' || linha[l] != ' ') { linha2[l] = linha[l]; } } printf("frase: %s", linha2); return 0; } -
C Fazer a posição do vetor retornar para trás.
Lucas Assunção de Sousa respondeu ao tópico de Lucas Assunção de Sousa em C/C#/C++
Entendi, um não trabalhei muito usando strings em C. Basicamente só foi uma semana de aprendizado e pulamos pro próximo assunto, mas eu entendi. Eu estou usando apenas uma variável como entrada de dados que vai exibir a frase que o usuário vai digitar, nesse caso como eu não consigo deletar e estou apenas substituindo por um espaço vazio, talvez a melhor solução seria então ter uma segunda variável que receba os caracteres diferentes de porque, R e vazio e jogá-los nessa segunda string. Ai então a segunda variável vai imprimir a frase certinho... Acho que entendi, vou tentar isso! -
C Fazer a posição do vetor retornar para trás.
Lucas Assunção de Sousa respondeu ao tópico de Lucas Assunção de Sousa em C/C#/C++
Bem isso foram problemas passados numa maratona de programação que eu participei e quis refazê-los para poder praticar. Basicamente o que o @devair1010 deu "certo", pois faltou retornar a variável p. -
Estou fazendo um programa que ao digitar uma frase, caso tenha as letras "porque" juntas ou só "R" essa palavra seja deletada e o cursor volte as casas. Pois ao digitar "PQa" ao invés de simplesmente mudar ficar " a" teria que ficar "a" como inicio da frase. Aqui está o meu código: #include <stdio.h> #include <stdlib.h> #include <locale.h> main () { setlocale(LC_ALL,"portuguese"); char linha[100]; int l; puts("Língua do P"); puts(""); printf("Digite a frase: "); fgets(linha, 100, stdin); for(l = 0; l < 100; l++) { if(linha[l] == 'P' && linha[l + 1] == 'Q') { linha[l] = ' '; linha[l + 1] = ' '; } else if(linha[l] == 'R') { linha[l] = ' '; } } printf("frase: %s", linha); }
-
Java Conceitos e terminologias em Orientação a Objetos
Lucas Assunção de Sousa postou um tópico em Java/Android SDK
Boa noite! Estou começando a ver programação orientada a objetos em Java (antes estava nas estruturadas). Minhas principais dúvidas são a respeito das terminologias e da organização do código que ainda não peguei muito bem. import java.util.Scanner; public class usuario { private String nome; private String email; private String login; private String senha; private double media; public usuario () { this("","","",""); } public usuario (String nome, String email, String login, String senha) { this.nome = nome; this.email = email; this.login = login; this.senha = senha; } //Setters public void setNome(String nome) { this.nome = nome; } public void setEmail(String email) { this.email = email; } public void setLogin(String login) { this.login = login; } //Getters public String getNome() { return this.nome; } public String getEmail() { return this.email; } public void setSenha(String senha) { this.senha = senha; } public String getLogin() { return this.login; } public String getSenha() { return this.senha; } public void provarExistencia() { System.out.println("Oi, eu existo"); } public void setMedia(double media) { this.media = media; } public double getMedia() { return this.media; } public void testaMedia(double media) { if(this.media >= 6) { System.out.println("Media: " + this.media); System.out.println("APROVADO"); } else { System.out.println("Media: " + this.media); System.out.println("REPROVADO"); } } } Essa daqui séria então a classe objeto que possui todos os dados a serem pegos. Eu terminei programação estruturada vendo muito pouco a respeito de funções, então me corrijam se eu estiver errado, mas programação orientada a objetos possui muita modularização? Seria correto afirmar que são funções dentro de funções? class Exemplo1 { public static void main (String[] args) { usuario usuario1 = new usuario(); Scanner scanf = new Scanner(System.in); usuario1.setNome("Lucas"); usuario1.setEmail("[email protected]"); usuario1.setLogin("Tecnologgamer"); usuario1.setSenha("27031998"); usuario1.setNome() = scanf.nextLine(); usuario1.setEmail() = scanf.nextLine(); usuario1.setLogin() = scanf.nextLine(); usuario1.setSenha() = scanf.nextLine(); } } Por último eu queria saber onde eu errei nesse momento onde eu estava tentando pegar os valores de entrada, mas deu erro de compilação. Qual seria o jeito certo de atribuir um valor de entrada? -
C Batalha Naval: Erro ao alocar barcos
Lucas Assunção de Sousa respondeu ao tópico de Lucas Assunção de Sousa em C/C#/C++
Obrigado @devair1010 Eu consegui resolver, extremamente agradecido! -
C Batalha Naval: Erro ao alocar barcos
Lucas Assunção de Sousa respondeu ao tópico de Lucas Assunção de Sousa em C/C#/C++
Ai, consegui resolver o problema, entretanto: struct embarcacoes { int submarino; int destroyer; int hidro_aviao; int porta_aviao; }; typedef struct embarcacoes barcos; barcos qt_barcos = {3, 3, 2, 2}; int total_de_barcos = 10; struct almirante { char nome[100]; int placar; int disparos; struct embarcacoes; }; struct almirante jogador; void imprime_portaaviao () { int l, c, direcao; do { direcao = rand() % 2; l = 1 + (rand() % TAMANHO); c = 1 + (rand() % TAMANHO); if(direcao == 0) { if((l == TAMANHO || l >= TAMANHO - 4)) { if(arena_inimigo[l][c] == AGUA && arena_inimigo[l - 1][c] == AGUA && arena_inimigo[l - 2][c] == AGUA && arena_inimigo[l - 3][c] == AGUA && arena_inimigo[l - 4][c] == AGUA) for(i = l; i < l + 4; i++) { arena_inimigo[i - 4][c] = PORTAAVIAO; } } else { if(arena_inimigo[l][c] == AGUA && arena_inimigo[l + 1][c] == AGUA && arena_inimigo[l + 2][c] == AGUA && arena_inimigo[l + 3][c] == AGUA && arena_inimigo[l + 4][c] == AGUA) for(i = l; i < l + 4; i++) { arena_inimigo[i][c] = PORTAAVIAO; } } } else { if(c == TAMANHO || c >= TAMANHO - 4) { if(arena_inimigo[l][i] == AGUA && arena_inimigo[l][c - 1] == AGUA && arena_inimigo[l][c - 2] == AGUA && arena_inimigo[l][c - 3] == AGUA && arena_inimigo[l][c - 4] == AGUA) for(i = c; i < c + 4; i++) { arena_inimigo[l][i - 4] = PORTAAVIAO; } } else { if(arena_inimigo[l][i] == AGUA && arena_inimigo[l][c + 1] == AGUA && arena_inimigo[l][c + 2] == AGUA && arena_inimigo[l][c + 3] == AGUA && arena_inimigo[l][c + 4] == AGUA) for(i = c; i < c + 4; i++) { arena_inimigo[l][i] = PORTAAVIAO; } } } qt_barcos.porta_aviao--; } while (qt_barcos.porta_aviao != 0); } Entretanto para evitar que as embarcações se colocassem em cima de outras, eu fiz essa condição longa, e ela às vezes não imprime todas as partes do porta avião. O que pode estar errado? -
C Batalha Naval: Erro ao alocar barcos
Lucas Assunção de Sousa respondeu ao tópico de Lucas Assunção de Sousa em C/C#/C++
@devair1010 Poderia me explicar o que está acontecendo? Eu estou tentando fazer com que as embarcações que tenham mais unidades não possam sair dos extremos ou que sejam colocados além dos extremos, mas não está indo. O que pode tá acontecendo de errado? void imprime_portaaviao () { int l, c, direcao; do { direcao = rand() % 2; l = 1 + (rand() % TAMANHO); c = 1 + (rand() % TAMANHO); do { if(direcao == 0) { for(i = l; i < l + 4; i++) { arena_inimigo[i][c] = PORTAAVIAO; qt_barcos.porta_aviao--; total_de_barcos--; } } else { for(i = c; i < c + 4; i++) { arena_inimigo[l][i] = PORTAAVIAO; qt_barcos.porta_aviao--; total_de_barcos--; } } } while ((l >= 1 && l <= TAMANHO) && (c >= 1 && c <= TAMANHO)); } while (qt_barcos.porta_aviao == 0); } Basicamente estou tentando impedir que a fila de "P's saiam do limite da linha e do limite da coluna, mas nem isso está adiantando. -
C Batalha Naval: Erro ao alocar barcos
Lucas Assunção de Sousa respondeu ao tópico de Lucas Assunção de Sousa em C/C#/C++
@devair1010 Obrigado pela ajuda, acho que eu notei porque nem todos estão sendo impressos, a condição que eu coloquei antes de alocar na matriz para segurar que as embarcações não sejam colocadas em cima das outras, vou tentar achar uma outra maneira de checar isso antes de alocar. Obrigado! -
Boa tarde, Estou trabalhando em um jogo de Batalha Naval e estou tendo dificuldades na hora de alocação dos barcos. Basicamente as embarcações possuem mais de uma unidade na matriz (com exceção do submarino que é apenas uma) e são alocadas tanto na vertical quanto na horizontal (exemplo o portão avião, pode ser tanto em "PPPP" ou "P P P P" Para isso eu sorteio um número que define a direção da posição, se for 0 é horizontal, se for 1 é vertical, mas não está sendo alocado. Esse é o código que escrevi, alguém sabe o que tem de errado? Grato! #include <stdio.h> #include <stdlib.h> #include <locale.h> #include <windows.h> #include <time.h> #define AGUA '~' #define ERRO 'X' #define TAMANHO 11 #define SUBMARINO 'S' #define DESTROYER 'D' #define HIDROAVIAO 'H' #define PORTAAVIAO 'P' char arena[TAMANHO][TAMANHO], arena_inimigo[TAMANHO][TAMANHO]; int linha, coluna; struct embarcacoes { int submarino; int destroyer; int hidro_aviao; int porta_aviao; }; typedef struct embarcacoes barcos; barcos qt_barcos = {3, 3, 2, 2}; struct almirante { char nome[100]; int placar; int disparos; struct embarcacoes }; struct almirante jogador; void prepara_tabuleiro () { int l, c; for(l = 1; l < TAMANHO; l++) { for(c = 1; c < TAMANHO; c++) { arena_inimigo[l][c] = AGUA; arena[l][c] = AGUA; } } } int imprime_submarino () { int l, c, direcao; l = 0; c = 0; srand((unsigned)time(NULL)); do { direcao = rand() % 2; l = rand() % TAMANHO; c = rand() % TAMANHO; if(direcao == 0) { for(l = 0; l < l + 1; l++) { if(arena_inimigo[l][c] == AGUA) { arena_inimigo[linha][c] = SUBMARINO; return 0; } } } else { for(c = 0; c < c + 1; c++) { arena_inimigo[l][coluna] = SUBMARINO; return 0; } } } while(qt_barcos.submarino != 0); } int imprime_destroyer () { int l, c, direcao; l = 0; c = 0; srand((unsigned)time(NULL)); do { direcao = rand() % 2; l = rand() % TAMANHO; c = rand() % TAMANHO; if(direcao == 0) { for(l = 0; l < l + 2; l++) { if(arena_inimigo[l][c] == AGUA) { arena_inimigo[linha][c] = DESTROYER; return 0; } } } else { for(c = 0; c < c + 2; c++) { arena_inimigo[l][coluna] = DESTROYER; return 0; } } } while(qt_barcos.destroyer != 0); } int imprime_hidroaviao () { int l, c, direcao; l = 0; c = 0; srand((unsigned)time(NULL)); do { direcao = rand() % 2; l = rand() % TAMANHO; c = rand() % TAMANHO; if(direcao == 0) { for(l = 0; l < l + 3; l++) { if(arena_inimigo[l][c] == AGUA) { arena_inimigo[linha][c] = HIDROAVIAO; return 0; } } } else { for(c = 0; c < c + 3; c++) { arena_inimigo[l][coluna] = HIDROAVIAO; return 0; } } } while(qt_barcos.hidro_aviao != 0); } int imprime_portaaviao () { int l, c, direcao; l = 0; c = 0; srand((unsigned)time(NULL)); do { direcao = rand() % 2; l = rand() % TAMANHO; c = rand() % TAMANHO; if(direcao == 0) { for(l = 0; l < l + 4; l++) { if(arena_inimigo[l][c] == AGUA) { arena_inimigo[linha][c] = PORTAAVIAO; return 0; } } } else { for(c = 0; c < c + 4; c++) { arena_inimigo[l][coluna] = PORTAAVIAO; return 0; } } } while(qt_barcos.porta_aviao != 0); } void imprimeTabuleiro () { int l, c; for(l = 1; l < TAMANHO; l++) { for(c = 1; c < TAMANHO; c++) { printf(" \t%c", arena[l][c]); } printf("\n"); } } int controles () { int vida_inimiga; int l, c; jogador.disparos = 999; vida_inimiga = 36; do { //Exibe principais informações na tela printf("Almirante %s\n", jogador.nome); printf("Disparo Restantes: %i/46\n", jogador.disparos); printf("Vida Inimiga: %i/36\n\n", vida_inimiga); printf("Informe a linha: "); scanf("%i", &l); printf("Informe a coluna: "); scanf("%i", &c); printf("\n"); if(l >= 1 && l < TAMANHO && c >= 1 && c < TAMANHO && arena_inimigo[l][c] == AGUA) { switch(arena_inimigo[l][c]) { case AGUA: arena[l][c] = ERRO; system("cls"); imprimeTabuleiro(); jogador.disparos--; printf("Errou\n"); break; case SUBMARINO: arena[l][c] = 'S'; imprimeTabuleiro(); jogador.disparos--; vida_inimiga--; printf("Acertou!\n"); break; case HIDROAVIAO: arena[l][c] = 'H'; imprimeTabuleiro(); jogador.disparos--; vida_inimiga--; printf("Acertou!\n"); break; case DESTROYER: arena[l][c] = 'D'; imprimeTabuleiro(); jogador.disparos--; vida_inimiga--; printf("Acertou!\n"); break; case PORTAAVIAO: arena[l][c] = 'P'; imprimeTabuleiro(); jogador.disparos--; vida_inimiga--; printf("Acertou\n"); break; default: printf("ErrROU!\n"); } } if(vida_inimiga == 0) { system("cls"); puts("FIM DO JOGO"); puts("VOCÊ VENCEU!"); puts(""); jogador.placar = jogador.placar + 1; printf("Jogador: %s\nPlacar: %i", jogador.nome, jogador.placar); puts(""); getchar(); exit(1); } if(jogador.disparos == 0) { system("cls"); puts("FIM DO JOGO"); puts("VOCÊ PERDEU"); jogador.placar = jogador.placar + 0; printf("Jogador: %s\nPlacar: %i", jogador.nome, jogador.placar); puts(""); getchar(); exit(1); } } while (vida_inimiga != 0 && jogador.disparos != 0); } int main () { setlocale(LC_ALL,"Portuguese"); prepara_tabuleiro(); imprime_submarino(); imprime_destroyer(); imprime_hidroaviao(); imprime_portaaviao(); imprimeTabuleiro(); controles(); getch(); return 0; }
-
C Alocação de barcos de modo aleatório em C
Lucas Assunção de Sousa respondeu ao tópico de Lucas Assunção de Sousa em C/C#/C++
@devair1010 Obrigado por responder! Bem, após pesquisar bastante sobre referências na internet eu acabei achando um que tinha essa função que fazia exatamente o que quero. Tudo parece funcionar de perfeita maneira, entretanto eu não estou conseguindo alocar numa matriz principal que é exibida na tela, ou seja, é uma arena vazia em que o jogador tá atirando. Como o código é bastante grande e está separado em várias funções, resolvi colocar ele pra baixar do que colocar aqui. SinglePlayer.rar -
Olá à todos! Estou com uma dúvida sobre o raciocínio de como elaborar um código: Tempos atrás algumas gentis pessoas me ajudaram a corrigir meu jogo de Batalha Naval E estou numa fase que agora estou tentando melhorar o código dele, e uma das coisas que queria fazer desde o começo é que e não estou conseguindo terminar o raciocínio é colocar as embarcações de modo aleatório na arena. Meu pensamento se resume a eu tentar criar uma função que sorteia ou número 1 e 2, caso de 1 imprime ele em posição vertical e 2 na horizontal da arena. Porém, outro problema que é encontro é que são algumas embarcações com um porta-aviões, possui mais de um na arena, e cada um deles precisa ter 3 espaços. E são nessas partes eu travo e não consigo mais pensar.
-
Como você não falou o que o programa faz, deu a entender que você realiza a checagem de dois valores e eles não estão imprimindo de maneira certa, apenas lixo de memória. Eu fiz uma versão minha desse programa: #include <stdio.h> #include <stdlib.h> #include <locale.h> main () { setlocale(LC_ALL,"portuguese"); int sorteado[6], aposta[6], cont, acertos[6]; cont = 0; puts("Informe os números sorteados"); for(cont = 0; cont < 6; cont = cont + 1) { scanf("%i", &sorteado[cont]); } puts("Informe os números da aposta"); for(cont = 0; cont < 6; cont = cont + 1) { scanf("%i", &aposta[cont]); } for(cont = 0; cont < 6; cont = cont + 1) { if(sorteado[cont] == aposta[cont]) { acertos[cont] = aposta[cont]; } } puts("Números sorteados"); for(cont = 0; cont < 6; cont = cont + 1) { printf("%i\n\n", sorteado[cont]); } puts("Números acertados"); for(cont = 0; cont < 6; cont = cont + 1) { printf("%i\n", acertos[cont]); } } A minha versão funciona certa se os números forem colocados em ordem (6,5,4,3,2,1...) O que poderia resolver esse problema é que antes de realizar a checagem seria organizar os dois vetores em ordem para depois realizar a checagem.
-
C Maneira de fazer com que o programa inicie lentamente
Lucas Assunção de Sousa postou um tópico em C/C#/C++
Bom dia, Eu estava curioso e gostaria de saber se existe alguma maneira de fazer com que esse trecho do meu código inicie de uma maneira como se alguém tivesse digitando na tela, letra a letra normalmente nesse trecho especifico do meu código. Existe algum comando especifico ou precisa de fazer de alguma maneira? Obrigado. void introducao () { puts("Bem-vindo ao Batalha Naval"); printf("\n"); puts("Você é um almirante que tem a missão de derrubar as embarcações inimigas\ne dar vantagem para o seu país na guerra"); puts("Suas Embarcações"); printf("\nSubmarino = SSS ou \nS\nS\nS"); printf("\nHidro-Avião = H em V ou > ou <"); printf("\nPorta-Aviões = PPP ou \nP\nP\nP"); printf("\nDestroyer = DDD ou \nD\nD\nD"); printf("\n"); printf("\n"); puts("Qual seu nome?"); fflush(stdin); gets(jogador.nome); } -
C Batalha Naval erro de execução
Lucas Assunção de Sousa respondeu ao tópico de Lucas Assunção de Sousa em C/C#/C++
Nossa! Não sabia que podia usar o switch dessa maneira, só usava em casos para fazer menus simples. Obrigado@TYSQUARE89 você me ajudou bastante. Só uma dúvida, o que significa o "?" na sintaxe? Esse é novo para mim. -
C Batalha Naval erro de execução
Lucas Assunção de Sousa respondeu ao tópico de Lucas Assunção de Sousa em C/C#/C++
Oh, perdão! #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <locale.h> struct almirante //Perfil e dados dos jogadores { char nome[100]; int placar; }; void batalha_naval () //Jogo { char campo[14][14]; //Campo int hidro_cont, porta_cont, des_cont; int l, c; int c1 = 0, l1 = 0; int vida = 36; struct almirante jogador; jogador.placar = 0; //Placar hidro_cont = 0; porta_cont = 0; des_cont = 0; char inimigo[14][14] = { //Arena do jogo {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 4}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 4}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0}, {4, 4, 4, 0, 0, 0, 2, 3, 2, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 3, 0, 0, 0, 0, 0, 0}, {0, 3, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0}, {0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}, {0, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0}, {0, 3, 3, 3, 3, 3, 2, 0, 2, 0, 0, 1, 0, 2} }; //Desenha a arena for(l = 0; l < 14; l = l + 1) { for(c = 0; c < 14; c = c + 1) { campo[l][c] = '~'; printf(" \t%c" , campo[l][c]); } printf("\n"); } //Condição para continuar jogando while (vida != 0) { printf("Vida: %i\n", vida); printf("Informe a linha: "); scanf("%i", &l); printf("Informe a coluna: "); scanf("%i", &c); printf("\n"); c1 = c; l1 = l; if(inimigo[l][c] == 0) { for(l = 0; l < 14; l = l + 1) { for(c = 0; c < 14; c = c + 1) { if(l == l1 && c == c1) { campo[l][c] = '*'; } printf(" \t%c" , campo[l][c]); } printf("\n"); } puts("Errou"); } if(inimigo[l][c] == 1) { for(l = 0; l < 14; l = l + 1) { for(c = 0; c < 14; c = c + 1) { if(l == l1 && c == c1) { campo[l][c] = 'S'; vida = vida - 1; } printf(" \t%c" , campo[l][c]); if(campo[l][c] == 'S') { vida = vida - 0; } } printf("\n"); } puts("Submarino destruído"); } if(inimigo[l][c] == 2) { for(l = 0; l < 14; l = l + 1) { for(c = 0; c < 14; c = c + 1) { if(l == l1 && c == c1) { campo[l][c] = 'H'; vida = vida - 1; hidro_cont = hidro_cont + 1; if(hidro_cont == 3) { hidro_cont = 0; } } printf(" \t%c", campo[l][c]); } printf("\n"); } puts("Hidro-Avião destruído"); } if(inimigo[l][c] == 3) { for(l = 0; l < 14; l = l + 1) { for (c = 0; c < 14; c = c + 1) { if(l == l1 && c == c1) { campo[l][c] = 'P'; vida = vida - 1; porta_cont = porta_cont + 1; if(porta_cont == 4) { porta_cont = 0; } } printf(" \t%c", campo[l][c]); } printf("\n"); } puts("Porta-aviões destruído"); } if(inimigo[l][c] == 4) { for(l = 0; l < 14; l = l + 1) { for(c = 0; c < 14; c = c + 1) { if(l == l1 && c == c1) { campo[l][c] = 'D'; vida = vida - 1; if(l == c) { des_cont = des_cont + 1; if(des_cont == 3) { } } } printf(" \t%c", campo[l][c]); } printf("\n"); } puts("Destroyer destruído"); } if(vida == 0) { system("cls"); puts("FIM DO JOGO"); jogador.placar = jogador.placar + 1; printf("Placar: %i", jogador.placar); } } } main () { setlocale(LC_ALL,"portuguese"); batalha_naval (); getch(); return 0; } Eu só coloquei a condição quando um submarino é atingido, para testar se funcionasse. Todas os números "1" na matriz representam um submarino. Quando eu digito 0 e 1 (coordenadas) para atingir um submarino e digito novamente, a vida é extraída do mesmo jeito. -
C Batalha Naval erro de execução
Lucas Assunção de Sousa respondeu ao tópico de Lucas Assunção de Sousa em C/C#/C++
Usei mais por formalidade mesmo, o que não entendo é porque a condição não está funcionando. Isso que, quando uso uma mesma coordenada que já foi descoberta, a vida ainda é subtraída. Pensei que usando essa condição resolveria o problema, mas não adiantou. -
C Batalha Naval erro de execução
Lucas Assunção de Sousa respondeu ao tópico de Lucas Assunção de Sousa em C/C#/C++
Olá novamente, percebi um erro lógico no meu código, quando digito em uma mesma posição onde o setor está localizado, a vida é subtraída mesmo assim. Eu já tentei fazer isso. if(inimigo[l][c] == 1) { for(l = 0; l < 14; l = l + 1) { for(c = 0; c < 14; c = c + 1) { if(l == l1 && c == c1) { campo[l][c] = 'S'; vida = vida - 1; } if(campo[l][c] == 'S') { vida = vida - 0; } printf(" \t%c" , campo[l][c]); } printf("\n"); } puts("Submarino destruído"); } E mesmo assim a vida é subtraída. Tentei colocar ela em diferentes posições e mesmo assim não funciona, o que estou fazendo de errado? -
C Batalha Naval erro de execução
Lucas Assunção de Sousa respondeu ao tópico de Lucas Assunção de Sousa em C/C#/C++
Muito obrigado @TYSQUARE89 -
Bom dia, estou desenvolvendo um jogo de Batalha Naval, quando executo o programa apenas uma vez o computador pede a linha e a coluna, em seguida fica mostrando várias mensagens de erro em seguida, alguém sabe no que deu errado? #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <locale.h> struct almirante //Perfil e dados dos jogadores { char nome[100]; int placar; }; void batalha_naval () { char campo[14][14]; int cont, sub_cont, hidro_cont, porta_cont, des_cont; int l, c; int vida = 14; struct almirante jogador; char inimigo[14][14] = { {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 4}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 4}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 4}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0}, {4, 4, 4, 0, 0, 0, 2, 3, 2, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 4, 4, 4, 0, 0, 0, 0, 0, 0, 0}, {0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2}, {0, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2, 0}, {0, 3, 3, 3, 3, 0, 2, 0, 2, 0, 0, 1, 0, 2} }; for(l = 1; l < 14; l = l + 1) { for(c = 1; c < 14; c = c + 1) { campo[l][c] = '.'; printf(" |%c|" , campo[l][c]); } printf("\n"); } printf("Informe a linha: "); scanf("%i", &l); printf("Informe a coluna: "); scanf("%i", &c); printf("\n"); while (vida != 0) { if(inimigo[l][c] == 0) { campo[l][c] == '*'; puts("Errou"); } if(inimigo[l][c] == 1) { campo[l][c] = 'S'; puts("Submarino destruído"); vida = vida - 1; } if(inimigo[l][c] == 2) { campo[l][c] = 'H'; hidro_cont = hidro_cont + 1; if(hidro_cont == 3) { puts("Hidro-Avião destruído"); hidro_cont = 0; vida = vida - 1; } } if(inimigo[l][c] == 3) { campo[l][c] = 'P'; porta_cont = porta_cont + 1; if(porta_cont == 4) { puts("Porta-aviões destruído"); porta_cont = 0; vida = vida - 1; } } if(inimigo[l][c] == 4) { campo[l][c] = 'D'; des_cont = des_cont + 1; if(des_cont == 3) { puts("Destroyers destruído"); des_cont = 0; vida = vida - 1; } } jogador.placar = jogador.placar + 1; puts("Fim de jogo"); printf("Placar: %i", jogador.placar); } } main () { setlocale(LC_ALL,"portuguese"); batalha_naval (); getch(); return 0; }
-
Checando se um programa está no vetor
Lucas Assunção de Sousa respondeu ao tópico de Lucas Assunção de Sousa em C/C#/C++
Sempre me esqueço do cont precisa estar igual a 0, e essa condição foi um deslize. Obrigado! -
Boa tarde! Estou fazendo um programa onde tenho que digitar um vetor de 10 índices, após isso digitar um número e ver se esse número digitado está contido no vetor. Obrigado! #include <stdio.h> #include <stdlib.h> #include <locale.h> main () { setlocale(LC_ALL,"portuguese"); int i, vet[10], cheque, cont; printf("Checando um número no vetor\n\n"); for(i = 0; i < 10; i = i + 1) //Conta o vetor { printf("Digite o [%i°] valor: ", i + 1); scanf("%i", &vet[i]); } printf("\nTecle um número para checar se está no vetor: "); //Número a ser checado para ver se está no vetor fflush(stdin); scanf("%i", &cheque); for(i = 0; i < 10; i = i + 1 ) //Laço para checar se contém o número { if(cheque == vet[i]) { cont = cont + 1; } } if(cont == 0) { printf("\nContem"); } else { printf("\nNão Contém"); } getch(); return 0; }
-
Olá! Estou com um problema em um exercício onde preciso somar a linha de uma matriz com um bloco de vetor. Basicamente o que eu fiz no meu código foi tentar somar as linhas das matrizes e passar para um vetor para que no final eu usasse um outro vetor para simplesmente fazer uma soma e com isso eu tentei usar o exemplo que o meu professor usou e quando fiz os resultados saíram errado. #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <locale.h> main () { setlocale(LC_ALL,"portuguese"); int m[4][4], v[4], v2[4], result; int l, c; printf("Soma de Matriz com vetor"); printf("\nPrimeira matriz: "); for(l = 0; l < 4; l = l + 1) { for(c = 0; c < 4; c = c + 1) { scanf("%i", &m[l][c]); } } printf("\nVetor: "); for(l = 0; l < 4; l = l + 1) { scanf("%i", &v[l]); } for(l = 0; l < 4; l = l + 1) { for(c = 0; c < 4; c = c + 1) { v2[l] += m[l][c]; } } printf("\nResultado\n"); for(l = 0; l < 4; l = l + 1) { result = v[l] + v2[l]; printf("%i ", result); } getch(); return 0; }
-
Condições IF e Else
Lucas Assunção de Sousa respondeu ao tópico de Lucas Assunção de Sousa em C/C#/C++
@devair1010 Seu código está funcionando corretamente, vou checar as chaves, porém está imprimindo dois IMC, um com mais de dois pontos após a vírgula. E percebi que você usa o else if de maneira diferente, funciona da mesma maneira? adicionado 9 minutos depois @devair1010 Consegui resolver! Não foi problema de chave no meu, na verdade foi a condição (IMC == PESO || IMC == PESO) Só substitui o "||" por "&&", isso tava bloqueando imprimir o resultado certo, só não entendo, o "||" não significa "ou", então deveria estar certo. -
Boa noite O problema que estou tendo é em que tenho que criar um programa que calcule o IMC de uma pessoa, contudo está tendo problemas nas condições. Abaixo de 18,5 Abaixo do peso ideal Entre 18,5 e 24,9 Peso normal Entre 25,0 e 29,9 Acima de seu peso (sobrepeso) Entre 30,0 e 34,9 Obesidade grau I Entre 35,0 e 39,9 Obesidade grau II 40,0 e acima Obesidade grau III O IMC é calculado = peso / (altura*altura) Estou tentando com 1,69 de altura e 100 quilos e o resultado está dando 35,01 e fala que está dando Peso Normal ao invés de Obesidade Grau II #include <stdio.h> #include <stdlib.h> #include <locale.h> main () { setlocale(LC_ALL,"portuguese"); float peso, altura, imc; printf("Cálculo do IMC"); printf("\nDigite sua altura: "); scanf("%f", &altura); printf("\nDigite seu peso: "); scanf("%f", &peso); imc = peso / (altura * altura); if(imc < 18.5) { printf("\nIMC: %.2f\nAbaixo do Peso", imc); } else if(imc >= 18.50 || imc <= 24.90) { printf("\nIMC: %.2f\nPeso Normal", imc); } else if (imc >= 25.00 || imc <= 29.90) { printf("\nIMC: %.2f\nSobrepeso", imc); } else if (imc >=30.00 || imc <= 34.9) { printf("\nIMC: %.2f\nObesidade Grau I", imc); } else if (imc >= 35.00 || imc <= 39.90) { printf("\nIMC: %.2f\nObesidade Grau II", imc); } else if (imc >= 40.00) { printf("\nIMC: %i\nObeisdade Grau III", imc); } return 0; getch(); }
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