Ir ao conteúdo

C Ex Maior e Menor em C (com passagem por referência)


Ir à solução Resolvido por Gustavo Tavares Isobe,

Posts recomendados

  • Solução
Postado

[JÁ RESOLVI !! ]

o que há de errado no meu programa, que não lê variáveis negativas ?

image.thumb.png.cec8fc5c42a3be3efcb2bb9219b8907b.png

#include <stdio.h>

void maior_e_menor(int *a, int *b, int *c)
{
    int i, maior = 0, menor = 0 ;
        if (*a > *b )
        {
            if (*a > c)
                maior = *a ; 
        }else
            if (*b > *a)
            {
                if (*b > *c)
                    maior = *b ;
            }else
                if (*c > *a)
                {
                    if (*c > *b)
                        maior = *c ;
                }
    if (*a < *b)
    {    if (*a < *c)
        
            menor = *a ; 
    }else
            if (*b < *a) 
            {   if (*b < *c)
                    menor = *b ;
            }else
                    if (*c < *a)
                    {   if (*c < *b)
                            menor = *c ;
                    }
    printf ("%d %d", maior, menor);
}

int main ()
{
    int num, num2, num3 ;
    scanf ("%d%d%d", &num, &num2, &num3) ;
    maior_e_menor (&num, &num2, &num3) ;
    
    
    return 0 ;
}

 

 

SOLUÇÃO :

23 minutos atrás, Gustavo Tavares Isobe disse:

Olá pessoal, boa noite !

O que há de errado no meu programa que ele não executa quando é digitado números negativos ??

 

#include <stdio.h>

void maior_e_menor(int *a, int *b, int *c)
{
    int i, maior = 0, menor = 0 ;
       if(*a < *b){
        if(*a < *c)
            menor = *a;
        else
            menor = *c;
    }
    else{
        if(*b < *c)
            menor = *b;
        else
            menor = *c;
    }
    if(*a > *b){
        if(*a > *c)
            maior = *a;
        else
            maior = *c;
    }
    else{
        if(*b > *c)
            maior = *b;
        else
            maior = *c;
    }
    printf ("%d %d", maior, menor);
}

int main ()
{
    int num, num2, num3 ;
    scanf ("%d%d%d", &num, &num2, &num3) ;
    maior_e_menor (&num, &num2, &num3) ;
    
    
    return 0 ;
}

 

 

  • Amei 1
Postado

@Gustavo Tavares Isobe    qual solução você teve ?   e não existe essa de o programa não conseguir ler variáveis negativas , não ,  testei aqui e funciona sim ,

negativos.jpg.c9424d149aec3b2667ad5bab72f0e2cc.jpg

e uma solução poderia ser assim  :

#define _CRT_SECURE_NO_WARNINGS  // para usar scanf e outras funcoe no visual studio
#include <stdio.h>
void maior_e_menor(int* a, int* b, int* c)
{
    int d = *a;
    if (*a < *b) *a = *b;
    if (*a < *c) *a = *c;    // a tem o maior
    if ( d < *b) *b =  d;
    if (*c < *b) *b = *c;    // b tem o menor
    printf("\n\tescreve resultado na funcao\n\
            \r\tMaior -: %d\n \
            \r\tMenor -: %d\n", 
            *a   ,  *b       );
}

int main()
{
    int num, num2, num3;
    scanf("%d%d%d", &num, &num2, &num3);
    maior_e_menor(&num, &num2, &num3);
    printf("\n\tescreve resultado na Main\n\
            \r\tMaior %d       \
            \n\tMenor %d\n\n\n", 
            num, num2)   ;
    return 0;
}

 

  • Amei 1
Postado

@devair1010 Olá boa noite, o problema do programa era que estava faltando um " * " dentro da função no endereço c ...e eu provavelmente eu estava testando o programa com um número negativo por último, e então quando eu chamava a função e realizava a passagem por referência a variável num3 travava. E a solução que obtive foi essa (o computador corrigiu e atribuiu a nota máxima)

#include <stdio.h>

void maior_e_menor(int *a, int *b, int *c)
{
    int i, maior = 0, menor = 0 ;
       if(*a < *b){
        if(*a < *c)
            menor = *a;
        else
            menor = *c;
    }
    else{
        if(*b < *c)
            menor = *b;
        else
            menor = *c;
    }
    if(*a > *b){
        if(*a > *c)
            maior = *a;
        else
            maior = *c;
    }
    else{
        if(*b > *c)
            maior = *b;
        else
            maior = *c;
    }
    printf ("%d %d", maior, menor);
}

int main ()
{
    int num, num2, num3 ;
    scanf ("%d%d%d", &num, &num2, &num3) ;
    maior_e_menor (&num, &num2, &num3) ;
    
    
    return 0 ;
}

 

  • Obrigado 1

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