DiogoRibeiro Posted July 8, 2012 at 12:45 PM Report #467893 Posted July 8, 2012 at 12:45 PM 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; } }
HappyHippyHippo Posted July 8, 2012 at 05:37 PM Report #467925 Posted July 8, 2012 at 05:37 PM 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 que erros ??? IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
DiogoRibeiro Posted July 8, 2012 at 06:30 PM Author Report #467945 Posted July 8, 2012 at 06:30 PM coloca um erro acerca da sobrecarga de operador. e outro referente ao metodo corrige_centimos.
pikax Posted July 8, 2012 at 06:42 PM Report #467946 Posted July 8, 2012 at 06:42 PM 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."
DiogoRibeiro Posted July 8, 2012 at 06:47 PM Author Report #467948 Posted July 8, 2012 at 06:47 PM Nao, nao funciona. Isso e o nome da classe, acho que da erro se tentar retorna-la.
HappyHippyHippo Posted July 8, 2012 at 07:18 PM Report #467955 Posted July 8, 2012 at 07:18 PM que erros ??? vê lá, não é muito difícil apresentar aqui os erros apresentados pois, não? descrições vagas do gênero : é coisa e tal não diz nada. a linha do erro também ajuda bastante IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
DiogoRibeiro Posted July 8, 2012 at 08:07 PM Author Report #467966 Posted July 8, 2012 at 08:07 PM 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
xtrm0 Posted July 8, 2012 at 09:01 PM Report #467973 Posted July 8, 2012 at 09:01 PM Falta o ; a seguir à classe <Signature goes here>
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now