Laweit 0 #1 Posted February 3, 2009 Esse código eu fiz a poucos dias para um amigo meu qual estava com "problemas" com a frações: Eu sei que tem algumas variáveis inúteis, pedaços descartáveis mas isso foi só pra quebrar o galho. Conforme o tempo passa eu irei editando: Fractions.h //////////////////////////////////////////////////////////////////////////////// // Esse é o arquivo cabeçalho do projeto // // Fractions Tool // // Feito por Marcelo Muzzi // // Copyright Marcelo Muzzi 2009 // // Todos direitos reservados // //////////////////////////////////////////////////////////////////////////////// int result, total, cima; class Fraction { public: int gcd(int, int); void lgc(int, int); void pF(int); void reduzir(int, int); void dividir(int, int, int, int); void multiplicar(int, int, int, int); void subtrair(int, int, int, int); void somar(int, int, int, int); }; void Fraction::pF(int kind) { Fraction a; int num1, den1, num2, den2; if (kind == 5){ cout << "Esse programa foi totalmente desenvolvido por Marcelo Muzzi" << "\nCopyright Marcelo Muzzi 2009\nTodos direitos reservados" << endl; } else if (kind > 5){ cout << "Erro!" << endl; } else{ cout << "Digite o numerador da primeira fracao: " << endl; cin >> num1; cout << "Digite o denominador da primeira fracao: " << endl; cin >> den1; cout << "Digite o numerador da segunda fracao: " << endl; cin >> num2; cout << "Digite o denominador da segunda fracao: " << endl; cin >> den2; if (kind == 1){ a.somar(num1, den1, num2, den2);} else if (kind == 2){ a.subtrair(num1, den1, num2, den2);} else if (kind == 3){ a.multiplicar(num1, den1, num2, den2);} else if (kind == 4){ a.dividir(num1, den1, num2, den2);} else{ cout << "Digite algo válido" << endl;} cout << "Resultado: " << cima << "/" << total << endl; a.reduzir(cima, total); cout << "Simplicado: " << cima << "/" << total << endl;} } //Esse é o Algoritimo de Euclides int Fraction::gcd(int num1, int num2){ return ( num2 == 0 ? num1 : gcd(num2, num1 % num2) ); //ou se não intendeu: /*if (num2 == 0) return num1; else return gcd(num2, num1 % num2);}*/} //esse é meu void Fraction::lgc(int num1, int num2){ result = ((num1 * num2) / gcd(num1, num2)); /*leia-se: result é igual a num1 vezes num2 dividido pelo mdc de num1 e num2*/} //esse também é meu void Fraction::reduzir(int num1, int num2){ int factor = gcd(num1, num2); cima /= factor; total /= factor; /*pra quem não intendeu: essa é uma formula que eu aprendi a poucos dias: cima é igual a cima(matematicamente impossível) dividido por fator que por sua vez é igual ao mdc de num1 e num2. e o mesmo para total*/} void Fraction::dividir(int num1, int den1, int num2, int den2){ cima = num1*den2; total = num2*den1; /*cima igual a num1 vezes den2 total é igual a num2 vezes den1*/} void Fraction::multiplicar(int num1, int den1, int num2, int den2){ cima = num1*num2; total = den1*den2; /*cima é igual a num1 vezes num2 e total igual a den1 vezes den2*/} void Fraction::subtrair(int num1, int den1, int num2, int den2) { if (den1 == den2){ cima = num1 - num2; total = den1;} else{ lgc(den1, den2); if (result == den1){ cima = num1 - ((result/den2)*num2);} else if (result == den2){ cima = num2 - ((result/den1)*num1);} else{ cima = (num1*result) - (num2*result);} total = result;} } void Fraction::somar(int num1, int den1, int num2, int den2) { if (den1 == den2){ cima = num1 + num2; total = den1;} else{ lgc(den1, den2); if (result == den1){ cima = num1 + ((result/den2)*num2);} else if (result == den2){ cima = num2 + ((result/den1)*num1);} else{ cima = (num1*result) + (num2*result);} total = result;} } Fractions.cpp: //////////////////////////////////////////////////////////////////////////////// // Esse é o arquivo principal do projeto // // Fractions Tool // // Feito por Marcelo Muzzi // // Copyright Marcelo Muzzi 2009 // // Todos direitos reservados // //////////////////////////////////////////////////////////////////////////////// #include <iostream.h> #include "fraction.h" int main() { int num1, den1, num2, den2; Fraction a; int ch; cout << "/////////////////////////////////////////////////////////////////////////" << endl; cout << "// Fractions Tool //" << endl; cout << "// Feito por Marcelo Muzzi //" << endl; cout << "// Copyright Marcelo Muzzi 2009 //" << endl; cout << "// Todos direitos reservados //" << endl; cout << "/////////////////////////////////////////////////////////////////////////" << endl; cout << "\n1) Somar\n2) Subtrair\n3) Multiplicar\n4) Dividir\n5) Creditos" << endl; cin >> ch; if (ch == 1){a.pF(1);} else if (ch == 2){a.pF(2);} else if (ch == 3){a.pF(3);} else if (ch == 4){a.pF(4);} else if (ch == 5){a.pF(5);} cout << "\n\n\n\n"; #ifdef WIN32 system("pause"); #endif return 0; } Divirtam-se Share this post Link to post Share on other sites
the_labrax 0 #3 Posted November 10, 2009 bem organizado eu acho que ficaria melhor com switch no começo, mas tá ótimo Share this post Link to post Share on other sites
Striker_Sky 0 #4 Posted March 17, 2010 Bem creativo, mais acho q vc errou uma função no Fractions.h linha #13 else if (ch == 2){a.pF(1);} else if (ch == 2){a.pF(2-1);} else if (ch == 2){a.pF(2+1);} Share this post Link to post Share on other sites
Dartier 0 #5 Posted March 17, 2010 nossa cara muito boa, é exelente pra quem tá na 7ª~8ª série. Share this post Link to post Share on other sites
Mickfern 32 #6 Posted April 5, 2010 Cara eu gostei muito da ideia, porém, sou noob. Como eu uso ? voce poderia me explicar? Share this post Link to post Share on other sites
dragonlorde 0 #7 Posted April 7, 2010 /\ To com mesma duvida.. Tem que compilar? qual programa usar? Share this post Link to post Share on other sites
Dark Skyllen 7 #8 Posted April 7, 2010 /\ To com mesma duvida..Tem que compilar? qual programa usar? Sim, tem que compilar.. pode ser usando o DevC++ Share this post Link to post Share on other sites