Ir ao conteúdo
  • Cadastre-se

Existe alguma parte do código que eu possa diminuir pra gastar menos recursos?


EdwardTheHead

Posts recomendados

Bom em 2016, terminei o 1° ano de sistemas de informação e nas férias fiquei programando esse código, se pudessem dar algumas críticas e sugestões apreciaria muito.

#include<stdio.h>
#include<math.h>
#define PI 3.14
float area;
int choice;
void leitura();
void triangulo()
{float base,altura;
printf("Digite a base do triangulo:\n");
scanf("%f",&base);
printf("Digite a altura do triangulo:\n");
scanf("%f",&altura);
area=(base*altura)/2;
printf("Area=%2.2f metros quadrados\n",area);
printf("Repetir Figura:1     Trocar Figura:2     Sair:3\n");
scanf("%i",&choice);
while(choice<1||choice>3)
{printf("Escolha Invalida!\nDigite Novamente:\n");
scanf("%i",&choice);
}
if(choice==1)
triangulo();
if(choice==2)
leitura();
}
void quadrado()
{float lado;
printf("Digite o valor dos lados do quadrado:\n");
scanf("%f",&lado);
area=lado*lado;
printf("Area=%2.2f metros quadrados\n",area);
printf("Repetir Figura:1     Trocar Figura:2     Sair:3\n");
scanf("%i",&choice);
while(choice<1||choice>3)
{printf("Escolha Invalida!\nDigite Novamente:\n");
scanf("%i",&choice);
}
if(choice==1)
quadrado();
if(choice==2)
leitura();
}
void circulo()
{float raio,valor;
printf("Digite o raio do circulo:\n");
scanf("%f",&raio);
area=PI*(valor=pow(raio,2));
printf("Area=%2.2f metros quadrados\n",area);
printf("Repetir Figura:1     Trocar Figura:2     Sair:3\n");
scanf("%i",&choice);
while(choice<1||choice>3)
{printf("Escolha Invalida!\nDigite Novamente:\n");
scanf("%i",&choice);
}
if(choice==1)
circulo();
if(choice==2)
leitura();
}
void retangulo ()
{float base,altura;
printf("Digite a base do retangulo:\n");
scanf("%f",&base);
printf("Digite a altura do retangulo:\n");
scanf("%f",&altura);
area=base*altura;
printf("Area=%2.2f metros quadrados\n",area);
printf("Repetir Figura:1     Trocar Figura:2     Sair:3\n");
scanf("%i",&choice);
while(choice<1||choice>3)
{printf("Escolha Invalida!\nDigite Novamente:");
scanf("%i",&choice);
}
if(choice==1)
retangulo();
if(choice==2)
leitura();
}
void cilindro()
{float raio,altura;
printf("Digite o raio da base do cilindro:\n");
scanf("%f",&raio);
printf("Digite a altura do cilindro:\n");
scanf("%f",&altura);
area=2*PI*raio*(altura+raio);
printf("Area=%2.2f metros quadrados\n",area);
printf("Repetir Figura:1     Trocar Figura:2     Sair:3\n");
scanf("%i",&choice);
while(choice<1||choice>3)
{printf("Escolha Invalida!\nDigite Novamente:");
scanf("%i",&choice);
}
if(choice==1)
cilindro();
if(choice==2)
leitura();
}
void trapezio()
{float basemaior,basemenor,altura;
printf("Digite a base maior do trapezio:\n");
scanf("%f",&basemaior);
printf("Digite a base menor do cilindro:\n");
scanf("%f",&basemenor);
printf("Digite a altura do cilindro:\n");
scanf("%f",&altura);
area=(basemaior+basemenor)/(2*altura);
printf("Area=%2.2f metros quadrados\n",area);
printf("Repetir Figura:1     Trocar Figura:2     Sair:3\n");
scanf("%i",&choice);
while(choice<1||choice>3)
{printf("Escolha Invalida!\nDigite Novamente:\n");
scanf("%i",&choice);
}
if(choice==1)
trapezio();
if(choice==2)
leitura();
}
void hexagono()
{float perimetro,apotema;
printf("Digite o perimetro do hexagono:\n");
scanf("%f",&perimetro);
printf("Digite a apotema do hexagono:\n");
scanf("%f",&apotema);
area=(apotema*perimetro)/2;
printf("Area=%2.2f metros quadrados",area);
printf("Repetir Figura:1     Trocar Figura:2     Sair:3\n");
scanf("%i",&choice);
while(choice<1||choice>3)
{printf("Escolha Invalida!\nDigite Novamente:\n");
scanf("%i",&choice);
}
if(choice==1)
hexagono();
if(choice==2)
leitura();
}
void pentagono()
{float perimetro, apotema;
printf("Digite o perimetro do pentagono:\n");
scanf("%f",&perimetro);
printf("Digite a apotema do pentagono:\n");
scanf("%f",&apotema);
area=(perimetro*apotema)/2;
printf("Area=%2.2f metros quadros\n",area);
printf("Repetir Figura:1     Trocar Figura:2     Sair:3\n");
scanf("%i",&choice);
while(choice<1||choice>3)
{printf("Escolha Invalida!\nDigite Novamente:\n");
scanf("%i",&choice);
}
if(choice==1)
pentagono();
if(choice==2)
leitura();
}
void poligono()
{
float perimetro,apotema;
printf("Digite a apotema do poligono regular:\n");
scanf("%f",&apotema);
printf("Digite o perimetro do poligono regular:\n");
scanf("%f",&perimetro);
area=(perimetro*apotema)/2;
printf("Area=%2.2f metros quadros",area);
printf("Repetir Figura:1     Trocar Figura:2     Sair:3\n");
scanf("%i",&choice);
while(choice<1||choice>3)
{printf("Escolha Invalida!\nDigite Novamente:\n");
scanf("%i",&choice);
}
if(choice==1)
poligono();
if(choice==2)
leitura();
}
void losango()
{float diagonalmaior,diagonalmenor;
printf("Digite a diagonal maior do losango:\n");
scanf("%f",&diagonalmaior);
printf("Digite a diagonal menor do losango:\n");
scanf("%f",&diagonalmenor);
area=(diagonalmaior*diagonalmenor)/2;
printf("Area=%2.2f metros quadrados\n",area);
printf("Repetir Figura:1     Trocar Figura:2     Sair:3\n");
scanf("%i",&choice);
while(choice<1||choice>3)
{printf("Escolha Invalida!\nDigite Novamente:\n");
scanf("%i",&choice);
}
if(choice==1)
losango();
if(choice==2)
leitura();
}
void romboide()
{float base,altura;
printf("Digite a base do romboide:\n");
scanf("%f",&base);
printf("Digite a altura do romboide:\n");
scanf("%f",&altura);
area=base*altura;
printf("Area=%2.2f metros quadrados",area);
printf("Repetir Figura:1     Trocar Figura:2     Sair:3\n");
scanf("%i",&choice);
while(choice<1||choice>3)
{printf("Escolha Invalida!\nDigite Novamente:\n");
scanf("%i",&choice);
}
if(choice==1)
romboide();
if(choice==2)
leitura();
}
void tetraedro()
{float aresta,valor;
printf("Digite a aresta do tetraedro:\n");
scanf("%f",&aresta);
area=pow(aresta,2);
printf("Area=%2.2f metros quadrados\n",area);
printf("Repetir Figura:1     Trocar Figura:2     Sair:3\n");
scanf("%i",&choice);
while(choice<1||choice>3)
{printf("Escolha Inválida!\nDigite Novamente:\n");
scanf("%i",&choice);
}
if(choice==1)
tetraedro();
if(choice==2)
leitura();
}
void cone()
{float arealateral,areabase,raio,geratriz;
printf("Digite a geratriz do cone:\n");
scanf("%f",&geratriz);
printf("Digite o raio do cone:\n");
scanf("%f",&raio);
arealateral=PI*raio*geratriz;
areabase=PI*raio*(geratriz+raio);
printf("Area lateral=%2.2f metros quadrados\n",arealateral);
printf("Superficie do cone=%2.2f metros quadrados\n",areabase);
printf("Repetir Figura:1     Trocar Figura:2     Sair:3\n");
scanf("%i",&choice);
while(choice<1||choice>3)
{printf("Escolha Inválida!\nDigite Novamente:\n");
scanf("%i",&choice);
}
if(choice==1)
cone();
if(choice==2)
leitura();
}
void cubo()
{float aresta,valor;
printf("Digite a aresta do cubo:\n");
scanf("%f",&aresta);
area=6*(valor=pow(aresta,2));
printf("Area=%2.2f metros quadrados\n",area);
printf("Repetir Figura:1     Trocar Figura:2     Sair:3\n");
scanf("%i",&choice);
while(choice<1||choice>3)
{printf("Escolha Inválida!\nDigite Novamente:\n");
scanf("%i",&choice);
}
if(choice==1)
cubo();
if(choice==2)
leitura();
}
void leitura()
{int escolha;
printf("Digite o numero correspondente a figura desejada:\n");
printf("\nFiguras:\n");
printf("1-Triangulo\n2-Quadrado\n3-Circulo\n4-Retangulo\n5-Cilindro\n6-Trapezio\n7-Hexagono\n8-Pentagono\n9-Poligono\n10-Losango\n11-Romboide\n12-Tetraedro\n13-Cone\n14-Cubo\n");
scanf("%i",&escolha);
if(escolha==1)
{printf("Formula:(base*altura)/2\n");
triangulo();}
if(escolha==2)
{printf("Formula: lado*lado\n");
quadrado();}
if(escolha==3)
{printf("Formula: PI*raio^2\n");
circulo();}
if(escolha==4)
{printf("Formula: base*altura\n");
retangulo();}
if(escolha==5)
{printf("Formula: 2 x PI x raio*(altura+raio)\n");
cilindro();}
if(escolha==6)
{printf("Formula: (basemaior+basemenor)/(2 x altura)");
trapezio();}
if(escolha==7)
{printf("Formula: (apotema x perimetro)/2\n");
hexagono();}
if(escolha==8)
{printf("Formula: (perimetro x apotema)/2\n");
pentagono();}
if(escolha==9)
{printf("Formula: (perimetro x apotema)/2\n");
poligono();}
if(escolha==10)
{printf("Formula: (diagonalmaior x diagonalmenor)/2\n");
losango();}
if(escolha==11)
{printf("Formula: Base x Altura\n");
romboide();}
if(escolha==12)
{printf("Fórmula: aresta^2 raiz quadrada de 3");
tetraedro();}
if(escolha==13)
{printf("Fórmula Área Lateral: PI x raio x geratriz\n");
printf("Fórmula Superficie do cone: PI*raio*(geratriz+raio)\n");
cone();}
if(escolha==14)
{printf("Fórmula: 6/(aresta^2)\n");
cubo();}    
}
main()
{
printf("Inicio!\n");
printf("Programa que calcula areas de figuras geometricas!\n");
leitura();
printf("Fim!");
}
 

Link para o comentário
Compartilhar em outros sites

Agora uma coisa que eu recomendaria é evitar usar recursividade, como você faz em seu programa chamando a mesma função dentro da própria função caso a pessoa deseje continuar na mesma figura, ou pior ainda chama a função leitura() caso queira trocar de figura, e usar ciclos while ou for ao invés disto.

 

Como regra geral a função deve ser finalizada quando seu trabalho for concluído e retornar a execução do programa para o escopo da função que a chamou.

 

Se você chamar outra função dentro da função esta função não estará finalizada, mas a nova função chamada ocupará espaço na memória, e a função inicial fica lá esperando até a nova função retornar a execução para seu escopo para que possa prosseguir com seus comandos e finalizar sua execução.

 

Então seu programa está encadeando um monte de funções, por exemplo: main() -> leitura() -> triangulo() -> triangulo() -> leitura() -> cubo() -> leitura() -> quadrado() -> ... etc

 

E assim por diante e só fará o caminho inverso, retornando às funções anteriores, quando alguém finalmente escolher a opção Sair. O que significa que quanto mais alguém usar o seu programa mais memória ele vai ocupar sem necessidade.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!