Polmax Posted March 4, 2012 Report Share Posted March 4, 2012 #include <stdio.h> int main () { printf ("%d",maior3); } int maior3 () { int n1,n2,n3; scanf ("%d","%d","%d",&n1,&n2,&n3); if (n1>n2)&&(n1>n3) return n1; else { if (n2>n3) return n2; else return n3; } } Link to comment Share on other sites More sharing options...
Gonka Posted March 4, 2012 Report Share Posted March 4, 2012 Faltam-te algumas condições... Link to comment Share on other sites More sharing options...
Polmax Posted March 4, 2012 Author Report Share Posted March 4, 2012 Quais condiçoes ? ? Link to comment Share on other sites More sharing options...
pmg Posted March 4, 2012 Report Share Posted March 4, 2012 #include <stdio.h> int main () { printf ("%d",maior3); Nao, nao! Desta maneira maior3 é um ponteiro ... que é interpretado pelo printf como inteiro! Tens que usar parentesis para chamar a funcao: printf("%d\n", maior3()); } /* ... */ What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código! Link to comment Share on other sites More sharing options...
Polmax Posted March 4, 2012 Author Report Share Posted March 4, 2012 Ahhhhh pois nao sabia, foi oficialmente o primeiro programinha que fiz em C ? Agora dame um erro diferente #include <stdio.h> //Ler 3 valores inteiros e "imprimir" o maior //Main unicamente "imprime uma funcao auxiliar com o nome de maior3" int main () { printf ("%d\n",maior3 ()); } //funcao auxiliar, compara 3 numeros inteiros e retorna o maior int maior3 () { int n1,n2,n3; scanf ("%d","%d","%d",&n1,&n2,&n3); if ((n1>n2)&&(n1>n3)) return (n1); else { if (n2>n3) return (n2); else return (n3); } } Erro-> In function ‘maior3’: warning: writing into constant object (argument 2) [-Wformat] warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘char *’ [-Wformat] Link to comment Share on other sites More sharing options...
pmg Posted March 4, 2012 Report Share Posted March 4, 2012 Agora dame um erro diferente int maior3 () { int n1,n2,n3; scanf ("%d","%d","%d",&n1,&n2,&n3); Tens que ter os %d numa unica string. O scanf() desenrasca-se assim if (scanf("%d%d%d", &n1, &n2, &n3) != 3) /* erro */; Tambem usei o valor de retorno do scanf(); neste caso, se for diferente de 3 indica que houve erro de leitura (3 porque estas a tentar ler para as 3 variaveis n1, n2, e n3). warning: format ‘%d’ expects argument of type ‘int *’, but argument 2 has type ‘char *’ [-Wformat] Quanto ao erro especificamente, o scanf tenta meter um int (par causa do primeiro "%d") no sitio de memoria onde esta o segundo "%d" ... mas este segundo "%d" e um char * e o scanf precisa de um int *. What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código! Link to comment Share on other sites More sharing options...
Polmax Posted March 4, 2012 Author Report Share Posted March 4, 2012 scanf ("%d,%d,%d",&a,&b,&c) Aquilo seria o correcto entao certo ? Link to comment Share on other sites More sharing options...
pmg Posted March 4, 2012 Report Share Posted March 4, 2012 Se quiseres que o utilizador tenha de meter virgulas logo a seguir aos numeros ... 😄 O "%d,%d,%d" é interpretado como 1) %d: ignora espacos em branco, le um inteiro, se possivel; senao devolve 0 2) , (a virgula): le uma virgula e ignora-a, se nao for possivel devolve 1 3) outro %d: ibnora espacos em branco, le um inteiro; se nao for possivel devolve 1 4) outra virgula 5) outro %d Ou seja, o input "4, 6, 8" iria meter 4 em a, 6 em b, e 8 em c e devolver 3; O input "dois, 3, 4" iria devolver 0 sem meter nada valido em a, nem b, nem c O input "2 3 4" iria devolver 1, meter 2 em a, e nao meter nada valido em b nem c. What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código! 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