Logo Hardware.com.br
Hazzard
Hazzard Novo Membro Registrado
4 Mensagens 0 Curtidas

Armazenar números de ciclos em um vetor

#1 Por Hazzard 15/09/2016 - 08:39
Olá bom dia,

Galera fiz um programinha em matlab e estou com problema (provavelmente de lógica).

Gostaria de armazenar em um vetor o número de ciclos que foram necessários para que o valor de x chegasse em 5 (os valores randômicos são entre 0 até 1 ).

Quando executei o programa o vetor ficou com valores todos iguais! Parece que ele pega apenas um valor de ciclo e replica em todas as posições dos vetores.

Ficando algo do tipo [ 22 22 22 22 22 22 22 22 22 22]

Mas estava esperando algo parecido com [ 20 25 23 20 22 21 21 27 30 30]



Fiz em C e a resposta foi a mesma.

Aceito ajuda em C também.

Espero que eu tenha sido claro na minha explicação Imagem

Grato.







clear all

clc


x = 0;
contador = 0;


for i = 1:10


while x <= 5
y = rand()
x=x+y
contador = contador +1;
end

vetor(i)= contador

end
esquiloesperto
esquiloesper... Cyber Highlander Moderador
7.1K Mensagens 2.2K Curtidas
#2 Por esquiloesper...
15/09/2016 - 12:40
A solução é bem simples e é, de fato, relativa à lógica.
Veja bem:

A variável contador é incrementada até que, cumulativamente, x ultrapasse 5 (valor que será mantido em memória).
Nas iterações seguintes do loop For a variável x sempre apresentará um valor maior que 5 e, portanto, sequer executará o While; Deste modo o contador não mais será incrementado e fará com que todas as posições do vetor recebam este mesmo valor.

Descobrimos então que não somente x tem um problema, mas contador também - Perceba que ao corrigir unicamente x a variável contador crescerá permanentemente e assim ela representará o total das iterações feitas pelo While acumuladas durante todas as iterações do For, quando o esperado seria que fossem individuais.

A solução de tudo isso eu creio que você já entendeu: Resetar as variáveis de x e contador trazendo para o início do For as suas instâncias que estão fora dele.
[code=latex]x = 0;
contador = 0;[/code]
Só é difícil enquanto estiver oculto! cool.png
Use a pesquisa


rolleyes.png  Navegar é preciso, viver... também.  smile.png
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal