Jump to content

Recommended Posts

Posted

Boas...

Eu tou aqui com um pequeno problema e gostava que me ajudassem...Eu tenho que fazer um problema com classes onde o problema e o seguinte.

" Problema 1

a) implemente(declare) uma classe denominada CCusto que permite definir o preço de um produto em euros e centimos(ambos inteiros), tendo em conta as alineas e o problema 2 seguintes.

b) implemente um construtor por defeito( que coloca o preço em 0,00), um construtor por enumeração(que recebe o preço em euros e centimos, sendo centimos facultativos, tendo valor 0 por omissão) e um constuctor por cópia.

c) Nessa classe, os centimos sao sempre inferiores a 100. Crie um metodo chamado corrige_centimos() para garantir essa restriçao, corrigindo o valor(centimos e euros) no caso de os centimos serem superior a 99.

d) Implemente a sobrecarga do operador * ( permite multiplicar um custo por um valor real, positivo). Sugere-se fazer a operação em centimos.

A classe acima deve permitir o codigo seguinte:

int main(){

CCusto arroz(1), massa(0,80), aux(arroz), arroz_especial;

arroz_especial=aux*1.2;

}

Problema 2

Dada a classe CCusto do problema anterior implemente uma classe derivada CValor que inclua(alem do preço do produto em euros e centimos) o valor do IVA(real entre 0 e 23) a pagar pelo produto. Declare( nao e necessario definir) um construtor por omissao, um por enumeraçao e um por copia.

Implemente o metodo pvp() que retorna o preço( do tipo CCusto) de venda ao publico de um produto( preço do objecto da classe CValor, acrescentando o imposto). Se o valor do IVA for 23, o custo do produto e multiplicado por 1.23. Pode ser necessario corrigir os centimos se estes ultrapassarem 99. "

Este e o enunciado do problema... Eu tentei faze-lo para tentar aprender e andei a procurar na net, ver os tutorias que havia e os apontamentos do meu professor, etc.

No entanto tenho erros.. e não consegui seguir em frente :X

Será que me podem ajudar ??

======================================================================================

Este e o meu codigo,

#include <iostream>
#include <fstream>

using namespace std;

class CCusto
{
private:
 int euros;
 int centimos;

public:
 CCusto(){
   euros=centimos=0;      // construtor por  omissão ou defeito
 }

 CCusto( CCusto &C){
   euros=C.euros;
   centimos=C.centimos; // construtor por copia
 }

 CCusto( int E, int C){      //  construtor por enumeração
   euros=E;
   centimos=C;
 }

 // metodo que vai corrigir os centimos
 int corrige_centimos(){
   if( centimos > 99) return 1;
   euros=1;
   centimos= 0;
 }

 //implementar a sobrecarga do operador *
 CCusto CCusto:: operator* ( CCusto &Valor){
   return (Valor.euros*euros, Valor.centimos*centimos);
 }
}

int main(){
 CCusto arroz(1,0), massa (0,80), aux(arroz), arroz_especial;
 arroz_especial=aux*1.2;
 system("PAUSE");
 return(0);
}

class CValor : private CCusto{
 int pvp(){
   int euros;
   int centimos;
   return (euros*1.23, centimos*1,23) ;
   if(centimos>99) return 1;
   euros=1;
   centimos=0;
 }
}
Posted

A nao existencia da identacao deixa o codigo muito confuso para se resolver so a olhar para ele.

isto funciona??

return (Valor.euros*euros, Valor.centimos*centimos);

nao devias de retornar um CCusto??

Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender.

A beleza de um código está em decompor problemas complexos em pequenos blocos simples.

"learn how to do it manually first, then use the wizzy tool to save time."

"Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast."

Posted

error C2628: 'CCusto' followed by 'int' is illegal (did you forget a ';'?)

cpp(39): error C3874: return type of 'main' should be 'int' instead of 'CCusto'

cpp(41): error C2679: binary '*' : no operator found which takes a right-hand operand of type 'double' (or there is no acceptable conversion)

cpp(32): could be 'CCusto CCusto::operator *(CCusto &)'

1> while trying to match the argument list '(CCusto, double)'

cpp(43): error C2664: 'CCusto::CCusto(CCusto &)' : cannot convert parameter 1 from 'int' to 'CCusto &'

cpp(34): error C2664: 'CCusto::CCusto(CCusto &)' : cannot convert parameter 1 from 'int' to 'CCusto &'

cpp(56): fatal error C1004: unexpected end-of-file found

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.