• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Chuckytah

[How to] Dúvidas. Algoritmo para calcular pesos!

22 mensagens neste tópico

Olá a todos! Bem tou aqui com um problemazito para a disciplina de A.I.. É o seguinte, tenho de fazer um algoritmo, de preferencia com a estrutura PARA, ENQUANTO ou REPETIR, que após a introdução de um x número de pesos, por exemplo pesos de 50 golfinhos, os leia, e de seguida imprima qual o peso mais leve... Já tentei mas deu barraca, não dá porque eu não sei como fazer para comparar todos os pesos... Obrigada pela atenção.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Benvindo/a! Em que tipo de estrutura tens os pesos que queres comparar? Se for um array (ou algo do género) é só incrementares uma variável no ciclo PARA que irá servir de indice, do género

PARA i = 1 até 5 FAZER ler(peso[i]);

Depois podes colocar o 1º peso numa variável, e com outro ciclo PARA semelhante ao anterior, comparares com o peso seguinte, se for maior metes o novo peso na tal variável, em seguida comparas com o seguinte, e assim sucessivamente.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

sim, eu sei, que todo seria mais facil usando um array, mas ainda não chegamos a dar isso, e não queria chegar lá a avançar, pois o professor não iria gostar. Eu para já não posso utilizar arrays e/ou vectores, e o que tinha pensado era fazer tipo:

Escrever('insira o peso:')

Ler(peso)

e depois armazena-lo numa variavel, por exemplo:

menor<-peso.

depois como tinha feito numa estrutura PARA, ele vai pedir a introdução de 10 pesos... até aqui tudo bem, axo eu, mas eu depois tenho forçosamente de no meio do ciclo PARA ter um SE para comparar os pesos e guardar na variavel 'menor' o de menor peso, não é?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não estou a ver nenhuma forma de resolver o problema sem um IF pelo meio..

menor = infinito

para p=1 até 50 fazer

escrever('insira o peso:')

ler(peso)

se peso<menor menor = peso

fim do para

escrever(menor)

PS: Nunca soube escrever em pseudo-código..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

pois eu fiz  isto: :bored:

Algoritmo "Peso dos 10 Golfinhos"

Este algoritmo, após a introdução dos 10 pesos dos golfinhos correspondentes, vai determinar e imprimir o que tem o menor peso, e qual o peso.

1.[Definição de constantes]

MAX_GOLFINHOS

2.[Declaração de variáveis]

menor, peso_golfinho : numéricos reais

i : numérico inteiro

3.[inicialização de variáveis]

menor<-0

peso_golfinho<-0

4.[Cálculo]

Para i<-1 até MAX_GOLFINHOS fazer

Escrever('Insira o peso do,'i,'golfinho:')

Ler(peso_golfinho)

Se i=1 então

Inicio

menor<-peso_golfinho

Fim

Se peso_golfinho<menor então

menor<-peso_golfinho

5.[impressão do resultado]

Escrever('O golfinho que pesa menos pesa:',menor)

6.[Terminar]

Sair.

Mas não sei se está correcto... ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Benvindo/a! Em que tipo de estrutura tens os pesos que queres comparar? Se for um array (ou algo do género) é só incrementares uma variável no ciclo PARA que irá servir de indice, do género

PARA i = 1 até 5 FAZER ler(peso[i]);

Depois podes colocar o 1º peso numa variável, e com outro ciclo PARA semelhante ao anterior, comparares com o peso seguinte, se for maior metes o novo peso na tal variável, em seguida comparas com o seguinte, e assim sucessivamente.

pois bem eu fiz  isto:

Algoritmo "Peso dos 10 Golfinhos"

Este algoritmo, após a introdução dos 10 pesos dos golfinhos correspondentes, vai determinar e imprimir o que tem o menor peso, e qual o peso.

1.[Definição de constantes]

MAX_GOLFINHOS

2.[Declaração de variáveis]

menor, peso_golfinho : numéricos reais

i : numérico inteiro

3.[inicialização de variáveis]

menor<-0

peso_golfinho<-0

4.[Cálculo]

Para i<-1 até MAX_GOLFINHOS fazer

  Escrever('Insira o peso do,'i,'golfinho:')

  Ler(peso_golfinho)

  Se i=1 então

  Inicio

      menor<-peso_golfinho

  Fim

  Se peso_golfinho<menor então

      menor<-peso_golfinho

5.[impressão do resultado]

Escrever('O golfinho que pesa menos pesa:',menor)

6.[Terminar]

Sair.

