Pessoal, eu estava tentando resolver o exercicio que dizia o seguinte:
Faça um programa que gere 3 numeros aleatorios de 0 a 255. Depois utilize o comando background(r,g,b) para alterar a cor de fundo, de forma que os valores de r, g e b estejam em ordem crescente.
PS: utilizo Processing
Eu ate tentei muitas vezes, mas eu nao consegui pois o programa tava dando o erro de que a variavel r pode nao estar sendo inicializado. Veja o meu raciocinio:
int x, y, z, r, g, b;
x = int(random(255));
y = int(random(255));
z = int(random(255));
println(x, "" ,y, "" ,z);
if(x>y) {
if(x>z) {
b = x;
} else {
b = z;
}
if(y>z) {
g = y;
r = z;
} else {
g = z;
r = y;
}
}
print(r, "" ,g, "" ,b);
E simplesmente o deu erro por causa que a variavel r pode nao estar sendo inicializado na hora de transferir para o print. Sera que fiz algo de errado, ou esta faltando alguma coisa para concluir o raciocinio? Bom, espero que voces tenham compreendido a minha duvida e obrigado para quem puder me ajudar.
ALGORITMOS E IMPLEMENTAÇÕES ⇒ Condiçoes.
Moderador: [ Moderadores TTB ]
Mar 2014
16
07:32
Re: Condiçoes.
As atribuições às variáveis r, g e b estão sendo feitas unicamente dentro de estruturas condicionais. Nesses casos, algumas linguagens exigem a inicialização da variável.
Sendo este ou não o caso da Processing, veja que, além disso, pela sua lógica:
1) b nunca poderá ser igual a y.
2) r e g nunca poderão ser iguais a x.
Ao meu ver, tratar todas as possibilidades na base de if's deixaria o código extremamente "sujo" e beirando a ilegibilidade.
Você já aprendeu a trabalhar com arrays em Processing? Já aprendeu algum algoritmo de ordenação? Se sua resposta for sim para as duas perguntas, eu recomendo criar um array fixo de 3 posições para armazenar os valores e, em seguida, ordená-lo com um simples algoritmo genérico de ordenação.
Em Java, ficaria da seguinte forma:
// procedimento que recebe o array e o ordena
public static void ordenar(int[] array) {
int aux;
for (int i = 0; i < array.length - 1; i++) {
for (int j = i + 1; j < array.length; j++) {
if (array > array[j]) {
aux = array;
array = array[j];
array[j] = aux;
}
}
}
}
// procedimento principal, início do programa
public static void main(String[] args) {
int[] xyz = new int[3]; // inicialização do vetor
// atribuição de valores
xyz[0] = 14;
xyz[1] = 27;
xyz[2] = 1;
//chamada da função ordenar()
ordenar(xyz);
//exibição do vetor ordenado
System.out.println("r="+xyz[0]);
System.out.println("g="+xyz[1]);
System.out.println("b="+xyz[2]);
}
Para entender melhor o algoritmo de ordenação, procure no google por "selection sort" ou "ordenação por seleção".
Sendo este ou não o caso da Processing, veja que, além disso, pela sua lógica:
1) b nunca poderá ser igual a y.
2) r e g nunca poderão ser iguais a x.
Ao meu ver, tratar todas as possibilidades na base de if's deixaria o código extremamente "sujo" e beirando a ilegibilidade.
Você já aprendeu a trabalhar com arrays em Processing? Já aprendeu algum algoritmo de ordenação? Se sua resposta for sim para as duas perguntas, eu recomendo criar um array fixo de 3 posições para armazenar os valores e, em seguida, ordená-lo com um simples algoritmo genérico de ordenação.
Em Java, ficaria da seguinte forma:
// procedimento que recebe o array e o ordena
public static void ordenar(int[] array) {
int aux;
for (int i = 0; i < array.length - 1; i++) {
for (int j = i + 1; j < array.length; j++) {
if (array > array[j]) {
aux = array;
array = array[j];
array[j] = aux;
}
}
}
}
// procedimento principal, início do programa
public static void main(String[] args) {
int[] xyz = new int[3]; // inicialização do vetor
// atribuição de valores
xyz[0] = 14;
xyz[1] = 27;
xyz[2] = 1;
//chamada da função ordenar()
ordenar(xyz);
//exibição do vetor ordenado
System.out.println("r="+xyz[0]);
System.out.println("g="+xyz[1]);
System.out.println("b="+xyz[2]);
}
Para entender melhor o algoritmo de ordenação, procure no google por "selection sort" ou "ordenação por seleção".
-
- Tópicos Semelhantes
- Respostas
- Exibições
- Última msg
-
- 0 Respostas
- 771 Exibições
-
Última msg por fab12
-
- 1 Respostas
- 502 Exibições
-
Última msg por FelipeMartin
-
- 1 Respostas
- 161 Exibições
-
Última msg por Carlosft57