Ir ao conteúdo
  • Cadastre-se

AdrianoSiqueira

Membros Plenos
  • Total de itens

    85
  • Registro em

  • Última visita

  • Qualificações

    N/D
  1. Cria uma função para determinar se um número é primo ou não, por exemplo: bool ePrimo(int numero){ bool primo = false; // Faz os devidos testes return primo; } Isso vai ajudar a organizar seu código.
  2. Executando esse código acontece a mesma coisa? #include <stdio.h> #include <stdlib.h> int main() { return 0; }
  3. Na classe View, coloca uma condição depois de pegar cada um dos nomes: String nome1 = JOptionPane.showInputDialog(null, "Digite o primeiro nome", "Informação", JOptionPane.PLAIN_MESSAGE); if (nome1 == null) { System.exit(0); } String nome2 = JOptionPane.showInputDialog(null, "Digite o segundo nome", "Informação", JOptionPane.PLAIN_MESSAGE); if (nome2 == null) { System.exit(0); } // Continua seu código
  4. @Martinho Sinatra Até onde eu sei, não é possível pegar um vetor como entrada do usuário. Você tem que pegar cada um dos valores e ir armazenando dentro do vetor. Seria algo assim: int vetor[10]; int entrada = 0; for (int i = 0; i < 10; ++i) { printf("Digite o valor[%i]: ", (i + 1)); scanf("%i", &entrada); vetor[i] = entrada; } E para testar o valor, você deve informar a posição do vetor que esse valor está: for (int i = 0; i < 10; ++i) { printf("--------------------------------- \n"); printf("Posição: %2i - Valor: %i", i, vetor[i]); if (vetor[i] % 12 == 0){ printf("É múltiplo de 12. \n"); } else { printf("Não é múltiplo de 12. \n"); } printf("--------------------------------- \n"); }
  5. Segue uma versão funcional: #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #include <string.h> struct Campo { char simbolo; bool disponivel; }; struct Campo c1; struct Campo c2; struct Campo c3; struct Campo c4; struct Campo c5; struct Campo c6; struct Campo c7; struct Campo c8; struct Campo c9; struct Jogador { char nome[10]; int pontos; }; struct Jogador j1; struct Jogador j2; int main() { int checarFimPartida(int jogadas); bool jogar(int posicao, bool vezJogador1); bool jogarDeNovo(); void cadastrarJogadores(); void checarCampeao(); void desenharTabuleiro(); void mostrarRelatorio(int status); void reiniciarTabuleiro(); cadastrarJogadores(); do { bool vezJogador1 = true; int jogadas = 0; int status = -1; int posicao = 0; reiniciarTabuleiro(); while (jogadas < 9 && status == -1) { do { desenharTabuleiro(); printf("%s > ", (vezJogador1 ? j1.nome : j2.nome)); scanf("%i", &posicao); vezJogador1 = jogar(posicao, vezJogador1); } while (posicao < 1 || posicao > 9); ++jogadas; status = checarFimPartida(jogadas); if (status == 1) j1.pontos++; else if (status == 2) j2.pontos++; } desenharTabuleiro(); mostrarRelatorio(status); } while (jogarDeNovo()); checarCampeao(); return 0; } void cadastrarJogadores() { strcpy(j1.nome, "Jogador 1"); j1.pontos = 0; strcpy(j2.nome, "Jogador 2"); j2.pontos = 0; } int checarFimPartida(int jogadas) { /* * -1 - Jogo continua * 0 - Empate * 1 - Jogador 1 * 2 - Jogador 2 */ int situacao; if ((c1.simbolo == 'X' && c2.simbolo == 'X' && c3.simbolo == 'X') || (c4.simbolo == 'X' && c5.simbolo == 'X' && c6.simbolo == 'X') || (c7.simbolo == 'X' && c8.simbolo == 'X' && c9.simbolo == 'X') || (c1.simbolo == 'X' && c4.simbolo == 'X' && c7.simbolo == 'X') || (c2.simbolo == 'X' && c5.simbolo == 'X' && c8.simbolo == 'X') || (c3.simbolo == 'X' && c6.simbolo == 'X' && c9.simbolo == 'X') || (c1.simbolo == 'X' && c5.simbolo == 'X' && c9.simbolo == 'X') || (c7.simbolo == 'X' && c5.simbolo == 'X' && c3.simbolo == 'X')) { situacao = 1; } else if ((c1.simbolo == 'O' && c2.simbolo == 'O' && c3.simbolo == 'O') || (c4.simbolo == 'O' && c5.simbolo == 'O' && c6.simbolo == 'O') || (c7.simbolo == 'O' && c8.simbolo == 'O' && c9.simbolo == 'O') || (c1.simbolo == 'O' && c4.simbolo == 'O' && c7.simbolo == 'O') || (c2.simbolo == 'O' && c5.simbolo == 'O' && c8.simbolo == 'O') || (c3.simbolo == 'O' && c6.simbolo == 'O' && c9.simbolo == 'O') || (c1.simbolo == 'O' && c5.simbolo == 'O' && c9.simbolo == 'O') || (c7.simbolo == 'O' && c5.simbolo == 'O' && c3.simbolo == 'O')) { situacao = 2; } else if (jogadas == 9) { situacao = 0; } else { situacao = -1; } return situacao; } void checarCampeao() { printf("\n"); printf("------------------------------------------------------------- \n"); printf("Placar: \n"); printf(" %10s > %i pontos \n", j1.nome, j1.pontos); printf(" %10s > %i pontos \n\n", j2.nome, j2.pontos); if (j1.pontos == j2.pontos) printf(">> Empate entre %s e %s. Parabéns aos dois. << \n", j1.nome, j2.nome); else printf(">> Parabéns %s, você venceu o jogo. << \n", (j1.pontos > j2.pontos ? j1 : j2).nome); printf("------------------------------------------------------------- \n\n"); } void desenharTabuleiro() { system("clear"); printf("-------------------------------------- \n"); printf(" Jogo da Velha \n"); printf("-------------------------------------- \n\n"); printf(" 1 | 2 | 3 %c | %c | %c \n", c1.simbolo, c2.simbolo, c3.simbolo); printf("---*---*--- ---*---*--- \n"); printf(" 4 | 5 | 6 %c | %c | %c \n", c4.simbolo, c5.simbolo, c6.simbolo); printf("---*---*--- ---*---*--- \n"); printf(" 7 | 8 | 9 %c | %c | %c \n\n", c7.simbolo, c8.simbolo, c9.simbolo); } bool jogar(int posicao, bool vezJogador1) { switch (posicao) { case 1: if (c1.disponivel) { c1.simbolo = vezJogador1 ? 'X' : 'O'; c1.disponivel = false; vezJogador1 = !vezJogador1; } break; case 2: if (c2.disponivel) { c2.simbolo = vezJogador1 ? 'X' : 'O'; c2.disponivel = false; vezJogador1 = !vezJogador1; } break; case 3: if (c3.disponivel) { c3.simbolo = vezJogador1 ? 'X' : 'O'; c3.disponivel = false; vezJogador1 = !vezJogador1; } break; case 4: if (c4.disponivel) { c4.simbolo = vezJogador1 ? 'X' : 'O'; c4.disponivel = false; vezJogador1 = !vezJogador1; } break; case 5: if (c5.disponivel) { c5.simbolo = vezJogador1 ? 'X' : 'O'; c5.disponivel = false; vezJogador1 = !vezJogador1; } break; case 6: if (c6.disponivel) { c6.simbolo = vezJogador1 ? 'X' : 'O'; c6.disponivel = false; vezJogador1 = !vezJogador1; } break; case 7: if (c7.disponivel) { c7.simbolo = vezJogador1 ? 'X' : 'O'; c7.disponivel = false; vezJogador1 = !vezJogador1; } break; case 8: if (c8.disponivel) { c8.simbolo = vezJogador1 ? 'X' : 'O'; c8.disponivel = false; vezJogador1 = !vezJogador1; } break; case 9: if (c9.disponivel) { c9.simbolo = vezJogador1 ? 'X' : 'O'; c9.disponivel = false; vezJogador1 = !vezJogador1; } break; } return vezJogador1; } bool jogarDeNovo() { char opcao = ' '; printf("\n"); while (true) { printf("Jogar novamente? [ S / N ]: "); scanf(" %c", &opcao); if (opcao == 's' || opcao == 'S') return true; else if (opcao == 'n' || opcao == 'N') return false; } } void mostrarRelatorio(int status) { switch (status) { case 0: printf("A partida empatou entre %s e %s. \n", j1.nome, j2.nome); break; case 1: printf("%s venceu a partida. \n", j1.nome); break; case 2: printf("%s venceu a partida. \n", j2.nome); break; default: printf("[ E ]: Valor inválido do status: '%i'. \n", status); exit(1); } } void reiniciarTabuleiro() { c1.simbolo = ' '; c1.disponivel = true; c2.simbolo = ' '; c2.disponivel = true; c3.simbolo = ' '; c3.disponivel = true; c4.simbolo = ' '; c4.disponivel = true; c5.simbolo = ' '; c5.disponivel = true; c6.simbolo = ' '; c6.disponivel = true; c7.simbolo = ' '; c7.disponivel = true; c8.simbolo = ' '; c8.disponivel = true; c9.simbolo = ' '; c9.disponivel = true; }
  6. @Leandro20x Poderia sem problema nenhum. É que pelo contexto do problema, você está desenvolvendo um programa para aplicação científica, então usei o double porque ele possui uma precisão maior.
  7. ++x é o mesmo que x++, geralmente a diferença só é vista em algumas situações, no caso desse projeto não faz diferença de qual usar. x -= y é a abreviação de x = x - y. E a lógica segue para todas as variantes (+=, -=, *=, /=, %=).
  8. @gramosiri Rapaz, que trabalho! Mas parece que deu certo. Testa aí com o máximo de valores ímpares possíveis e veja se está tudo certo: #include <stdio.h> #include <stdlib.h> int main() { int nota_2 = 0; int nota_5 = 0; int nota_10 = 0; int nota_20 = 0; int nota_50 = 0; int nota_100 = 0; int valor = 21; // Pode receber do usuário int valorCalculado = valor; // É usado para determinar a quantidade de notas de 2 e 5 sem perder o valor original // Se o valor for ímpar, então começa a contar da nota de 5. if (valor % 2 != 0) { if (valor < 5) { printf("Não é possível calcular esse valor."); return 1; } else if (valor % 5 == 0) { // Se o valor for múltiplo de cinco, então apenas notas de 5 já resolvem. while (valorCalculado > 0) { ++nota_5; valorCalculado -= 5; } } else { /* * Se for ímpar, precisamos tirar notas de 5 até que ele se torne par, * depois as notas de 2 resolvem o resto. * * O -2 da primeira condição verifica se, reservando uma nota de 2, * ainda tem a possibilidade de remover alguma nota de 5. * * Já a segunda condição verifica se reservando uma nota de 2, o valor * resultante é ímpar. Porque se não for, as notas de 2 resolvem. */ while ((valorCalculado - 2) >= 5 && (valorCalculado - 2) % 2 != 0) { ++nota_5; valorCalculado -= 5; } } } /* * Se o valor for par, ele será totalmente calculado com notas de 2 e * posteriormente, se houver a possibilidade, essas notas serão trocadas * por notas mais altas. */ while (valorCalculado >= 2) { ++nota_2; valorCalculado -= 2; } /* * A partir daqui começa o processo de troca das notas por notas mais altas. * A cada cinco notas de 2 trocamos por uma nota de 10. */ while (nota_2 >= 5) { nota_2 -= 5; ++nota_10; } // A cada duas notas de 5 trocamos por uma de 10. while (nota_5 >= 2) { nota_5 -= 2; ++nota_10; } // A cada duas notas de 10 trocamos por uma de 20. while (nota_10 >= 2) { nota_10 -= 2; ++nota_20; } // A cada duas notas de 20 com uma nota de 10 trocamos por uma de 50. while (nota_20 >= 2 && nota_10 >= 1) { nota_20 -= 2; nota_10 -= 1; ++nota_50; } // A cada cinco notas de 20 trocamos por uma de 100. while (nota_20 >= 5) { nota_20 -= 5; ++nota_100; } // A cada duas notas de 50 trocamos por uma de 100. while (nota_50 >= 2) { nota_50 -= 2; ++nota_100; } printf("Valor: R$ %i \n", valor); printf("%i de R$ 2 (= R$ %i) \n", nota_2, (nota_2 * 2)); printf("%i de R$ 5 (= R$ %i) \n", nota_5, (nota_5 * 5)); printf("%i de R$ 10 (= R$ %i) \n", nota_10, (nota_10 * 10)); printf("%i de R$ 20 (= R$ %i) \n", nota_20, (nota_20 * 20)); printf("%i de R$ 50 (= R$ %i) \n", nota_50, (nota_50 * 50)); printf("%i de R$ 100 (= R$ %i) \n", nota_100, (nota_100 * 100)); return 0; }
  9. Vish, você tem razão!!! Nem pensei nessa possibilidade. Foi mal... Tenta o seguinte: analisa a entrada do usuário, caso seja par, comece a contar a partir da nota mais alta normalmente. Caso seja ímpar, comece do 5 e caso esse 5 apareça mais uma vez, troque por 10.
  10. Esquece um pouco a programação. Pensa comigo: "Como chegar no número 11, somando apenas os números [2, 5, 10, 20, 50, 100]?"
  11. Tenta assim: #include <stdio.h> #include <stdlib.h> int main() { double massaInicial = 0.0; double massaFinal = 0.0; int segundos = 0; int minutos = 0; int horas = 0; printf("Massa (g) do material: "); scanf("%lf", &massaInicial); massaFinal = massaInicial; // Executa até que a massa seja MENOR que 0.5 // Para que o programa pare quando a massa FOR 0.5, remova o sinal de igual for (segundos = 0; massaFinal >= 0.5; segundos += 50) massaFinal /= 2; minutos = segundos / 60; segundos %= 60; horas = minutos / 60; minutos %= 60; printf("--------------------------- \n"); printf("Massa inicial: %lf \n", massaInicial); printf(" Massa atual: %lf \n", massaFinal); printf(" Tempo: %2i:%2i:%2i \n", horas, minutos, segundos); printf("--------------------------- \n"); return 0; }
  12. Não entendi o porque de pegar duas entradas do usuário. Pelo que eu entendi do enunciado, você deve pegar a entrada do usuário e depois imprimir de forma intercalada as palavras, não é isso? Veja se esse código te ajuda de alguma forma: import java.util.Scanner; public class Principal { public static void main(String[] args) { String entrada; String saida; String[] palavras; do { System.out.print("Sua frase: "); entrada = new Scanner(System.in).nextLine(); if (!entrada.equalsIgnoreCase("sair")) { palavras = entrada.split(" "); saida = ""; for (int i = 0; i < palavras.length; i += 2) saida += palavras[i] + " "; saida = saida.trim(); System.out.println("Saída: \"" + saida + "\""); } } while (!entrada.equalsIgnoreCase("sair")); System.exit(0); } }
  13. https://www.youtube.com/channel/UCjF0OccBT05WxsJb2zNkL4g Procura a playlist Maratona Java. É um curso excelente.
  14. Pensa na interface da seguinte forma: "A classe que implementa a interface sabe o que tem que fazer, mas não sabe como." Você já deve ter percebido que os métodos das interfaces não possuem corpo, apenas a declaração. Isso significa que a classe que implementar essa interface já sabe o que tem que fazer porque o método já foi declarado, mas não sabe como e é por isso que você deve implementar as funções. adicionado 29 minutos depois Segue um exemplo funcional: Interface FormaGeometrica: package pacote; /** * A classe que implementar essa interface já sabe o que tem que fazer: * - calcular a área da figura * - calcular o perímetro da figura * * Mas ainda não sabe como vai fazer isso. É por isso que as funções não tem corpo. */ public interface FormaGeometrica { double calcularArea(); double calcularPerimetro(); } classe Quadrado: package pacote; public class Quadrado implements FormaGeometrica { private double lado; public Quadrado() { } public Quadrado(double lado) { this.lado = lado; } public double getLado() { return lado; } public void setLado(double lado) { this.lado = lado; } @Override public double calcularArea() { return lado * lado; } @Override public double calcularPerimetro() { return lado * 4; } } classe Circulo: package pacote; public class Circulo implements FormaGeometrica { private double raio; public Circulo() { } public Circulo(double raio) { this.raio = raio; } public double getRaio() { return raio; } public void setRaio(double raio) { this.raio = raio; } @Override public double calcularArea() { return Math.PI * (raio * raio); } @Override public double calcularPerimetro() { return 2 * Math.PI * raio; } } classe Principal: package pacote; public class Principal { public static void main(String[] args) { FormaGeometrica quadrado1 = new Quadrado(3); FormaGeometrica quadrado2 = new Quadrado(12); FormaGeometrica quadrado3 = new Quadrado(6); FormaGeometrica quadrado4 = new Quadrado(2); FormaGeometrica circulo1 = new Circulo(3); FormaGeometrica circulo2 = new Circulo(12); FormaGeometrica circulo3 = new Circulo(6); FormaGeometrica circulo4 = new Circulo(2); System.out.println(">> Área quadrados"); exibirArea(quadrado1); exibirArea(quadrado2); exibirArea(quadrado3); exibirArea(quadrado4); System.out.println(">> Área circulos"); exibirArea(circulo1); exibirArea(circulo2); exibirArea(circulo3); exibirArea(circulo4); System.out.println(">> Perímetro quadrados"); exibirPerimetro(quadrado1); exibirPerimetro(quadrado2); exibirPerimetro(quadrado3); exibirPerimetro(quadrado4); System.out.println(">> Perímetro circulos"); exibirPerimetro(circulo1); exibirPerimetro(circulo2); exibirPerimetro(circulo3); exibirPerimetro(circulo4); } private static void exibirArea(FormaGeometrica forma) { System.out.println("Área: " + forma.calcularArea()); } private static void exibirPerimetro(FormaGeometrica forma) { System.out.println("Perímetro: " + forma.calcularPerimetro()); } } Perceba na classe Principal que os métodos não especificam que o argumento deve ser um quadrado ou um círculo, apenas diz que deve ser uma forma geométrica, ou seja, qualquer classe que implemente a interface FormaGeometrica será aceita por esse método. Isso evita que você tenha que criar uma função para o quadrado, outra para o círculo, e assim por diante.
  15. Pelo que eu entendi, você vai precisar de três arquivos: main.cpp: É a sua classe principal. Signo.h: Possui os protótipos dos métodos da classe Signo. Signo.cpp: Possui a implementação de todos os métodos declarados na classe Signo.h. Vamos aos códigos: Signo.h #include <iostream> class Signo { private: std::string nome; std::string qualidade; public: Signo(); Signo(std::string nome, std::string qualidade); std::string getNome(); void setNome(std::string nome); std::string getQualidade(); void setQualidade(std::string qualidade); }; Signo.cpp #include "Signo.h" Signo::Signo() { setNome(""); setQualidade(""); } Signo::Signo(std::string nome, std::string qualidade) { setNome(nome); setQualidade(qualidade); } std::string Signo::getNome() { return nome; } void Signo::setNome(std::string nome) { this->nome = nome; } std::string Signo::getQualidade() { return qualidade; } void Signo::setQualidade(std::string qualidade) { this->qualidade = qualidade; } main.cpp #include <iostream> #include "Signo.h" int main() { // Relaciona o mês com a quantidade de dias int relacaoDiaMes[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // Cria a coleção de signos disponíveis Signo signos[12] = { Signo("Capricórnio", "Bonito"), Signo("Aquário", "Molhadinho"), Signo("Peixes", "Medroso"), Signo("Áries", "Cornélio"), Signo("Touro", "Chifrudo"), Signo("Gêmeos", "Plagiador"), Signo("Câncer", "Doente"), Signo("Leão", "Nervoso"), Signo("Virgem", "Raro"), Signo("Libra", "Justo"), Signo("Escorpião", "Perigoso"), Signo("Sagitário", "Não sei") }; int dia; int mes; std::cout << "Dia de nascimento: "; std::cin.ignore(0, '\n'); // Limpa o buffer para evtar erros de leitura std::cin >> dia; std::cout << "Mês de nascimento: "; std::cin.ignore(0, '\n'); std::cin >> mes; if (mes < 0 || mes > 12) { std::cerr << "[ E ]: O mês de nascimento não é válido." << "\n"; return 1; // Qualquer coisa diferente de 0 indica algum tipo de problema } if (dia <= 0 || dia > relacaoDiaMes[mes - 1]) { std::cerr << "[ E ]: O dia de nascimento não é válido." << "\n"; return 2; } std::cout << "---------------------------------------" << "\n" << " Seu signo é: " << signos[mes - 1].getNome() << "\n" << "Sua qualidade é: " << signos[mes - 1].getQualidade() << "\n" << "---------------------------------------" << "\n"; return 0; } Veja se isso atende à suas necessidades.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!