Ir ao conteúdo

Posts recomendados

Postado

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
Postado

 

        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
Postado

@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 , 

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!