• 🔴 [ENEM 2025 PPL Live 03] Matemática - Resolução de 146 até 150
  • 🔴 [ENEM 2025 PPL Live 02] Matemática - Resolução de 141 até 145
  • 🔴 [ENEM 2025 PPL Live 01] Matemática - Resolução de 136 até 140
  • 🔴 [ENEM 2025 Belém Live 09] Matemática - Resolução de 176 até 180
  • 🔴 [ENEM 2025 Belém Live 08] Matemática - Resolução de 171 até 175
  • 🔴 [ENEM 2025 Belém Live 07] Matemática - Resolução de 166 até 170

ALGORITMOS E IMPLEMENTAÇÕESCondiçoes.

Implementação de equações dentro da computação, programação e algoritmos.
Avatar do usuário
VictorMello Offline
Junior
Mensagens: 11
Registrado em: 19 Fev 2014, 21:17
Mar 2014 15 18:47

Condiçoes.

Mensagem 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 Offline
6 - Doutor
Mensagens: 5113
Registrado em: 22 Jun 2012, 22:03
Agradeceu: 355 vezes
Agradeceram: 2820 vezes
Mar 2014 16 07:32

Re: Condiçoes.

Mensagem 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
    Resp.
    Exibições
    Últ. msg

Voltar para “ALGORITMOS E IMPLEMENTAÇÕES”