Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

vasco16

[Ajuda] Funções em c++

Recommended Posts

vasco16

#include <iostream>
using namespace std;

float base, altura;

void obter_dados ()
{
do
{
	cout<<"Introduza um valor para a base do triangulo";
	cin>>base;
	cout<<"Introduza um valor para a altura do triangulo";
	cin>>altura;
}
while (base <=0 || altura<=0);
}

float cal_area()
	{
		res = (base*altura)/2;
	}
main ()
{
	obter_dados();
cout <<"Area = " << cal_area (res);
}

que está mal aqui?

Share this post


Link to post
Share on other sites
merlin3000

Foste tu que fizes-te esse código? Ou pediram-te para o analisar? É que tá muita coisa mal.

Parece-me que te falta declarar a variável res e falta-te devolver algo na cal_area e também receber alguma variável nessa função.

Não só isso mas da maneira que tens o programa res terá que ser um apontador.

Podes alterar isso de modo a que não precises dessa variável por exemplo

float cal_area( float base, float altura )
{
    return base*altura/2;
}

Evitas as variáveis globais e o uso de uma variável extra *res. Embora no teu caso como usas a obter dados podes deixá-las como globais e simplesmente tirar os argumentos da função.


Criar é Divertido

Share this post


Link to post
Share on other sites
vasco16

sim fui eu.. acho que ja resolvi o problema assim:

#include <iostream>
using namespace std;

float base, altura;	
void obter_dados ()
{
	do
{
	cout<<"Introduza um valor para a base do triangulo";
	cin>>base;
	cout<<"Introduza um valor para a altura do triangulo";
	cin>>altura;
}
while (base <=0 || altura<=0);
}

float cal_area()
	{	
					float res;
		res = (base*altura)/2;
		return (res);
	}
int main ()
{
	obter_dados();
cout <<"Area = " << cal_area ();
}

Share this post


Link to post
Share on other sites
merlin3000

Já parece estar a funcionar mas podes sempre eliminar res e fazer o return directo da conta.


Criar é Divertido

Share this post


Link to post
Share on other sites
vasco16

Já parece estar a funcionar mas podes sempre eliminar res e fazer o return directo da conta.

ainda sou iniciante.. obrigado pela tua disponibilidade...

Share this post


Link to post
Share on other sites
Cybernavigator

Evita mesmo o uso de variáveis globais, podes criá-las  no main e andar a enviá-las de função em função.

Por exemplo, para isso ficar melhor um bocadito, substitui a função float cal_area por

        double cal_area(float base, float altura)
                {      
                        return (base*altura)/2;
                }

se fores mesmo a favor das tuas variaveis globais substitui apenas por

        double cal_area()
                {      
                        return (base*altura)/2;
                }


Melhores cumprimentos,João Lopes***Esta mensagem foi escrita ao abrigo do novo Acordo Ortográfico***

Share this post


Link to post
Share on other sites
vasco16

Evita mesmo o uso de variáveis globais, podes criá-las  no main e andar a enviá-las de função em função.

Por exemplo, para isso ficar melhor um bocadito, substitui a função float cal_area por

        double cal_area(float base, float altura)
                {      
                        return (base*altura)/2;
                }

se fores mesmo a favor das tuas variaveis globais substitui apenas por

        double cal_area()
                {      
                        return (base*altura)/2;
                }

ainda nao tinha aprendido isso assim.. :) mas vou passar a programar assim :D obrigado.

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

×

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.