Seguinte, tenho uma matriz com 20 linhas e 2 colunas, e nelas tenho números de 0 a 256
preciso achar os 4 maiores numeros da matriz, estou usando isso:
for (int i = 0; i < 20; i++) {
if (matriz20[i][2] > maior) {
maior = matriz20[i][2];
}
}
mas ela zera quase todas as posições e não acha todos os maiores… alguém me ajuda?
[quote=JuniorMaia]Seguinte, tenho uma matriz com 20 linhas e 2 colunas, e nelas tenho números de 0 a 256
preciso achar os 4 maiores numeros da matriz, estou usando isso:
for (int i = 0; i < 20; i++) {
if (matriz20[i][2] > maior) {
maior = matriz20[i][2];
}
}
Como você deseja os 4 maiores você precisa de 4 repetições:
Pra isso você precisa de um algorítimo de verificação que ele percorre seu vetor (19+18+17+16) vezes. Exemplo:
Na primeira vez ele verifica o maior dentro os 20. Digamos que ele pegue o primeiro elemento e diga que ele é o maior, depois ele vai verificando e comparando com os 19 restantes. feito isso ele coloca como maior.
Depois disso ele vai para o proximo elemento, lembrando que ele retira do vetor o elemento anterior considerado o maior. O nome desse algoritmo é o selection sorte, em que ele vai ordenar os elementos. Dai você pode ordenar do maior para o menor e pegar os 4 primeiros.BOm caro amigo como sempre faço vídeo pro pessoal aí, então vou fazer um vídeo pra você meu caro e espero que você goste! Ainda hoje estarei enviando para o youtube e disponibilizando o link!
Fala meu amigo jacobis, muito bom seu video, agradeço mesmo velho, talvez eu me expressei errado, olha o meu código, ali eu postei apenas a metade para o entendimento de todos, segue meu código completo:
int maior = -1; //inicializo uma variavel em -1 para começar a busca do maior
for (int j = 0; j < 4; j++) { //faço 4 vezes para escolher os 4 reprodutores
for (int i = 0; i < 20; i++) { //percorro a matriz pegando os decimais
if (matriz20[i][2] > maior) { //verifico se o numero da posição i é maior que a variavel
maior = matriz20[i][2]; //variavel recebe o numero decimal
reprodutor[j][0] = i; //matriz na posição 0 recebe a posição do binário na matriz de 20
reprodutor[j][1] = maior; //matriz na posição 1 recebe o decimal do reprodutor
reprodutor[j][2] = matriz20[i][1]; //matriz na posição 2 recebe binário do reprodutor
reprodutor[j][3] = matriz20[i][0]; //passo pra matriz reprodutor a posição do binário na matriz de 100
// matriz20[i][2] = 0; //zero a posição no vetor para que o numero não seja mais o maior
}
}