Opaa, eu tenho que fazer uma verificação para achar entre 3 números, qual é o maior, o menor, e o número intermediário. O maior e o menor eu consigo achar, mas não estou conseguindo pegar o valor intermediário, como eu posso fazer?
Se a idéia é ler 3 números e apresentar o maior, o menor e o intermediário, é simples. Embora você tenha as seguintes situações: Todos iguais, um maior e dois menores, um menor e dois maiores e os três diferentes.
Agora, se forem mais de três números lidos, o problema fica muito, mas muito complexo.
Pois então, são exatamente 3 números que eu preciso, e sim, meu problema fica exatamente nessas situações, ter um maior e dois menores, um menor e dois maiores e tal…mas pegar o número que não é nem o maior e nem o menor, esse que tá complicado de pegar.
Você pode usar o sort (ordenação) de um array de int.
int a[]={30,7,9};
Arrays.sort(a);
System.out.println(Arrays.toString(a));
Vai imprimir ordenadamente 7,9,30 (Menor, intermediario, maior)
a[0] é o menor;
a[1] é o intermediario;
a[2] é o maior;
Quando você tem um problema desses, desenhe um fluxograma.
Por exemplo, digamos que você tenha 3 números: a, b e c.
Se a é o menor e b o maior, então c é o do meio.
Se a é o menor e c é o maior, então b é o do meio.
E assim por diante.
Desenhe todas as opções, e então transforme em um programa.
Dá trabalho? Dá, mas é mais fácil que você ficar escrevendo o programa direto no computador. Se não usar pelo menos um lápis e papel, você vai é ficar empacado mesmo.
[quote=bezier curve]Quando você tem um problema desses, desenhe um fluxograma.
Por exemplo, digamos que você tenha 3 números: a, b e c.
Se a é o menor e b o maior, então c é o do meio.
Se a é o menor e c é o maior, então b é o do meio.
E assim por diante.
Desenhe todas as opções, e então transforme em um programa.
Dá trabalho? Dá, mas é mais fácil que você ficar escrevendo o programa direto no computador. Se não usar pelo menos um lápis e papel, você vai é ficar empacado mesmo.[/quote]
Faça o algoritmo.
Algoritmos são ótimos meios de expressar a sequência lógica e listar os recursos que serão utilizados para resolver determinada situação.
Você vai precisar aprender a trabalhar com planejamento antes de sair codificando. “Ah, mas ir direto pro código sem enrolar é melhor”. É, melhor para cometer erros medíocres e que seriam facilmente evitados se você pensasse antes de agir.
Se quiser uma maneira mais “manual”, ou sem uso de outras classes, pode analisar o seguinte código:
int[] numeros = { 7, 5, 1 };
int temp = 0;
for (int i = 0; i < numeros.length; i++) {
if(i == 1){
break;
}
if (numeros[i] > numeros[i + 1]) {
numeros[i] = numeros[i];
} else {
temp = numeros[i];
numeros[i] = numeros[i + 1];
numeros[i + 1] = temp;
}
}
System.out.println(numeros[0] + "," + numeros[1] + "," + numeros[2]);
Ta bem “nas coxas” mas dá pra se ter uma idéia… :-o
[quote=NewScript]Se quiser uma maneira mais “manual”, ou sem uso de outras classes, pode analisar o seguinte código:
int[] numeros = { 7, 5, 1 };
int temp = 0;
for (int i = 0; i < numeros.length; i++) {
if(i == 1){
break;
}
if (numeros[i] > numeros[i + 1]) {
numeros[i] = numeros[i];
} else {
temp = numeros[i];
numeros[i] = numeros[i + 1];
numeros[i + 1] = temp;
}
}
System.out.println(numeros[0] + "," + numeros[1] + "," + numeros[2]);
Ta bem “nas coxas” mas dá pra se ter uma idéia… :-o
[/quote]
Camarada, esse tipo de atitude é o que, literamente, fode com nossa profissão.
Deixa o sujeito pensar, raciocinar é parte fundamental do processo de programação (embora muitos acreditem que programador não tem cérebro).
As vezes raciocinar pode ser a solução, mas conhecer métodos faz parte também.
O que fode com nossa profissão é falta de pesquisa.
Programação não é apenas raciocínio, é conhecimento.
Se você não concorda com isso creio que você seja um desses programadores que você citou.
[quote=Scoobydoo]As vezes raciocinar pode ser a solução, mas conhecer métodos faz parte também.
O que fode com nossa profissão é falta de pesquisa.
Programação não é apenas raciocínio, é conhecimento.
Se você não concorda com isso creio que você seja um desses programadores que você citou.[/quote]
Conhecimento é a soma de pesquisa e capacidade de interpretação. Não basta apenas ler, você precisa ter entendimento suficiente para absorver o conhecimento disponível e, principalmente, filtrar o que é “bom” do que é “mau”.
O primeiro passo para o entendimento adequado é saber em que nível estamos tratando determinado problema.
Se uma pergunta deixa nítido que o autor da mesma é iniciante na programação, por que devo responder de uma forma em que conceitos muito mais elevados devem ser considerados, como a forma que você utilizou para responder a esta questão?
É apenas uma função de um array…
Mas tudo bem. Max… se atente ao bezier curve
[quote=NewScript]Se quiser uma maneira mais “manual”, ou sem uso de outras classes, pode analisar o seguinte código:
int[] numeros = { 7, 5, 1 };
int temp = 0;
for (int i = 0; i < numeros.length; i++) {
if(i == 1){
break;
}
if (numeros[i] > numeros[i + 1]) {
numeros[i] = numeros[i];
} else {
temp = numeros[i];
numeros[i] = numeros[i + 1];
numeros[i + 1] = temp;
}
}
System.out.println(numeros[0] + "," + numeros[1] + "," + numeros[2]);
Ta bem “nas coxas” mas dá pra se ter uma idéia… :-o
[/quote]
Ola, gostaria de informar ao interessado, que sou iniciante, e como iniciante, procurei a solução em um livro para iniciantes, um livro de algorítimos, o código provavelmente não está 100% fiel, já que o livro não se encontra mais comigo, porém, expressa (acredito) a didática dos autores.
1 - Esse não é um código de uso real, é para ser, como relatei, ANALISADO,
2 - Existe minúcias, por exemplo, que a pessoa perceberá ao digitar o código,
3 - O código responde a questão mas dá brechas para várias observações,
Resumindo, se a pessoa for do tipo, copia/cola, não vai ter um código 100%, se não for do tipo copia/cola ele terá a resposta e muita coisa para pensar. O que por exemplo? Eis a questão…
O silêncio pode vir de inúmeras palavras…
Cara, se você conhece dois de 3 números, maior e o menor, o intermediário é o que sobra.