9Lady_White9 Posted November 1, 2022 at 09:14 PM Report Share #627914 Posted November 1, 2022 at 09:14 PM (edited) 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 November 1, 2022 at 11:33 PM by thoga31 GeSHi Link to comment Share on other sites More sharing options...
thoga31 Posted November 1, 2022 at 11:35 PM Report Share #627916 Posted November 1, 2022 at 11:35 PM Revê a síntaxe das condições em C — tens de colocar toda a condição entre parêntesis. E faltam-te ainda os operadores booleanos lógicos ("e", "ou"). Knowledge is free! Link to comment Share on other sites More sharing options...
Ric Posted November 2, 2022 at 08:25 AM Report Share #627918 Posted November 2, 2022 at 08:25 AM Falta um && entre as condições dos if, de forma a comprar. De qualquer forma seria melhor colocar essas comparações dentro de um loop com um número n de iterecões correspondente ao número de inputs. Em vez de 3 poderiam ser 300 variáveis para comprar e aí, esta forma não seria praticável. Link to comment Share on other sites More sharing options...
thoga31 Posted November 2, 2022 at 08:08 PM Report Share #627938 Posted November 2, 2022 at 08:08 PM 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. 1 Report Knowledge is free! Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted December 14, 2022 at 02:29 PM Report Share #628891 Posted December 14, 2022 at 02:29 PM (edited) 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 December 14, 2022 at 02:30 PM by HappyHippyHippo IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
pwseo Posted December 22, 2022 at 12:05 AM Report Share #629108 Posted December 22, 2022 at 12:05 AM 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. 1 Report Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now