Ir ao conteúdo
  • Cadastre-se

Pascal/Delphi Preenchimento de vetor com dados aleatórios e cálculo de moda


Posts recomendados

gostaria de saber como eu calculo a moda de x e como eu resolvo esse y. até o momento o programa está assim:

 

var

    x: array[1..5000] of integer;
    cod: array[1..6] of integer;
    r: integer;
        

begin

        for r := 1 to 5000 do x[r] := 1+random(6);
        
        for r := 1 to 5000 do cod[x[r]] := cod[x[r]]+1;

image.png.e144a89ed552e65b4760912079b0b91b.png

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...
  • Membro VIP

@Drigola, uma coisa que eu sugiro é separar as coisas.. aqui tem 2 pontos:

  1. entender o problema e propor uma solução;
  2. implementar uma solução em forma de código.

 

Perceba que são duas coisas distintas!!! A primeira não tem (e nem deveríamos achar que tem) qualquer relação com programação... não tem nada a ver com Pascal ou qualquer coisa do tipo... simplesmente existe um problema e seria necessário entendê-lo.

 

Já a segunda parte, estaria na questão de, após ter resolvido o primeiro, passar tentar implementar um código que sirva como solução.

 

 

Então, a proposta do exercício (com quase toda certeza) é estimular que você tenha contato com um "problema notável" e pesquise sobre o referido tema.

 

 

Vamos lá:

Em 19/07/2021 às 15:21, Drigola disse:

image.png

 

Para (i), o que significa essa fórmula para Y? Talvez um "quem souber morre!" 😄. O enunciado não fala sobre e sequer dá uma utilidade para o Y depois. Reparem aí!!!... depois de calcular, faz o que com esses dados? NADA!!! Ou seja: uma coisa que se esperaria seria: "Oxente, para que raios eu preciso calcular esse valores Y?". Entende? Não precisa saber do que se trata... mas (se segundo entendi). essa cálculo será feito à toa... (Ou será que tem algo a ver com moda? Será? 🤔)

 

Tá... mas o que ele estaria pedindo? Basicamente o que já foi dito por @Midori:

3 horas atrás, Midori disse:

y1 = (x1 - 1)/5

y2 = (x2 - 1)/5

etc

 

Para para tentar visualizar melhor, seria algo assim em Pascal:

y[1] := (x[1]-1)/5
y[2] := (x[2]-1)/5
//isso para cada uma das 5000 mil posições

 

Percebes? O vetor y, na posição 1, vai ter o resultado de x, na posição 1, menos 1, e o resultado dividido por 5... repetido isso para cada um dos 5000 registros.

 

Agora imagine você fazendo essa conta de um a um... para cada um dos 5000 valores... daí que entraria o Pascal... seria apenas parte da ferramenta que irá automatizar o processo. (Irá criar um programa que por sua vez será executado por um computador... bla bla bla.)

 

Lá, já idealizaria que seria mais prático utilizar um laço de repetição... que esse laço seria do tipo for, já que tem uma quantidade pré-determinada.....

 

 

 

 

 

Já para o(ii), ele quer que calcule a moda... e tá lá:

 

Em 19/07/2021 às 15:21, Drigola disse:

image.png

 

Aí vai lá e pesquisa sobre o tema caso não lembre ou não saiba o que é.

 

Adendo: @Midori, como deve se lembrar depois, não é o "maior valor", né? kkkkkkk

 

 

 

 

 

Vamos direto ao ponto que mais interessa (a parte do código):

 

Sobre:

Em 19/07/2021 às 15:21, Drigola disse:

como eu resolvo esse y

 

Um "segredo" que aprendi é: tente ser o mais semântico possível. Tá lá... "preencha o vetor Y", ou seja: uma nomenclatura boa para o vetor poderia ser "y":

var
  x: array[1..5000] of integer;
  y: array[1..5000] of integer;

ou

var
  x, y: array[1..5000] of integer;

 

Aí você preenche y como foi explicado mais acima.

 

 

 

 

Sobre:

Em 19/07/2021 às 15:21, Drigola disse:

gostaria de saber como eu calculo a moda de x

 

Aqui, como citado, primeiro você entende o que é uma moda, só depois implementa um código. Aí, a sua dúvida OU deve ser na parte do que é a moda, que ao pesquisar é bem provável que lembre/aprenda e por consequência também saberá como encontrar uma (acho que o conceito é bem simples e faz sentido ao nome). OU vai ser em como imaginar um algoritmo para encontrar uma moda... OU vai ser em como traduzir o algoritmo para Pascal... mas veja: a lógica de como deve ser feito o cálculo deve partir de você... aí vai tentando traduzir o que você imaginou em Pascal e caso não consiga, vai tirando dúvidas.

 

Você precisa pensar em estratégias...

 

PS: pelo que percebi, não será também simples como "encontrar o maior"... seria um pouco mais complicado que isso.

 

No aguardo.

 

Ah! pelo amor de d'us, não tente fazer as duas coisas (preencher y e calcular a moda) ao mesmo tempo. OU você tenta preencher Y (que me parece simples), OU tenta calcular a moda.

 

Dica: teste com vetores menores, como uns 10 itens ou menos... que daí você compara mais facilmente os resultados com os valores esperados.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

30 minutos atrás, Simon Viegas disse:

Adendo: @Midori, como deve se lembrar depois, não é o "maior valor", né? kkkkkkk

O conceito de moda não. Mas ele pode pegar o maior valor do vetor cod que representa cada curso e assim saberá qual código aparece mais vezes para guardar o índice dele.

  • Obrigado 1
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Perfeito... então o problema já estava resolvido.

 

Em 19/07/2021 às 15:21, Drigola disse:
for r := 1 to 5000 do cod[x[r]] := cod[x[r]]+1;

 

Fiz um textão nada com nada! 😃

 

 

 

4 horas atrás, Midori disse:

Para pegar a moda declare uma variável e faça outro loop para atribuir o maior valor do vetor cod.


No caso outra forma seria deixar o vetor em ordem decrescente e pegar o primeiro.... Se quiser mostrar, caso exista, mais de um valor para moda, vai exibido todos enquanto o valor for igual ao primeiro. 

Outra coisa que vi é que não poder ser igual a 1, mas como são 6 opções e tem mais de 6 itens, sempre vai existir uma moda.

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...