Jump to content

[Resolvido] Determine qual o máximo de uma sequência de números inteiros não negativos introduzidos pelo utilizador


thinkabout
 Share

Recommended Posts

Boas Pessoal, cá estou eu a pedir a vossa ajuda novamente.

Desta vez ainda não percebi bem por onde começar o exercício pensei em usar vectores mas ainda não cheguei a essa parte da matéria.

Desenvolva um programa que determine qual o máximo de uma sequência de números

inteiros não negativos introduzidos pelo utilizador

(utilize o valor zero para assinalar o fim da sequência).

Além de indicar o número máximo, o programa deve especificar em que posição

da sequência o máximo apareceu e quantos números tinha a sequência.

Exemplo: para a sequência de inteiros 2 5 3 6 8 1 2 0

O programa deverá escrever:

Máximo: 8 Surgiu na posição 5 Tamanho da sequência: 7

Edited by thinkabout
Link to comment
Share on other sites

A forma como eu faria isto seria a seguinte:

1)Inicie o programa e crie 3 variaveis numéricas inteiras, 1 para o tamanho da sequencia, uma para o maior numero, uma para a posicao dele na sequencia

2)Obtenha a lista de números

3)Percorra a lista em um laço (ex: for)

4)em cada iteração, verifique se o número atual é o maior até entao, se for guarde o valor e a posicao dele nas respectivas variáveis, e aumente a contagem de itens em +1

5)repita até o final da sequencia.

Ao terminar você terá armazenado, todos os dados que precisa.

Fernando Lage Bastos - MCP/MCTS/MCPD

Link to comment
Share on other sites

Estou a fazer asneira com no incremento na posição, não consigo perceber é onde. 😞

O tamanho da sequencia e o resultado do maior esses batem certo.

Também já tentei só com 3 variáveis

int main()
{
int tamanho, maior, numero,p;

maior=-1;
tamanho=-1;
numero=-1;
p=0;



while (numero != 0 )
{

puts("Qual e o numero ? (0 para terminar)");
scanf("%d" , &numero);

tamanho++;

  if (numero > maior && p++ )
  {
  maior=numero;
  }

}


printf("O maior numero e %d surgiu na posicao %d e o tamanho da sequencia e %d \n" , maior, p, tamanho);

return 0;

} 

Resultados do output

2 5 3 6 8 1 2 0 -> O maior está na posição 4 (errado)

4-2-3 0 -> O maior está na posição 3 (errado)

8 1 2 3 4 5 6 7 9 0 -> O maior está na posição 9 (certo)

5 8 2 9 1 3 0 -> -> O maior está na posição 4 (errado)

Edited by thinkabout
Link to comment
Share on other sites

O maior está na variável maior o P estou a usar para achar a posição que ele se encontra.

Já tive isso a dar certo praticamente em todos os testes que fazia, mas entretanto mudei o código porque quando testava o exemplo da-me errado nesse.

Edited by thinkabout
Link to comment
Share on other sites

Estás a determinar bem quantos números são, estás a determinar bem qual o maior, não estás a determinar bem a posição do maior. Aquele p++ não faz nada de jeito - só te diz, por acaso, quantas vezes o programa teve de actualizar a variável maior. Aposto que nem te apercebeste desse pormenor interessante, se não já tinhas percebido aqueles outputs e aqueles valores.

Knowledge is free!

Link to comment
Share on other sites

e que tal, em vez de andar com ele de traz para frente, de cima para baixo e tentar até de pernas para o ar, pensares no que pretendes ?

que valor deverá ter p em cada caso e como deverias conseguir esse resultado.

programação não é jogar dardos : "atirar para o meio e rezar para que acertes, se bem que o meio é só 50 pontos, e o triplo 20 são 60"

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Penso que está. 🙂

int main()
{
int tamanho, maior, numero,p;
maior=-1;
tamanho=-1;
numero=-1;
p=0;

while (numero != 0 )
{
	   puts("Qual e o numero ? (0 para terminar)");
	   scanf("%d" , &numero);
	   tamanho++;

	  if (numero >= maior  )
	  {
	  maior=numero;
	  p=tamanho;
	  }
}
p++;
printf("O maior numero e %d surgiu na posicao %d e o tamanho da sequencia e %d \n" , maior, p, tamanho);
return 0;
}

e que tal, em vez de andar com ele de traz para frente, de cima para baixo e tentar até de pernas para o ar, pensares no que pretendes ?

que valor deverá ter p em cada caso e como deverias conseguir esse resultado.

programação não é jogar dardos : "atirar para o meio e rezar para que acertes, se bem que o meio é só 50 pontos, e o triplo 20 são 60"

Concordo contigo, estava a ver o problema de forma errada.

Edited by thinkabout
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.