Ir ao conteúdo

Posts recomendados

Postado

NÃO ESTÁ APRESENTANDO O MAIOR VALOR, O ENUNCIADO SEGUE EM CIMA DO COMANDO

#include <iostream>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// Crie um programa onde o usuário digita três valores e imprima na tela o maior valor
// devendo para isso, criar uma função Maior do tipo int que retorna o maior dos três valores.

int maior(int A, int B, int C)
{
	if (A>B)
	return A;
	
	return B;
	
	if(A>C)
	
	return A;
	
	return C;
	
	if(B>A)
	return B;
	
	return A;
	
	if(B>C)
	return B;
	
	return C;
	
	if(C>A)
	return C;
	
	return A;
	
	if(C>B)
	return C;
	
	return B;

	

}

main()
{
	int a, b, c;
	
	printf("\n Digite um valor para A: ");
	scanf("%d", &a);
	
	printf("\n Digite um valor para B: ");
	scanf("%d", &b);
	
	printf("\n Digite um valor para C: ");
	scanf("%d", &c);
	
	printf("\n O maior numero entre todos eh: %d", maior(a,b,c));
}

 

  • Curtir 1
Postado

Olá!

Não entendo a lógica por trás do que tentou escrever na função... Por exemplo

if(A>B)
    return A;

return B;

Mas e onde entra C? e se C for o maior?

E se você vai de qualquer forma retornar, pra que serve o resto do código da função?

 

Seu compilador aceitou isso? Era pra dar erro por 'código inatingível' ou sei lá o que...

  • Curtir 1
Postado

@João Victor Souza Carli       você precisa usar o  if  para comparar um valor com o outro para decidir qual é maior ,  e  você postou no tópico de linguagem  c  ,  mas colocou uma biblioteca da linguagem c++ ,  pois se você estiver fazendo esse código em  c++ , você pode colocar os números em um vetor  e usar o comando swap , que ordena um vetor de forma crescente , e depois você retornar o último número do vetor que será o maior ,  mas como a maioria dos comandos são da linguagem  c  , então essa função poderia ser assim  :

int maior(int A, int B, int C){
    if ( A > B && A > C )
        return A;
    else
        if(B > A && B > C )
            return B;
        else
            if(C > A && C > B )
                return C;
}

 

Postado
2 horas atrás, João Victor Souza Carli disse:

mas eu digito 3 valores e ele nao me mostra o maior valor , como escreveria ?

 

Então, Vitor, deve ter um milhão de maneiras de escrever isso, mas antes de tudo pense em como você escreveu: 

ia retornar A ou B e o resto do código serviria para que na função? 

 

Use as chaves e separe as condições...

 

Pense em como faria no papel: tem 3 números apenas A, B e C. Comparando dois números, ou o primeiro é maior que o segundo ou o segundo é maior que o primeiro. Se forem iguais não importa nesse caso. Se os 3 forem iguais qualquer um é maior, menor, mais feio, mais bonito....

 

Vendo pela ordem:

  • se (A>B) então claro que B não é o maior dos 3. Pode ser A ou C. Fim da questão: se (A>C) então o maior é A senão o maior é C
  • mas se não era então (B>A) e então por certo A não é o maior dos 3. Fim da questão: Pode ser B ou C. Se (B>C) então o maior é B senão é C. 

Só isso. Em linguagem C não por acaso fica igualzinho, porque a realidade é uma só:

    if (A > B)
    {
        if (A > C) return A;
        return C;
    }
    // entao ==> B > A
    if (B > C) return B;
    // entao ==> B > A mas ==> C > B
    return C;

Use seu computador para testar:

int testa_maior(int a, int b, int c)
{
    printf("maior(%d,%d,%d) retornou %d\n", a, b, c, maior(a, b, c));
}

nada mal, certo? Assim você pode escrever

int main()
{
    testa_maior(1, 2, 3);
    testa_maior(1, 3, 2);

    testa_maior(2, 1, 3);
    testa_maior(2, 3, 1);

    testa_maior(3, 1, 2);
    testa_maior(3, 2, 1);
}

E ver na sua tela

maior(1,2,3) retornou 3
maior(1,3,2) retornou 3
maior(2,1,3) retornou 3
maior(2,3,1) retornou 3
maior(3,1,2) retornou 3
maior(3,2,1) retornou 3

são 6 as combinações de 3 elementos 2 a 2, dizia o ensino médio... Se você testar as 6 estará coberto. Por isso os 6 testes em main()

É claro que há muitas outras maneiras de escrever, como o exemplo citado por @devair1010 .usando condições compostas e tal. Mas else e condições compostas são dispensáveis porque a solução é, digamos, linear.

Eis um programa de teste, mas acho que nem precisa disso 

int maior(int A, int B, int C)
{
    if (A > B)
    {
        if (A > C) return A;
        return C;
    }
    // entao ==> B > A
    if (B > C) return B;
    // entao ==> B > A mas ==> C > B
    return C;

}    // end maior()


int testa_maior(int a, int b, int c)
{
    printf("maior(%d,%d,%d) retornou %d\n", a, b, c, maior(a, b, c));
}

int main(int argc, char** argv)
{
    testa_maior(1, 2, 3);
    testa_maior(1, 3, 2);

    testa_maior(2, 1, 3);
    testa_maior(2, 3, 1);

    testa_maior(3, 1, 2);
    testa_maior(3, 2, 1);
}

 

 

  • Curtir 1
Postado

Ou então testar quem é o menor...

 

#include <stdio.h>

int maior(int a, int b, int c)
{
    if (a < b) a = b;
    if (a < c) a = c;
    return a;
}

int main()
{
	int a, b, c;

	printf("\n Digite um valor para A: ");
	scanf("%d", &a);

	printf("\n Digite um valor para B: ");
	scanf("%d", &b);

	printf("\n Digite um valor para C: ");
	scanf("%d", &c);

	printf("\n O maior numero entre todos eh: %d", maior(a,b,c));
}

 

  • Obrigado 1
  • 4 anos depois...
Postado

Boa Tarde!

 

O Problema

Crie um programa onde o usuário digita três valores e imprima na tela o maior valor devendo para isso, criar uma função Maior do tipo int que retorna o maior dos três valores.

 

Criar uma função maior, e não somente uma, função do tipo int (…)

A ideia do autor do tópico funciona, porém, suponho que o exercício não seja somente sobre fluxos, é muito mais sobre funções.

 

Logo, sem pensar muito (ou fetichismo), defina uma função que resolva para 2 inteiros e reutilize para 3.

Por exemplo,

#include <stdio.h>

int Maior (int a1, int a2, int a3);

int main (void) {
int v1 , v2 , v3;
  int r;
  printf ("Entre 3 inteiros: ");
  _1: if (EOF==(r= scanf ("%i",&v1))) return 1;
      if (1!=r) {
        getchar ();
        goto _1;
        }
  _2: if (EOF==(r= scanf ("%i",&v2))) return 1;
      if (1!=r) {
        getchar ();
        goto _2;
        }
  _3: if (EOF==(r= scanf ("%i",&v3))) return 1;
      if (1!=r) {
        getchar ();
        goto _3;
        }
  int m= Maior (v1,v2,v3);
  printf ("%s%d%c","Maior é: ",m,'\n');
  return 0;
  }

int
maior (int a1, int a2) {
  if (a1>a2) return a1;
  return a2;
  }

int
Maior (int a1, int a2, int a3) {
  return maior (maior (a1,a2),a3);
  }
    

 

***

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

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!