mas não sei se funciona... :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não ligues, isto já é automatismo das aulas, tenho passado os dias a ler para arrays e depois trabalhar com esses valores ;P detesto java...

O teu parece estar bem, a única coisa que pode faltar é o inicio/fim no ciclo para... porque dizes que deu barraca?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não ligues, isto já é automatismo das aulas, tenho passado os dias a ler para arrays e depois trabalhar com esses valores ;P detesto java...

O teu parece estar bem, a única coisa que pode faltar é o inicio/fim no ciclo para... porque dizes que deu barraca?

Porque fiz depois para Pascal e ele não faz o ciclo para, apenas le o peso do primeiro golfinho e imprime logo k é o mais leve, e nao deixa introduxir sequer o peso do segundo golfinho :S lol n sei porquê. mas prontos, agora tenho de passar do ciclo PARA, para o ENQUANTO e REPETIR, mas isso é fácil, lol ;P, pelo menos parece XD bigada pela ajuda ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

  Se i=1 então

  Inicio

      menor<-peso_golfinho

  Fim

Esta parte é escusada, uma vez que o menor peso começa a zero, qualquer peso que seja introduzido é maior que o valor inicial, logo, nao interessa se é ou não o primeiro peso.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E tens de salvar todos os dados introduzidos? Se não existir restrições por parte do professor o mais simples sera:

Ler peso

comparar com o máximo e guardar o máximo dos dois.

Só presisas de duas variaveis e um if. O resto é input/output. Eventualmente um ciclo também só para repetir o pedido de introdução de dados.

Se não deram estruturas de dados como arrays ou vectores. Provavelmente é isso que ele quer.

 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ya, ja vi que a parte do Se i=1(..) era desnecessária, mas para isso teria de inicializar a variavel menor<-99999 porque assim o primeiro seria automaticamente menor,lol.

Agr tem outro problema, o professor ker agr k s introduzao um x nr d golfinhos, determinar kal o k pesa mais e kantos pesam tanto kanto ele. :S n sei por onde começar... posso usar o anterior e so alterar o k ele pede n é?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes adicionar mais uma variavel para contar os máximos. Sempre que tiveres uma introdução de um máximo igual incrementas essa variavel. Se actualizares o máximo fazes reset ao contador. E para inicializares o max, tens de fazer uma leitura antes do ciclo interno. Essa primeira leitura é o valor inicial do max.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes adicionar mais uma variavel para contar os máximos. Sempre que tiveres uma introdução de um máximo igual incrementas essa variavel. Se actualizares o máximo fazes reset ao contador. E para inicializares o max, tens de fazer uma leitura antes do ciclo interno. Essa primeira leitura é o valor inicial do max.

como assim? n percebi,lol XD algo assim?:

Para 1<-1 até MAX_GOLFINHOS fazer

Ler(peso_golfinho)

maior<-peso_golfinho

i-<0

não compreendi msm, actualizar o contador pkê?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O contador(variavel) que tens a mais, não me estou a referir ao i.

Para contar a quantidade de valores que são iguais ao máximo.

Sei lá tipo:

Para 1<-1 até MAX_GOLFINHOS fazer

Ler(peso_golfinho)

se peso_golfinho>maior então maior<-peso_golfinho; contador=0

se peso_golfinho=maior então contador=contador+1

i-<0

Possa, em c ficava mais compreensivel!!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ia colocar aqui o pseudocódigo mais bem estruturado, mas acho melhor tentares fazer por ti 1º. Pega aí no exemplo do shumy e tenta pô-lo a 100%!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O contador(variavel) que tens a mais, não me estou a referir ao i.

Para contar a quantidade de valores que são iguais ao máximo.

Sei lá tipo:

Para 1<-1 até MAX_GOLFINHOS fazer

Ler(peso_golfinho)

se peso_golfinho>maior então maior<-peso_golfinho; contador=0

se peso_golfinho=maior então contador=contador+1

i-<0

Possa, em c ficava mais compreensivel!!

okis, percebi fix assim:

Algoritmo "Peso dos 10 Golfinhos"(Estrutura PARA)

Este algoritmo, após a introdução dos 10 pesos dos golfinhos correspondentes, vai determinar e imprimir qual é o mais pesado, e quantos pesam tanto quanto o que pesa mais.

1.[Definição de constantes]

MAX_GOLFINHOS

2.[Declaração de variáveis]

maior, peso_golfinho : numéricos reais

i, contador : numérico inteiro

3.[inicialização de variáveis]

maior<-0

peso_golfinho<-0

4.[Cálculo]

