Ir ao conteúdo

Posts recomendados

Postado

Escreva um programa que leia dez valores do teclado (usando a mesma variável) e imprima as posições do maior e do menor na sequência.

ex: 2, 20, 1, 3, 6, 15, 12, 18, 8, 7.

     O 2o elemento é o maior.

     O 3o elemento é o menor.

 

Não estou conseguindo colocar a posição de cada número. No meu programa aparece "20" e "1" em vez de "O 2o elemento é o maior." e "O 3o elemento é o menor.". Algum cidadão de bem poderia concluir esse código? Obrigado.

 

#include <stdio.h>
#include <stdlib.h>
 
int main(){
    
    int num, maior = 0, menor = 0, y = 0;
    
    printf("Digite um numero:");
    scanf("%d", &num);
    
    menor = num;
    maior = num;
 
        for(y = 1; y < 10; y++){
            printf("Digite um numero:");
            scanf("%d", &num);
    if(num > maior) maior = num;
    if(num < menor) menor = num;
   }

    printf ("%d\n", maior);
    printf ("%d", menor);
    
    return 0;
}

 

Postado

Estou tentando fazer com vetores agora. Porém, somente com alguns exemplos da certo.

 

#include <stdio.h>
#include <stdlib.h>
 
int main (){

    int vet [ 10 ], i = 0, maior, menor, x, y;
    
    scanf("%d", &vet [1]);
    
      for ( i = 2; i < 10; ++i ){
            scanf ( "%d", &vet [ i ] );

        if ( vet [ i ] > maior ){
           maior = vet [ i ];
           x = i;
         }
       if ( vet [ i ] < menor ){
            menor = vet [ i ];
            y = i;
         }
    }

    printf ( "O %do elemento é o maior.\n", x);
    printf ( "O %do elemento é o menor.", y );

return 0;

}

 

Postado

@immoraesz O primeiro programa estava melhor, basta criar duas variáveis para armazenar a posição do maior e do menor, por exemplo "posMaior" e "posMenor", inicialmente atribua 1 a cada um deles logo após atribuir "num" a "maior" e "menor", e dentro dos "ifs" dentro do "for" atribua o valor de y a essas variáveis quando um número for maior ou menor. Nesse caso você vai precisar mudar o valor inicial de y para 2 e também incrementar o valor final, não esqueça de colocar chaves nos "ifs", já que agora vão ter mais de uma linha, e altere os "printfs" para indicar a posição e não o valor do maior e menor número.

  • 2 anos depois...
Postado

@immoraesz Olá

 

***Se o valor atual `num` é maior, ou menor, então, atualizam-se suas posições e os valores maiores, ou menores, sequencialmente.

 

Disso:

Em 11/12/2021 às 16:24, immoraesz disse:
int num, maior = 0, menor = 0, y = 0;

 

Talvez seja isso:

/* Admite-se inicialmente que 0 é uma não posição.      */
int atual ,maior ,m= 0/*              posição do maior. */ 
          ,menor ,n= 0/*                      ...menor. */
          ,y/*                    sendo a posição atual */;

...
  
/* Defina-se m,n                                         */
if (!m || atual>maior) maior= atual , m= y;
if (!n || atual<menor) menor= atual , n= y;

 

Suponho que assim definira m, n acertadamente.

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...