Ferreirinha.pt 0 Posted March 18, 2011 Report Share Posted March 18, 2011 #include <stdio.h> #include <math.h> #include <ctype.h> //Factorial int factorial (int n) { int res = 1; while (n>0) { res = res*n; n=n-1; } } int mainfactorial() { int n, res; printf ("Introduza um inteiro \n"); scanf ("%d", &n); res= factorial (n); printf ("O seu factorial é %d \n", res); return 0; } //somatorio int somatorio (int n) {int soma; int a; soma = 0; while (n>0) { printf ("Introduza um inteiro \n"); scanf ("%d", &a); soma = soma + a; n=n-1; } printf ("O somatório é %d \n", soma); } int mainsomatorio () { int m, soma, a; printf ("Introduza um inteiro \n"); scanf ("%d", &m); soma = somatorio (m); printf ("O somatorio é %d \n",soma); return 0; } //Somatorio até n int somatorioAte (int n) { int soma=0; int parcela=1; while (parcela <=n) {soma= soma + parcela; parcela ++; } return (soma); } int mainsomatorioate () { int n, soma, parcela; printf ("Introduza um inteiro \n"); scanf ( "%d", &n); soma = somatorioAte (n); printf ("O Somatório é %d \n", soma); } //potencias de 2 int pot2 (int n) { int i=1; int res =1; int x=0; for (i>0; i<=n+1; i++) {printf ("2^%d = %d \n", i-1, res); while(x<i) { x++; res=res*2; } } return 0; } int mainpot2 () { int n, i, pot; printf("Insira um número \n"); scanf ( "%d", &n); pot2 (n); return (0); } //max int maxn (int m) { int max,n; max=n; while (n) { if (n >max) {max=n;} scanf ("%d", &n); m --; } return (max); } int mainmax() { int max, n, res; printf ("Introduza um numero \n"); scanf ("%d", &n); res= maxn (n); printf ("O maior é %d \n", res); return 0; } //impar typedef int bool; #define True 1 #define False 0 bool eimpar (int n) { bool res; if (n%2!=0) {res= 1;} else {res= 0;} return res; } bool maineimpar() { int n; bool res; printf ("Introduza um número \n"); scanf ("%d", &n); res= eimpar (n); if (res==1) {printf ("O número é impar \n");} else {printf ("O numero é par\n");} } // eMaiuscula bool eMaiuscula(char e) { bool res; if ((e>=65) && (e<=90)) { res= True;} else {res = False;} return res; } mainmaiuscula() { char e; bool res; getchar(); printf ("Introduza uma letra \n"); scanf ( "%c", &e); res=eMaiuscula (e); if (res==True) {printf ("A letra é maiuscula");} else {printf ("A letra é minuscula");} return 0; } //main int main () { int op=1; system("clear"); while(op!=0){ printf("1-> Factorial\n"); printf("2-> Somatorio\n"); printf("3-> Somatorio até... \n"); printf("4-> Potencias de 2 \n"); printf("5-> Máximo \n"); printf("6-> Impar \n"); printf("7-> Maiuscula \n"); printf("0-> Sair\n"); printf("Escolha uma opção das acima descritas \n"); scanf("%d",&op); if(op==1) {mainfactorial();} if(op==2) {mainsomatorio();} if(op==3) {mainsomatorioate();} if(op==4) {mainpot2();} if (op==5) {mainmax();} if (op==6) {maineimpar();} if (op==7); {mainmaiuscula();} if(op==0) {printf("ADEUS\n");} getchar(); getchar(); } return(0); } Alguém me pode explicar porque que a função maiuscula é sempre feita mesmo nao sendo invocada? Link to post Share on other sites
kurayama 0 Posted March 18, 2011 Report Share Posted March 18, 2011 if (op==7); {mainmaiuscula();} Suponho que seja o ; no final do if Link to post Share on other sites
Diutsu 1 Posted March 19, 2011 Report Share Posted March 19, 2011 É isso. Para o que estás a fazer, usar if's seguidos é mau, o ideal é usares um switch case, que é mais eficiente que teres if's, o que estás a usar, e mesmo comparando com if's else, que seria a outra alternativa correcta. XX SINFO - Semana Informática Link to post Share on other sites
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