Para i<-1 até MAX_GOLFINHOS fazer

Escrever('Insira o peso do,'i,'º golfinho:')

Ler(peso_golfinho)

Se peso_golfinho>maior então

maior<-peso_golfinho

FimSe

contador=0

Se peso_golfinho=maior então

contador<-contador+1

FimSe

i<-0

5.[impressão do resultado]

Escrever('O golfinho mais pesado pesa:’,maior,’kg e pesam também tanto quanto ele:’,i,’golfinhos.´)

6.[Terminar]

Sair.

olha, soz, xatear, mas n percebi pk k no fim tenho de ter o i<-0...lol podes explicar? ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ia colocar aqui o pseudocódigo mais bem estruturado, mas acho melhor tentares fazer por ti 1º. Pega aí no exemplo do shumy e tenta pô-lo a 100%!

eu fix assim:

Algoritmo "Peso dos 10 Golfinhos"(Estrutura PARA)

Este algoritmo, após a introdução dos 10 pesos dos golfinhos correspondentes, vai determinar e imprimir qual é o mais pesado, e quantos pesam tanto quanto o que pesa mais.

1.[Definição de constantes]

MAX_GOLFINHOS

2.[Declaração de variáveis]

maior, peso_golfinho : numéricos reais

i, contador : numérico inteiro

3.[inicialização de variáveis]

maior<-0

peso_golfinho<-0

4.[Cálculo]

Para i<-1 até MAX_GOLFINHOS fazer

Escrever('Insira o peso do,'i,'º golfinho:')

Ler(peso_golfinho)

Se peso_golfinho>maior então

maior<-peso_golfinho

FimSe

contador=0

Se peso_golfinho=maior então

contador<-contador+1

FimSe

i<-0

5.[impressão do resultado]

Escrever('O golfinho mais pesado pesa:’,maior,’kg e pesam também tanto quanto ele:’,i,’golfinhos.´)

6.[Terminar]

Sair.

não está bem? tem passos desnecessarios? ajuda pf ^^

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O i<-0 no código do shumy deve ter sido esquecimento dele ao copiar e alterar o código que puseste antes; está lá mal e deve ser retirado, senão ao fim de cada iteração ias ficar com o i sempre a 0, e isso resultava num ciclo Para infinito.

Quanto ao teu pseudocódigo, tens ali problemas na manipulação da variável contador. Tu queres colocá-la a 0 quando o peso for maior, e queres incrementá-la quando o peso for igual ao maior, logo a linha "contador=0" tem que ficar dentro do 1º Se. Algo assim:

   Se peso_golfinho>maior então
      maior<-peso_golfinho
      contador=0
   FimSe

Só mais uma coisa: não é preciso fazeres 2 posts quase iguais para responder a 2 pessoas, podes partilhar 1 post para as 2 respostas :D

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Só mais uma coisa: não é preciso fazeres 2 posts quase iguais para responder a 2 pessoas, podes partilhar 1 post para as 2 respostas :D

lol sorry, lol n sabia =') k trenga, sou novata aki,lol.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O meu algortimo:

Iniciar variaveis a 0

Pedir o quantidade de golfinhos

Armazenar a quantidade

para i=0 ate i< quantidade de golfinhos        // aqui pode-se usar um para (for) pois sabemos a partida a quantidade de execuções

    pedir peso de golfinho                                // do ciclo

    armazenar peso de golfinho

    se peso de golfinho > pesoMax

          pesoMax = peso de golfinho

Mostrar o pesoMax

Para o peso minimo

Iniciar variaveis a 0

Pedir o quantidade de golfinhos

Armazenar a quantidade

pedir peso de golfinho                             

armazenar peso de golfinho

pesoMin = peso do golfinho

para i=0 ate i< quantidade de golfinhos - 1        // aqui pode-se usar um para (for) pois sabemos a partida a quantidade de execuções

    pedir peso de golfinho                                // do ciclo

    armazenar peso de golfinho

    se peso de golfinho < pesoMax

          pesoMin = peso de golfinho

Mostrar o pesoMin

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Iniciar variaveis a 0

Pedir o quantidade de golfinhos

Armazenar a quantidade

para i=0 ate i< quantidade de golfinhos        // aqui pode-se usar um para (for) pois sabemos a partida a quantidade de execuções

    pedir peso de golfinho                                // do ciclo

    armazenar peso de golfinho

    se peso de golfinho > pesoMax

          pesoMax = peso de golfinho

Mostrar o pesoMax

Mas assim não estás a contar o número de golfinhos com o peso máximo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora