ALGORITMOS E IMPLEMENTAÇÕESCondiçoes.

Implementação de equações dentro da computação, programação e algoritmos.

Moderador: [ Moderadores TTB ]

Avatar do usuário
Autor do Tópico
VictorMello
Junior
Mensagens: 11
Registrado em: Qua 19 Fev, 2014 21:17
Última visita: 14-09-14
Mar 2014 15 18:47

Condiçoes.

Mensagem não lida por VictorMello »

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




Avatar do usuário
csmarcelo
6 - Doutor
Mensagens: 5114
Registrado em: Sex 22 Jun, 2012 22:03
Última visita: 17-04-23
Mar 2014 16 07:32

Re: Condiçoes.

Mensagem não lida por csmarcelo »

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




Responder
  • Tópicos Semelhantes
    Respostas
    Exibições
    Última msg

Voltar para “ALGORITMOS E IMPLEMENTAÇÕES”