Ir ao conteúdo
  • Cadastre-se

C Código para medir a amplitude de uma sequência de números:


ningumx

Posts recomendados

Fiz esse código para medir a amplitude de uma sequência n de números, no entanto o resultado sempre dá um número aleatório. Alguém sabe me dizer qual o erro? valeu.

#include <stdio.h>

int main() {
    int cont, seq = 0, num, maior, menor, amp;
    printf("Digite quantos numeros quer na sequencia: \n");
    scanf("%d",&cont);
    
    while (seq<cont){
        printf("Digite a sequencia: \n");
        scanf("%d",&num);
        seq++;
        
        num = maior;
        num = menor;
    
        if(num>maior){
            maior = num;
        }
        if(num<menor){
            menor = num;
        }
        amp = maior - menor;
        
        
    }
    printf("A amplitude da sequencia e: %d.",amp);
    
    return 0;
}

 

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

 

        scanf("%d",&num);
        seq++;
        
        num = maior;
        num = menor;

 

Para que ler o valor se logo em seguida vai trocar pelo valor de maior?

para que trocar o valor por maior se logo em seguida vai trocar por menor?

 

TESTE sempre o retorno de scanf(). É ingênuo não testar. Veja o manual.

 

    int cont, seq = 0, num, maior, menor, amp;

 

E afinal qual será o valor inicial de maior, menor, cont, amp ?

 

inicialize todas as variáveis. E declare uma por linha. É grátis e vai gostar de não ter que ficar procurando as declarações.

 

 

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

@ningumx      para saver qual é o maior e Qual é o menor número digitado ,  precisa inicializar essas variáveis referentes ao maio e menor ,  e você pode fazer isso usando o valor máximo e mínimo de um número int , o INT_MAX  e o INT_MIN  ,  e para isso precisa da biblioteca 

#include <limits.h>

mas também pode inicializar com o primeiro valor digitado assim :

#include <stdio.h>
#include <limits.h>
int main()
{
  int cont  =   512;
  int seq   =     0;
  int num   = 32768;
  int maior = 65535;
  int menor =  2048;
  int amp   =  4096;
  printf("quantos numeros quer na sequencia: ");
  int ret = scanf("%d" , & cont ); /// qtd de leituras certas
  if( ret )
  {
    while ( seq < cont )
    {
      printf("Digite a sequencia: \n");
      ret = scanf("%d" , & num );    /// ret recebe o retorno de scanf
                                     /// para cada especificador uma unidade
      printf("ret= %d\n",ret);       /// mostrar o retorno da funcao scanf
      if( ret )                      /// se leu cero
      {
        if( ! seq )                  /// se seq não for diferente de zero
        {
          maior = num;               /// atribue o primeiro valor digitado a variavel maior
          menor = num;               /// atribue o primeiro valor digitado a variavel menor
        }
        if( num > maior )            /// se num digitado maior que a variavel maior
        {
          maior = num;               /// atribue esse num maior á variavel maior
        }

e se o usuário digitar uma letra nesse seu scanf , vai fazer o programa entrar em loop infinito ,  e perda de controle do mesmo ,  então você pode usar o retorno da função scanf para controlar as coisas , pois quando o scanf  lê certo , ele retorna uma unidade para cada leitura certa , e se for apenas uma leitura "%d" e for digitado um número , ele retorna o valor 1 , e se tiver dois especificador "%d%d" , e for digitado dois números separados , ele retorna o valor 2 , duas leituras certas , 

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