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

vasco16

[Ajuda] Funções em c++

7 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 ();
}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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;
                }

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora