Jump to content

ph1

Members
  • Content count

    11
  • Joined

  • Last visited

Community Reputation

0 Comum

About ph1

  • Birthday 12/11/1968

Informações Pessoais

  • Sexo
    Masculino
  • Localização
    Rio de Janeiro
  • Interesses
    Carros, técnologia, ficção científica, cinema, livros.
  1. Prazer a todos que responderem. Estou fazendo este codigo abaixo. Construtor e getters e setters montados corretamente. Porém tenho um método adicionarAluno e ele apresenta erro relacionado aos argumentos. Não entendi, verifiquei os argumentos passados e estão corretos. Não sei onde está o erro. Obrigado. package pck; import java.util.Scanner; import pck.Disciplina; import pck.Aluno; public class main { public static void main(String[] args) { Disciplina disciplina = new Disciplina(); //Aluno aluno = new Aluno(); //Aluno a1 = new Aluno("Ricardo", 31, 1); //Aluno a1 = null; //Aluno a2 = new Aluno("Ana Elisa", 17, 1); //Aluno a3 = new Aluno("Geovana", 18, 2); //Aluno a4 = new Aluno("Livia", 20, 2); Scanner sc = new Scanner(System.in); System.out.println("Enter com a quantidade de alunos: "); int a = sc.nextInt(); Aluno[] aluno = new Aluno[a]; for (a = 0;a < aluno.length;a++) { System.out.println("Entre com o nome, a idade e a disciplina: "); String nome = sc.nextLine(); int idade = sc.nextInt(); int turma = sc.nextInt(); String nomeDisciplina = sc.nextLine(); //disciplina.adicionarAluno(nome,idade,turma, nomeDisciplina); disciplina.adicionarAluno(aluno); } //disciplina.adicionarAluno(a2); //disciplina.adicionarAluno(a3); //disciplina.adicionarAluno(a4); System.out.println("Quantidade de alunos: " + disciplina.getNumAlunos()); disciplina.exibirInformacoes(); System.out.println("Antes de remover alunos. "); //removendo aluno //disciplina.removerAluno(a2); System.out.println("Despois de remover alunos. "); disciplina.exibirInformacoes(); System.out.println("Quantidade de alunos: " + disciplina.getNumAlunos() + "\n"); System.exit(0); } } package pck; public class Disciplina { private Aluno[] alunos; private Disciplina[] disciplina = new Disciplina[10]; private int posicao; public Disciplina() { this.alunos = new Aluno[40];//construtor, quando cria a disciplina, cria automaticamente um vetor Aluno de 40 posições. //Disciplina disciplina = new Disciplina(); } public int getNumAlunos() { int cont = 0; for (int i = 0; i < alunos.length; i++) { if(alunos[i] != null) {//se a posição é diferente de null não conta. cont++; } } return cont;//retorna o número de alunos. } /* public void adicionarAluno(Aluno aluno) { if(alunos != null){ this.alunos[posicao] = aluno; posicao = posicao + 1; //return true; } else { System.out.println("Valor deve ser preenchido"); //return false;//aluno não foi adicionado. } } */ public boolean adicionarAluno(Aluno aluno) { if(alunos != null){ this.alunos[posicao] = aluno; posicao = posicao + 1; return true; } else { System.out.println("Valor deve ser preenchido"); return false;//aluno não foi adicionado. } } public boolean removerAluno(Aluno aluno) {//verifica sem existe nome, idade, e turma, as três tem de ser verificadas, pois podem haver repetições. for(int i = 0; i < alunos.length; i++) {//para remover o aluno do vetor. Excluindo pelo nome, idade e turma. if((alunos[i].getNome() == aluno.getNome()) && (alunos[i].getIdade() == aluno.getIdade()) && (alunos[i].getTurma() == aluno.getTurma()) && (alunos[i].getNomeDisciplina() == aluno.getNomeDisciplina())) { alunos[i] = null;//remove um aluno return true; } //aqui não podemos, após esta chave, por causa da posição do vetor, por exemplo, aluno na posição 3. //por causa da iteração, o for não estará na posição 0. Pode estar em outra posição. Ele pode não estar na posição 0 e retorna false, //queremos que percorra todo o vetor e não encontrar a condição do if acima. } return false;//caso não encontre na primeira posição, pode estar em outra posição de 0 a 4. Tem de percorrer todo o vetor e não cair dentro do if. //por isso não tem o else e o return está fora da condição. False é porque não está no vetor. } //exibir as informações de todos os alunos. public void exibirInformacoes() { for (int i = 0; i < alunos.length;i++) { if (alunos[i] != null)//if para evitar exceção se a posição for null pela informação removida, pois a posição não tem mais dados, está vazia. System.out.println(alunos[i].mostrarInformacoes());//chama o método já pronto mostrarInformações que está na classe Aluno. Mostra somente posições com valores. } } } package pck; import pck.Disciplina; public class Aluno { private String nome, NomeDisciplina; private int idade, turma; int i = 0; public Aluno(String nome, int idade, int turma, String NomeDisciplina) { setNome(nome); //this.nome = nome; this.idade = idade; this.turma = turma; this.NomeDisciplina = NomeDisciplina; } public void setNome(String nome) {// atribui um valor para o atributo nome. if(nome == null || nome.isEmpty() || nome.isBlank()){ System.out.println("Valor deve ser preenchido"); return; } this.nome = nome; } public String getNome() { if(nome == null || nome.isEmpty() || nome.isBlank()){ System.out.println("Valor do nome não foi preenchido"); return ""; } return nome; } public String getNomeDisciplina() {//Disciplina return NomeDisciplina; } public void setNomeDisciplina(String NomeDisciplina) {//set de disciplina this.NomeDisciplina = NomeDisciplina; } public void setIdade(int idade) { this.idade = idade; } public int getIdade() { return idade; } public void setTurma(int turma) { this.turma = turma; } public int getTurma() { return turma; } public String mostrarInformacoes() { return "Nome: " + getNome() + "\nIdade: " + getIdade() + "\nTurma: " + getTurma() + "\n" + "##############"; } } Obrigado a todos.
  2. ph1

    saída do while

    boolean opcao = false; // tem que inicializar com true dentro do laço 'do-while' String resp; Scanner sc = new Scanner(System.in); do { // essas duas variáveis aqui podem ser declaradas dentro do while double media = 0, soma = 0; int j = 0; notas_aluno[j] = 0; for (int i = 0; i < nome_aluno.length; i++) { System.out.println("Insira o nome do aluno: "); nome_aluno[i] = sc.nextLine(); // usa sc.nextLine() //soma = 0; for (j = 0; j < notas_aluno.length; j++) // porque 4 ? usa o notas_aluno.length { System.out.println("Entre com a " + (j + 1) + " ª nota do aluno: " + (i + 1)); notas_aluno[j] = sc.nextDouble(); //notas_aluno[j] = Double.parseDouble(sc.nextLine()); // usa Double.parseDouble(sc.nextLine()) soma = soma + notas_aluno[j]; } media = soma / 5; // pq 5 ? usa o notas_aluno.length String aproveitamento = ""; if (media >= 9 && media <= 10) { aproveitamento = "A"; } else if (media >= 7.5 && media < 9) { // não precisa testar se é < 9 aproveitamento = "B"; } else if (media >= 6 && media < 7.5) { // não precisa testar se é < 7.5 aproveitamento = "C"; } else if (media >= 4 && media < 6) { // não precisa testar se é < 6 aproveitamento = "D"; } else if (media >= 0 && media < 4) { // não precisa testar se é < 4 aproveitamento = "E"; } System.out.println("Média: " + media); System.out.println("Conceito: " + aproveitamento); switch (aproveitamento) { case "A": case "B": case "C": System.out.println("APROVADO"); break; case "D": case "E": System.out.println("REPROVADO"); break; } System.out.print("Deseja Continuar? <s/n>: "); resp = sc.nextLine(); // usa sc.nextLine() if (resp.equalsIgnoreCase("n")) opcao = true; } }while (!opcao); String resp; boolean opcao = false; Scanner sc = new Scanner(System.in); do { System.out.print("Deseja Continuar? <s/n>: "); resp = sc.nextLine(); //} while (!opcao.equalsIgnoreCase(resp)); //while ( opcao != 'n'); // só pára se for == 'n' if(resp.equalsIgnoreCase("n")) { opcao = true; System.out.println("Saiu!"); //break; } }while(!opcao); ...> Prazer a todos. Interessante, seu eu tirar o código entre o d{ e a pergunta para sair, o while funciona perfeitamente, porém se eu retorno como o código para ler as notas e calcular o while não funciona para quando tiver menos de 50 alunos. Não consigo encontrar o erro. Obrigado.
  3. Prazer para todos. A questão três não é para fazer a divisão matemática como muitos pensam, mas mostrar a sequência dos números, mostrar os valores 500, 450, 400, 350... no denominador e 2 ou -5 no numerador. Como disse, não é para dividir 2/500 que vai dar um valor e sim mostrar os números sendo diminuídos de 50 em 50. Tentei implementar. O resultado no meu sai /02/02/02/02. Não consegui identificar o erro. No final deve mostrar 2/500. int num,denom,i; num = 0; denom = 0; for(i=1;i<=500;i++) { if (num % 2 == 0) { num = 2; denom = 0; cout << num << "/" << denom; } else { num = -5; denom = 50; cout << num << "/" << denom; } denom = denom + 50; } }
  4. //#include <iostream> #include <cstdlib> #include <stdio.h> using namespace std; int main() { setlocale(LC_ALL, "Portuguese"); int a,b,c,d,i,e,f,g,h; cout << "Entre com os valores da primeira fracao: "; cin >> a; cin >> b; cout << "Entre com os valores da segunda fracao: "; cin >> c; cin >> d; e = ((a*d)+(b*c)); f = b * d; congela aqui: cout << "A soma das fracoes é: " << e << "/" << f << "\n"; //i = 0; //if (e % i == 0) || (f % i == 0) //dessa forma não pode, parenteses isolados. if (e % i == 0 || f % i == 0)//correto //if ((e % i == 0) || (f % i == 0))//correto cout << "A simplificação nao é possivel\n"; /* for (i=2;i<=10;i++) { if((e % i != 0) || (f % i != 0)) { g = e / i; h = f / i; cout << "\nO resultado da simplificação da fracao é:\n " << g << "/" << h; } */ system("pause"); return 0; } } Tentei de vários maneiras, e descobri que quando chega para mostrar o resultado da fração, o programa congela, não sei qual o motivo, para mim está montado certo. Será que é o tipo de variável? Obrigado.
  5. ph1

    Sequência de números 36X37/1...

    Obrigado, vou alterar o código e ver se funciona.
  6. ph1

    Série de sequência numérica

    Fiz o exercício, mas não sei porque não está funcionando. { Escreva um algoritmo que calcule e escreva a soma dos dez primeiros termos da seguinte serie: 2/500 - 5/450 + 2/400 - 5/350 + ... } #include <iostream> #include <cstdlib> #include <stdio.h> using namespace std; int main() { setlocale(LC_ALL, "Portuguese"); int i, denominador; float s; denominador = 500; s = 0; for (i=1;i<=10;i++) { if ((i % 2) != 0) { s = s + (2/denominador); } else { s = s - (5/denominador); } denominador = denominador - 50; cout << s << "/" << denominador; } return 0; } Dá sempre 0250. Não descubro o erro.
  7. Eu estou no início do treinamento. Fiz um pequeno algoritmo no qual há uma sequência de números e começa de 36 X 37 / 2 + 35 X 36 /3 + ... 1 X 2 / 37. int deno,a,b; a = 37; b = 38; for (deno=1;deno<=38;deno++){ a = a - 1; b = b - 1; cout << a << " X " << b << "/" << deno << "\n"; O problema está no final da impressão, quando chega ao final é impresso -1 X 0 / 38. Quero que termine com 0 X 0 / 38.
  8. #include <iostream> #include <cstdlib> #include <locale.h> using namespace std; int main(void) { setlocale(LC_ALL, "Portuguese"); float porcentagem,contador,acumulador,altura,menor,maior,media,altura_t; int resposta,resp,i,homem,pessoas,contm; porcentagem, contador, acumulador, altura,menor,maior,media,altura_t=0; contm = 0; resp = 0; resposta = 0; homem = 0; cout << "Entre com a altura, digite -1 para sair: "; cin >> altura_t; maior = altura_t; menor = altura_t; while (altura_t != -1) { if (altura_t == 0) { maior = altura_t; menor = altura_t; altura_t++; } if (altura_t > maior) maior = altura_t; else if (altura_t < menor) menor = altura_t; cout << "Entre com a altura, digite -1 para sair: "; altura_t++; cin >> altura_t; } while (resposta != -1) { if (resposta != -1) if (resposta == 1) { acumulador = acumulador + altura; //altura++; cout << "Entre com a altura da mulher, digite -1 para sair: "; contm++; cin >> altura; } else if (resposta == 2) { homem++; } cout << "Para sair digite -1, dê enter para continuar. \n"; cout << "Escolha, 1 para mulher, 2 para homens: \n"; cin >> resposta; } porcentagem = altura_t * 100 / contm; //está dando negativo no resultado. //porcentagem = (acumulador * contm ) / 100; //z = (x / y) * 100; media = acumulador / contm; cout << "A maior altura é: " << maior << " e a menor altura é: " << menor << "\n"; cout << "O número de homens é de:" << homem << "\n"; cout << "A porcentagem de mulheres em relação ao total de pessoas é de: " << porcentagem << "\n"; cout << "A média de altura das mulheres é de: " << media << endl; } Desculpe se coloque este tópico, mas acho que não coloquei anteriormente. Minha dúvida é porque a porcentagem de mulheres dentro do total de pessoas está dando negativo. Obrigado.
  9. ph1

    Dificuldade em exercício

    Perfeito, entendi a lógica do programa. Tudo é feito encima de i e não de n, n é só para colocar um limite no número de iterações. Muito obrigado pela ajuda. Fiz um rascunho e um tipo de teste de mesa. Obrigado.
  10. ph1

    Dificuldade em exercício

    Calcular e imprimir a média aritmética dos números inteiros positivos ímpares inferiores ou iguais a um número N lido inicialmente. #include <cmath> // ou <math.h> #include <iostream> #include <cstdlib> #include <locale.h> #include <iomanip> using namespace std; int main() { setlocale(LC_ALL, "Portuguese"); float m,acm; int cont,n; acm = 0; cout << "Entre com um número qualquer.:\t"; cin >> n; for (cont = 0;cont <= n;n++) { if ((n % 2)==1) { acm = acm + 1; m = acm / n; } else if ((n % 2) == 0) { cout << "O número não é ímpar."; } } cout << "A média dos" << n << " números ímpares é de:\t" << m; } Estou com com dificuldade nesse exercício. Porque está dando loop infinito? Não descubro o erro.
  11. Prazer para todos. Fiz este exercício para calcular as calorias gastas em uma refeição. Entra com prato, bebida e sobremesa. O problema está em comparar as strings. O VisualG não aceita a comparação. Por exemplo, entro com a string carne, o programa diz: esperava encontrar então na linha se (prato = carne) então. Não há explicação possível para esse problema. Não sei onde está o erro, para mim, a lógica está correta. Obrigado. Algoritmo "semnome" // Disciplina : [Linguagem e Lógica de Programação] // Professor : // Descrição : Aqui você descreve o que o programa faz! (função) // Autor(a) : Nome do(a) aluno(a) // Data atual : 02/10/2017 Var // Seção de Declarações das variáveis cal1,cal2,cal3,p1,p2,p3,caltotal:inteiro prato,bebida,sobremesa:caractere Inicio // Seção de Comandos, procedimento, funções, operadores, etc... escreval("Entre com o prato") leia (prato) escreval(prato) se (prato = carne) então cal1 <- 350 senão se (prato = peixe) então cal1 <- 230 senão se (prato = frango) então cal1 <- 250 senão cal <- 180 fimse fimse fimse escreval("Entre com a bebida") leia (bebida) se (bebida = cha) então cal2 <- 20 senão se (bebida = suco de laranja) então cal2 <- 100 senão se (bebida = suco de melao) então cal2 <- 100 senão se (bebida = refrigerante diet) então cal <- 65 fimse fimse fimse fimse escreval("Entre com a sobremesa") leia (sobremesa) se (sobremesa = abacaxi) então cal3<- 75 senão se (sobremesa = sorvete diet) então cal <- 110 senão se (sobremesa = mouse diet) então cal3 <- 170 senão se (sobremesa = mouse chocolate) então cal <- 200 fimse fimse fimse fimse senão escreval ("Opção inválida.") caltotal <- cal1 + cal2 + cal3 escreval("O prato escolhido foi: ",prato) escreval("A bebida escolhida foi: ",bebida) escreval("A sobremesa escolhida foi: ",sobremesa) escreval("O total de calorias é de: ",caltotal) Fimalgoritmo
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.