Jump to content

Programação em C- Qual é o maior numero entre 3 valores


9Lady_White9

Recommended Posts

Boa tarde, estou a tentar fazer um algoritmo em que diga qual nos 3 valores é maior, mas está-me sempre a dar erro. Alguém pode ajudar??

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

void main() {
    int num1,num2,num3,maior;

    printf("digite tres numeros : ");
    scanf("%d%d%d",&num1,&num2,&num3);
int result
    if (num1>num2)(num1>num3)
    result=num1;
    if (num2>num1)(num2>num3)
    result=num2;
    if (num3>num2)(num2>num1)
    result=num3;

    result 0

}

 

Edited by thoga31
GeSHi
Link to comment
Share on other sites

Vou acrescentar uns comentários ao teu código para listar alguns pontos:

void main() {
    int num1,num2,num3,maior;

    printf("digite tres numeros : ");
    scanf("%d%d%d",&num1,&num2,&num3);    // Os "%d" deverião estar separados por espaços ou outro separador, conforme o desejado no input
int result                                // Falta ';'
    if (num1>num2)(num1>num3)             // Falta o operador lógico '&&' ("and", "e"), e a condição deve estar toda entre parêntesis
    result=num1;
    if (num2>num1)(num2>num3)             // Idem
    result=num2;
    if (num3>num2)(num2>num1)             // Idem (mais, não é necessária esta verificação)
    result=num3;

    result 0                              // "result" não é palavra reservada, queres usar "return". Falta ';'.

}

 

Uma função que alcança o teu objectivo de comparar apenas 3 números tem este aspecto:

int maior3(int a, int b, int c) {
	if (a >= b && a >= c) return a;
	if (b >= a && b >= c) return b;
	return c;
}

 

Cumprimentos.

  • Vote 1

Knowledge is free!

Link to comment
Share on other sites

  • 1 month later...

deixa ver se ainda me lembro 😄
 

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

#define MAX(a,b) ((a) > (b) ? (a) : (b))
#define MAX3(a, b, c) MAX((a), MAX((b), (c)))

void main() {
    int num1,num2,num3;

    printf("digite tres numeros : ");
    scanf(" %d %d %d",&num1,&num2,&num3);

    printf("o maior e : %d\n", MAX3(num1, num2, num3));
}

 

Edited by HappyHippyHippo
IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Saliente-se que a solução proposta pelo @HappyHippyHippo (apesar de ser visualmente muito apelativa, pela sua brevidade) deverá ser utilizada apenas por quem sabe exactamente o que está a fazer com ela: a utilização de function-like macros (como MAX e MAX3 no exemplo) implica a avaliação repetida dos seus argumentos (p ex em MAX, a e b são avaliados duas vezes).

Para valores literais de a e b (ou c, no caso de MAX3) não há problema, mas quando esses argumentos recebem valores resultantes de outras funções, poderão criar-se situações de difícil depuração.

  • Vote 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.