Jump to content
Ferreirinha.pt

Função maiuscula é sempre feita

Recommended Posts

Ferreirinha.pt

#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?

Share this post


Link to post
Share on other sites
Diutsu

É 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

Share this post


Link to post
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.