Ir ao conteúdo

PauloC19

Membro Pleno
  • Posts

    35
  • Cadastrado em

  • Última visita

Reputação

15
  1. @BasoleFiz de outra forma e conseguir chegar ao resultado desejado. Obrigado pela ajuda!
  2. @Basole Tipo assim, nessas 7 linhas, das duas colunas, G e H, todas as linhas tem o mesmo preço, queria retornar a quantidade de preços iguais, que seria 7
  3. @Basole Nada. Print das duas colunas abaixo... Estava tentando fazer algo assim, com o "=CONT.SES", porém, só vai me retornar a quantidade do valor definido.: =CONT.SES(H2:H999; "=2,00"; G2:G999; "=2,00")
  4. @Basole Seria como retornar verdadeiro ou falso, né!? Eu queria retornar a quantidade
  5. Boa tarde, galera! Então, alguém poderia ajudar? Por ex.: Coluna G e Coluna H, com 999 linhas Coluna G e Coluna H, com seus dados, preços: R$2,00 R$1,00 R$3,00 R$3,00 R$5,00 R$5,00 R$7,00 R$9,00 Quero retornar a quantidade de preços iguais, que nesse caso, seria 2, entre as duas colunas. Estou utilizando a seguinte fórmula, dessa maneira: =CONT.SE(H2:H999;"="&G2:G999) , porém, retorna o valor 0, e não 2
  6. Boa noite. Estou desenvolvendo um Jogo da Velha, e está quase pronto. Testando o Jogo da velha, percebi que mesmo o Jogador Humano vencendo a partida, o Computador ainda efetua mais uma jogada. Alguém pode me orientar? Por exemplo.: X|O|O X|O|_ X| | Jogador Humano VENCEU É tipo isso, o Jogador Humano venceu e o Computador imprimiu mais um O ainda. Acredito que segue algum detalhe nesses if/else, em alguma parte desses blocos de códigos que se encontra no Main. Segue o código abaixo: public class Jogo { //Instâncias de Tabuleiro, Jogador, ComputadorA, ComputadorB e ComputadorC static Tabuleiro jogoTabuleiro = new Tabuleiro(); static Jogador jogador = new Jogador(); static ComputadorA compA = new ComputadorA(); static ComputadorB compB = new ComputadorB(); public static void main(String[] args) { System.out.println("***** Jogo da Velha *****"); System.out.println("Jogador Humano: X"); System.out.println("Computador: O\n"); System.out.println("Escolha o nível de dificuldade 1, 2 ou 3:"); //Ler o que foi digitado pelo usuário Scanner nDificuldade = new Scanner(System.in); //Armazena o que foi digitado int nivel = nDificuldade.nextInt(); //Entra nesse laço se o que foi digitado for menor que 1 ou menor que 3 while(nivel < 1 || nivel > 3){ System.out.println("Opção inválida, escolha a dificuldade 1, 2 ou 3:"); nivel = nDificuldade.nextInt(); } int jogoNaoAcabou = 1; //Enquanto a variável jogonaoAcabou for <= 5 chama o método JogadorHumano while (jogoNaoAcabou <= 5) { jogador.JogadorHumano(Tabuleiro.tab); //Se o nível for igual a 1, cai nesse if e chama o método JogadorComputadorA if (nivel == 1) { compA.JogadorComputadorA(Tabuleiro.tab); } //Nível igual a 2, cai nesse else if e chama o método JogadorComputadorB else if (nivel == 2){ compB.JogadorComputadorB(Tabuleiro.tab); } //Chama o método caso Jogador Humano ou Computador tenha vencido if(jogoTabuleiro.VerificaVencedor(Tabuleiro.tab)){ break; //Para encerrar o jogo caso um dos dois tenha vencido } //jogoNaoAcabou for igual a 5, significa que todas os espaços foram preenchidos e não teve vencedor else if(jogoNaoAcabou == 5){ System.out.println("EMPATE"); } //Incrementa jogoNaoAcabou + 1 jogoNaoAcabou++; } } }
  7. Boa noite, @AdrianoSiqueira Obrigado! Consegui resolver essa parte. Preciso de mais uma ajuda, se você puder me orientar. Então, testando o Jogo da velha, percebi que mesmo o Jogador Humano vencendo a partida, o Computador ainda efetua mais uma jogada. Por exemplo.: X|O|O X|O|_ X| | Jogador Humano VENCEU É tipo isso, o Jogador Humano venceu e o Computador imprimiu mais um O ainda. Acredito que segue algum detalhe nesses if/else, em alguma parte desses blocos de códigos que se encontra no Main. Segue o código abaixo: public class Jogo { //Instâncias de Tabuleiro, Jogador, ComputadorA, ComputadorB e ComputadorC static Tabuleiro jogoTabuleiro = new Tabuleiro(); static Jogador jogador = new Jogador(); static ComputadorA compA = new ComputadorA(); static ComputadorB compB = new ComputadorB(); public static void main(String[] args) { System.out.println("***** Jogo da Velha *****"); System.out.println("Jogador Humano: X"); System.out.println("Computador: O\n"); System.out.println("Escolha o nível de dificuldade 1, 2 ou 3:"); //Ler o que foi digitado pelo usuário Scanner nDificuldade = new Scanner(System.in); //Armazena o que foi digitado int nivel = nDificuldade.nextInt(); //Entra nesse laço se o que foi digitado for menor que 1 ou menor que 3 while(nivel < 1 || nivel > 3){ System.out.println("Opção inválida, escolha a dificuldade 1, 2 ou 3:"); nivel = nDificuldade.nextInt(); } int jogoNaoAcabou = 1; //Enquanto a variável jogonaoAcabou for <= 5 chama o método JogadorHumano while (jogoNaoAcabou <= 5) { jogador.JogadorHumano(Tabuleiro.tab); //Se o nível for igual a 1, cai nesse if e chama o método JogadorComputadorA if (nivel == 1) { compA.JogadorComputadorA(Tabuleiro.tab); } //Nível igual a 2, cai nesse else if e chama o método JogadorComputadorB else if (nivel == 2){ compB.JogadorComputadorB(Tabuleiro.tab); } //Chama o método caso Jogador Humano ou Computador tenha vencido if(jogoTabuleiro.VerificaVencedor(Tabuleiro.tab)){ break; //Para encerrar o jogo caso um dos dois tenha vencido } //jogoNaoAcabou for igual a 5, significa que todas os espaços foram preenchidos e não teve vencedor else if(jogoNaoAcabou == 5){ System.out.println("EMPATE"); } //Incrementa jogoNaoAcabou + 1 jogoNaoAcabou++; } } }
  8. Bom dia. Alguém poderia me ajudar? Tenho um laço de repetição while no código para verificar se o número digitado é 1, 2 ou 3, caso contrário entra no laço, e apresenta a mensagem de opção, até que seja digitado a opção correta, porém ele só entende a primeiro condição, a outra ignorada. Segue o código abaixo: System.out.println("Escolha o nível de dificuldade 1, 2 ou 3:"); Scanner nDificuldade = new Scanner(System.in); int nivel = nDificuldade.nextInt(); //int opcao = nivel; while((nivel != 1 && nivel != 2) && nivel != 3)){ System.out.println("Opção inválida, escolha a dificuldade 1, 2 ou 3:"); nivel = nDificuldade.nextInt(); } Outra dúvida: como eu faço pra chamar um método, e repetir ele quantas vezes quiser juntamente com outro, por exemplo.:sem fazer essa repetição de código abaixo, chama um de cada vez, mas sem ser desse jeito que está. Segue o código a abaixo: if(nivel == 1){ JogadorHumano(tab); JogadorComputadorA(tab); JogadorHumano(tab); JogadorComputadorA(tab); JogadorHumano(tab); JogadorComputadorA(tab); JogadorHumano(tab); JogadorComputadorA(tab); JogadorHumano(tab); }
  9. @isrnick Boa noite! Muito Obrigado! Com essas modificações o erro foi solucionado e o código rodou perfeitamente. No momento, estou aprendendo sobre estrutura de dados heterogêneas, alocação dinâmica etc.. Até então, não conhecia as funções: "strcpy e strncpy", "strcmp e strncmp". Cada detalhe que você apresentou me ajudou bastante. Obrigado!
  10. @isrnick Boa noite, Deu certo certo com essas alterações, com isso, modifiquei a função de listar, acrescentei mais dois printf entre outros, com o nome e email...falta só um detalhe, ao utilizar a função código percebi o seguinte problema: A função buscar ela está pegando sempre as últimas informações digitadas, e utilizando em todas as numerações buscada no código. Por ex.: Digita a numeração: 1111, nome: aaaa, email: aaaaa, depois cadastra outros dados, numeração: 2222, nome, bbbb, email: bbbbb, quando faz a busca pela numeração: 1111, retorna o nome: bbbb e email: bbbbb, invés de mostrar nome: aaaa, email: aaaaa. Função Buscar: BuscaDados* Buscar(BuscaDados ** ElementoVarredura, int num) { if (*ElementoVarredura == NULL) return NULL; if (num < (*ElementoVarredura)->num) { Buscar(&((*ElementoVarredura)->esquerda), num); //Tentei adicionar depois do num: num, nome, email, e assim nas demais, porém, não altera nada. } else { if (num > (*ElementoVarredura)->num) { Buscar(&((*ElementoVarredura)->direita), num); } else { if (num == (*ElementoVarredura)->num) return *ElementoVarredura; } } } Chamada da função buscar: case 2: printf("Digite o numero a ser buscado: "); scanf_s("%d", &num); printf("\n"); system("cls"); while ((c = getchar()) != '\n' && c != EOF) {} ElementoBusca = Buscar(&root, num); //Tentei depois de num, chamar as variáveis: nome[], email[], e não altera nada também if (ElementoBusca != 0) { printf("Cadastro localizado.\n\n"); printf("Numero: %d\n", num); printf("Nome: %s\n", nome); printf("Email: %s\n\n", email); } else { printf("Cadastro nao localizado.\n"); } system("pause"); break;
  11. @isrnick Boa noite! Muito Obrigado! Com essa função imprimiu na tela o nomes de forma correta...Estou alterando a base de outro código de uma estrutura de dados, fiz algumas alterações, consegui executar o código, realizar a função de busca por um determinado número que quando digitado pelo usuário, caso estiver cadastrado retorna outras informações na tela, como, nome e email referente aquele número, porém, tem a função de listar na tela os dados que foram cadastrados, mas no momento só consigo imprimir os números, o nome, e o email do cadastro não...pretendo tentar listar os cadastros da esquerda para a direita, em ordem crescente pelos números cadastrados. Função para inserir os dados (cadastrar): void Inserir(BuscaDados ** ElementoVarredura, int num, char nome, char email) { if (*ElementoVarredura == NULL) { BuscaDados *NovoElemento = NULL; NovoElemento = (BuscaDados *)malloc(sizeof(BuscaDados)); NovoElemento->esquerda = NULL; NovoElemento->direita = NULL; NovoElemento->num = num; strcpy(NovoElemento->nome, nome); strcpy(NovoElemento->email, email); *ElementoVarredura = NovoElemento; return; } if (num < (*ElementoVarredura)->num) { Inserir(&(*ElementoVarredura)->esquerda, num, nome, email); } else { if (num > (*ElementoVarredura)->num) { Inserir(&(*ElementoVarredura)->direita, num, nome, email); } } } Nessa função acima, essa parte está apresentando erros: strcpy(NovoElemento->nome, nome); strcpy(NovoElemento->email, email); Função para listar os dados: void ListarOrdem(BuscaDados *ElementoVarredura, int num) { if (ElementoVarredura) { ListarOrdem(ElementoVarredura->esquerda); printf("%d\t", ElementoVarredura->num); ListarOrdem(ElementoVarredura->direita); } } No caso com essa base só lista na tela os números que foram cadastrados, seus respectivos nomes e emails, não. Será triplicar essas instruções dentro do if? Pode me orientar?
  12. @isrnick A biblioteca string.h estava adicionada, fiz a seguintes alterações, mas continua a imprimir de forma embaralhada. void AdicionarMusica(char nm[20], char ab[20], float duracao) { Playlist_Musica *NovoElemento; NovoElemento = (struct Playlist_Musica *)malloc(sizeof(struct Playlist_Musica)); strcmp(NovoElemento->nm, nm); strcmp(NovoElemento->ab, ab); NovoElemento->duracao = duracao; if (Head == NULL) { Head = NovoElemento; Head->prox = NULL; } else { NovoElemento->prox = Head; Head = NovoElemento; } } void Playlist() { Playlist_Musica *ElementoVarredura; ElementoVarredura = (struct Playlist_Musica *)malloc(sizeof(struct Playlist_Musica)); ElementoVarredura = Head; //Retirei essa instrução porém não fez diferença. if (ElementoVarredura == NULL) { return; } while (ElementoVarredura != NULL) { printf("Musica: %s", ElementoVarredura->nm); printf("Artista/Banda: %s", ElementoVarredura->ab); printf("Duracao %f", ElementoVarredura->duracao); //Essa parte como eu disse, imprime normal, as intruções acima estão da mesma forma, porém da esse problema, será algo com os caracteres, string? ElementoVarredura = ElementoVarredura->prox; printf("\n"); }
  13. @isrnickEssa parte está imprimindo corretamente: printf("Duracao: %.2f", ElementoVarredura->duracao); agora os outros do tipo string...será alguma parte do elemento de varredura? A Struct : struct Playlist_Musica { char nm[20]; char ab[20]; float duracao; Playlist_Musica *prox; } *Head; Função para inserir: void AdicionarMusica(char nm[20], char ab[20], float duracao) { Playlist_Musica *NovoElemento; NovoElemento = (struct Playlist_Musica *)malloc(sizeof(struct Playlist_Musica)); NovoElemento->nm[20] = nm[20]; NovoElemento->nm[20] = ab[20]; NovoElemento->duracao = duracao; if (Head == NULL) { Head = NovoElemento; Head->prox = NULL; } else { NovoElemento->prox = Head; Head = NovoElemento; } }
  14. @isrnick Boa noite! É para implementar o código com a base da lista encadeada...retirei esse parte, mas acontece erro nessa parte: printf("Musica: %s\n", ElementoVarredura->nm);
  15. O nomes digitados no pelo usuário estão sendo listados na tela de maneira incorreta, depois de escolher a opção para listar...como devo proceder? Código: void Playlist() { Playlist_Musica *ElementoVarredura; ElementoVarredura = (struct Playlist_Musica *)malloc(sizeof(struct Playlist_Musica)); ElementoVarredura = Head; if (ElementoVarredura == NULL) { return; } while (ElementoVarredura != NULL) { printf("Musica: %s\n", ElementoVarredura->nm); printf("Artista/Banda: %s\n", ElementoVarredura->ab); printf("Duracao: %.2f", ElementoVarredura->duracao); ElementoVarredura = ElementoVarredura->prox; printf("\n"); } Ao listar os nomes digitados:

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!