Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bruno Pacheco

Linguagem C (Maior e menor )

Recommended Posts

O meu código abaixo não está rodando direito para saber se um número é maior ou menor.Queria consertar o meu código nesse aspecto. O que devo fazer?

 

#include<stdio.h>
#include<stdlib.h>

int main(){
    int a,maior=0,i=0,x=0,menor=1,soma=0;
    char opcao;    
    float media=0;
    
    opcao='s';
    
    for(;opcao=='s'&& a!=0;i++){
                    
       printf(" Deseja continuar(s/n)? ");
       scanf("%s",&opcao);
                     
     if (opcao=='s'){   
       printf(" Numero: ");
       scanf("%d",&a);
     } 
       soma=soma+a;
              
      if (a>maior){
          x=maior;
          maior=a;
          menor=x;
      }   
           
          if(a<maior){
            if(x<menor){
               menor=a;
             }   
          }                    
           
        
               
          
       
     
    } 
    media=soma/i;
    
    
       printf("\nMaior numero: %d\n ",maior);
       printf("Menor numero: %d\n",menor);
       printf("Media aritmetica dos numeros: %0.001f",media);
       system("Pause");
     
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Comentei o código abaixo com as observações que encontrei. Espero ter te ajudado.

 

O meu código abaixo não está rodando direito para saber se um número é maior ou menor.Queria consertar o meu código nesse aspecto. O que devo fazer?

 

#include<stdio.h>
#include<stdlib.h>

int main(){
    int a,maior=0,i=0,x=0,menor=1,soma=0;
    char opcao;    
    float media=0;
    
    opcao='s';
    
    for(;opcao=='s'&& a!=0;i++){   /* Qual o sentido do a != 0? Uma vez que a não está sendo                       
                                      inicializada, o lixo que a contém pode ser 0 e o programa 
                                      pode funcionar de forma inesperada. */
       printf(" Deseja continuar(s/n)? ");
       scanf("%s",&opcao);         /* Como será lido um caracter apenas use o %c ao invés do %s. Com %s ele
                                      colocará o caracter '\0' no final da string, que não é o caso. */     
     if (opcao=='s'){   
       printf(" Numero: ");
       scanf("%d",&a);
     } 
       soma=soma+a;
              
      if (a>maior){
          x=maior;
          maior=a;
          menor=x;
      }   
           
          if(a<maior){             // Não faria mais sentido verificar se o numero lido, a é menor apenas
            if(x<menor){           // que o menor. Uma vez que no if acima já testou-se se ele é maior que o maior.
               menor=a;            // Na comparação do menor numero UM CUIDADO MUITO IMPORTANTE DEVE SER TOMADO:
             }                     // COMO A VARIAVEL menor ESTÁ SENDO INICIALIZADA COM 1 SE O USUARIO NÃO DIGITAR
          }                        // UM NUMERO MENOR QUE UM O PROGRAMA APRESENTARÁ 1 COMO MENOR, SENDO QUE ELE 
                                   // NÃO FOI DIGITADO E NÃO SERÁ CALCULADO NA MEDIA. EM CASOS ASSIM QUANDO ESTÁ
                                   // SENDO INSERIDO O PRIMEIRO NUMERO DEVEMOS ARMAZENAR-LO TANTO EM MAIOR QUANTO MENOR. 
               
          
       
     
    } 
    media=soma/i;
    
    
       printf("\nMaior numero: %d\n ",maior);
       printf("Menor numero: %d\n",menor);
       printf("Media aritmetica dos numeros: %0.001f",media);
       system("Pause");
     
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.