Ir ao conteúdo
  • Cadastre-se

lsnkesp

Membro Pleno
  • Posts

    65
  • Cadastrado em

  • Última visita

Tudo que lsnkesp postou

  1. Tô fazendo o algoritmo: List<Aluno> listaAluno = new ArrayList<>(); System.out.println("ID - 0..n"); int ialuno; ialuno = ler.nextInt(); if (listaAluno.contains(ialuno)) { System.out.println(listaAluno.get(ialuno).getRelatorioAluno()); } else { System.out.println("errado."); } Esse é um caso do menu que estou trabalhando, só que estou tentando utilizar o contains() do List e ele vai direto para o else e exibe a mensagem "errado", que é uma alternativa para evitar o "NullPointerException", alguém sabe por quê? suponhamos que inseri um aluno na lista, aí verifico se ele existe através do contains, se não existir, ele exibe a mensagem "errado", no entanto, para os dois casos, está exibindo "errado", sendo que não deveria ser assim, não sei onde posso estar errando, já vi de tudo, tentei testar, também, fazendo: if(listaAluno.get(ialuno)!=null) { porém, está exibindo a seguinte exceção: ah, consegui resolver utilizando: if (ialuno >= listaAluno.size()) { System.out.println("errado."); } else { System.out.println(listaAluno.get(ialuno).getRelatorioAluno()); } Caso alguém esteja com um problema semelhante, acho que pode ajudar, obrigada de qualquer forma.
  2. Entendi, eu tenho outra dúvida, a respeito da mesma atividade em que estou a desenvolver, para mim tornar um atributo imutável eu devo usar o modificador "final" na declaração de varíavel, certo? Exemplo: private String nome; private String dataNascimento; private final String rg; A ideia é torná-lo impossível de editar após fornecer o seu valor, desse modo eu não utilizaria um método setRg() pra inserir o RG e sim forneceria no momento de leitura ao ir cadastrar um aluno (que é a classe a ser trabalhada), é apenas uma dúvida a ser confirmada para não ter erros, pois é dessa forma que estou fazendo, obrigado.
  3. Estou desenvolvendo uma atividade e nela diz que alguns dos atributos de uma classe precisam ser obrigatórios, então eis a dúvida, atributos obrigatorios somente serão obrigatorios se estiverem no construtor? Será necessário eu criar um construtor para a classe para torná-los obrigatório?
  4. @mauro_b caramba, eu nem me toquei. OBRIGADA.
  5. @arfneto quero dizer a parte de usar: "sortK K [N]" para definir K e N, ficou meio confusa, mas deu para entender.
  6. @arfneto Isso é muito interessante, não sabia que dava para usar assim, é melhor, vou tentar pôr em prática nos meus programas. Aliás, você teria algum livro que poderia me indicar? É sempre bom aprender mais.
  7. Então, alguém sabe onde posso estar errando para a média não ser ordenada da forma correta? Exemplo: Quantidade: 5 6 7 8 5 8 4 3 2 1 7 6 8 6.5 7 9 4 3 2 7 9 Notas (gerais): [6.5] [4.3] [5.5] [6.6] [5.3] Notas (ordenadas): [4.3] [5.0] [5.0] [6.0] [6.0] Eu ordeno, mas não exibe as notas ordenadas IGUAIS à media obtida. #include <stdio.h> int main(void) { int qA; printf("Quantidade: "); scanf("%d", &qA); double mediaAluno[qA], soma = 0.0, n1, n2, n3, n4; for (int i = 0; i < qA; ++i) { scanf("%lf %lf %lf %lf", &n1, &n2, &n3, &n4); soma += n1+n2+n3+n4; mediaAluno[i] = soma/4; soma = 0.0; } printf("Notas (gerais): "); for (int i = 0; i < qA; ++i) { printf("[%.1lf] ", mediaAluno[i]); } for(int i = 1; i < qA; i++){ for(int j = 0; j < qA-1; j++){ if (mediaAluno[j]>mediaAluno[j+1]) { int tr = mediaAluno[j]; mediaAluno[j] = mediaAluno[j+1]; mediaAluno[j+1] = tr; } } } printf("\n"); printf("Notas (ordenadas): "); for (int i = 0; i < qA; ++i) { printf("[%.1lf] ", mediaAluno[i]); } return (0); }
  8. obrigada, você foi de grande ajuda, de verdade, estudo tudo sozinha e ainda é meio complicado pra mim. #include <stdio.h> int selectSort (int, int*, int); int main(void) { int N, K; printf("\nNo. elementos: "); scanf("%d", &N); int vetor[N]; for (int i = 0; i < N; ++i) { printf("[%d] ", i); scanf("%d", &vetor[i]); } for (int i = 0; i < N; i++) { printf("[%d] ", vetor[i]); } printf("K: "); scanf("%d", &K); for (int i = 0; i < N; i++) { printf("[%d] ", vetor[i]); } printf("\n"); printf("%do menor valor: %d", K, selectSort(K, vetor, N)); return (0); } int selectSort(int k, int vetor[], int N) { for(int i = 0; i < N-1; i++) { int menor = i; for (int j = i+1; j < N; j++) if (vetor[j] < vetor[menor]) menor = j; if (i==(k-1)) { if (menor == i) return vetor[i]; else return vetor[menor]; }; if (menor != i) { int t = vetor[i]; vetor[i] = vetor[menor]; vetor[menor] = t; } }; return vetor[N-1]; } Esse é o código final, obrigada pelas dicas e tempo dedicado para fazê-las, foram cruciais.
  9. #include <stdio.h> #define m 8 int selectSort (int*, int); int main(void) { int K, vetor[m] = {7, 1, 3, 10, 17, 2, 21, 9}; /*for (int i = 0; i < m; ++i) { printf("[%d] ", i); scanf("%d", &vetor[i]); }*/ for (int i = 0; i < m; i++) { printf("[%d] ", vetor[i]); } printf("K: "); int r = scanf("%d", &K); printf("scanf() retornou %d, valor = %d\n", r, K); for (int i = 0; i < m; i++) { printf("[%d] ", vetor[i]); } printf("\n"); printf("%do menor valor: %d", K, selectSort(vetor, K)); return (0); } int selectSort(int *vetor, int k) { int menor, t, j, i, c=0; for(j = 0; j < m-1; j++) { menor = j; for (i = j+1; i < m; i++) { if (vetor[i] < vetor[menor]) { menor = i; if (i==(k-1)) { if (menor == i) { return vetor[i]; } else { return vetor[menor]; } } } } /*if (menor != j) { t = vetor[j]; vetor[j] = vetor[menor]; vetor[menor] = t; }*/ if (j == (k-1)) { return vetor[j]; } } } Fiz o que você disse, mas ainda não consegui encontrar a solução exata para o problema, entendi o que você quis dizer, posso estar errando, mas não estou sabendo como corrigir, enfim, obrigada de qualquer maneira.
  10. @arfneto Entendi, eu não tenho um livro, estudo pesquisando. Agradeço os pontos citados, me ajudou muito.
  11. O que você quer dizer com este ponto? não compreendi. scanf(): SEMPRE teste o retorno de scanf(). Qual o propósito de continuar com o programa se não ler K? Mexi no código, agora está mais limpo. Não consegui colocar o main() como primeira função, é como se o selectSort não existisse ao ser chamado. Aliás, por que eu não deveria usar variáveis globais? (ainda sou leiga nisso, já usei algumas vezes sem erros.). #include <stdio.h> #define m 8 int selectSort(int *vetor, int k) { int me, t; for(int j = 0; j < m-1; j++) { me = j; for (int i = j+1; i < m; i++) { if (vetor[i] < vetor[me]) { me = i; } } if (me != j) { t = vetor[j]; vetor[j] = vetor[me]; vetor[me] = t; } if (j == k) { return vetor[j]; } } } int main(void) { int K, vetor[m]; for (int i = 0; i < m; ++i) { printf("[%d] ", i); scanf("%d", &vetor[i]); } printf("K: "); scanf("%d", &K); for (int i = 0; i < m; i++) { printf("[%d] ", vetor[i]); } printf("\n"); printf("%do menor valor: %d", K, selectSort(vetor, K)); return (0); }
  12. #include <stdio.h> #include <stdlib.h> #include <time.h> #define TAM 8 int selectSort(int *vetor, int k) { int me, aux, i, troca; for(aux=0; aux < TAM-1; aux++) { me = aux; for (i=aux+1; i < TAM; i++) { if (vetor[i] < vetor[me]) { me = i; } } if (me != aux) { troca = vetor[aux]; vetor[aux] = vetor[me]; vetor[me] = troca; } if (aux==k) { printf("\n%d\n", vetor[aux]); } } return (0); } int main() { int pegaK, aux, vetor[TAM] = {7, 1, 3, 10, 17, 2, 21, 9}; //srand (time(NULL)); printf("\nK:\n"); scanf("%d", &pegaK); /*for (aux=0; aux < TAM; aux++) { vetor[aux] = (rand() % 89) + 10; printf("[%d] ", vetor[aux]); }*/ printf("\n\n"); for (aux=0; aux < TAM; aux++) { printf("[%d] ", vetor[aux]); } printf("\n\n"); selectSort(vetor, pegaK); return (0); }
  13. Olá, acho que fiz com base no que você sugeriu, estaria correto dessa forma? 6.txt
  14. Boa noite, alguém pode me ajudar como eu poderia fazer essa questão? O ponto é apenas eu encontrar o késimo menor valor do vetor, acredito que o resto das coisas eu já fiz. qualquer dica é bem-vinda. 6. Crie um algoritmo chamado selectionFind baseado no Selection Sort para que, em vez de ordenar uma sequência de números inteiros, ele nos retorne o k-ésimo menor elemento dessa sequência. Por exemplo: Suponha que os elementos S = 7, 1, 3, 10, 17, 2, 21, 9 estejam armazenados nessa ordem em um vetor e que desejamos obter o quinto maior elemento dessa sequência. Então, uma chamada como selectFind(S,0,7,5), deverá retornar o número 9, onde S é o nome do vetor, 0 e 7 são, respectivamente, o menor e o maior índice do vetor e 5 indica que desejamos o quinto menor elemento. Obs.: Você não deve ordenar a sequência e depois tomar o k-ésimo elemento. K é um valor informado pelo usuário. Anexo o que eu já fiz. 6.txt

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

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!