Título: clase racional
Publicado por: flony en 9 Abril 2013, 05:57 am
hola amigos, tengo este problema y ya me maree bastante si alguno me puede echar una mano seria genial, programo en visual 2012 c++ "programar en c++ de deitel " problema n° 9.6 dice cree una clase llamada racional para realizar operaciones aritmeticas con fracciones escriba un programa para evaluar su clase. use variables enteras para representar los datos private de la clase:numerador y denominador. Proporcione un constructor que permita a un objeto de esta clase inicializarse cuando se declare. El constructor debe tener valores prederminados en caso de que no se proporcione inicializaodres y debe almacenar una fracion en forma reducida. Por ejemplo la fracion 2/4 se se almacena en el objeto como 1/2.Proporcione funciones mienbro public que realizen cada una de las siguientes tareas sumar restar multiplicar dividir imprimir fraciones en modfo a/b y en forma de punto flotante mi code es // Racional.h #ifndef RACIONAL_H #define RACIONAL_H
#pragma once
using namespace System;
namespace Racional {
public ref class miRacional { // TODO: agregar aquí los métodos de la clase. public: miRacional(int , int ); ~miRacional(); //funciones void suma(); void resta(); void multiplicar(); void dividir(); void ImprimirFraccion(); void ImprimirFlotante(); int reducir(int, int); private: int numerador; int denominador; }; } #endif y // Archivo DLL principal. //racional.cpp
#include "stdafx.h"
#include "Racional.h"
#include<iostream> using std::cout; using std::cin; using std::endl; using std::fixed;
#include<iomanip> using std::setprecision;
Racional::miRacional::miRacional(int num, int deno) { numerador=denominador=1; reducir(int num, int deno); }
int Racional::miRacional::reducir(int n, int d ) { int i; for (int i = 2; i <= 11; i++) { while ((d%i==0)&&(n%i==0)) { d=d/i; n=n/i; } } return d,n; }
void Racional::miRacional::suma() { int n1,d1,n2,d2; cout<<"ingrese numerador y denominador de 1° fraccion"; cin>>n1,d1; cout<<"ingrese numerador y denominador de 2° fraccion"; cin>>n2,d2; numerador=((n1*d2)+(d1*n2)); denominador=(d1*d2); }
void Racional::miRacional::resta() { int n1,d1,n2,d2; cout<<"ingrese numerador y denominador de 1° fraccion"; cin>>n1,d1; cout<<"ingrese numerador y denominador de 2° fraccion"; cin>>n2,d2; denominador=(d1*d2); numerador=((d2*n1)-(d1*n2)); }
void Racional::miRacional::multiplicar() { int n1,d1,n2,d2; cout<<"ingrese numerador y denominador de 1° fraccion"; cin>>n1,d1; cout<<"ingrese numerador y denominador de 2° fraccion"; cin>>n2,d2; numerador=(n1*n2); denominador=(d1*d2); }
void Racional::miRacional::dividir() { int n1,d1,n2,d2; cout<<"ingrese numerador y denominador de 1° fraccion"; cin>>n1,d1; cout<<"ingrese numerador y denominador de 2° fraccion"; cin>>n2,d2; numerador=n1*d2; denominador=d1*n2; }
void Racional::miRacional::ImprimirFraccion() { cout<<"el resultado es "<<numerador<<"/"<<denominador<<endl; system("PAUSE"); }
void Racional::miRacional::ImprimirFlotante() { double a; a=static_cast<double>(numerador)/denominador; cout<<"el resultado de la fraccion en decimales es"<< setprecision(5)<<fixed<<a; system("PAUSE"); }
el problema me lo da el constructor para reducir una fracion aca los errores 1>------ Operación Compilar iniciada: proyecto: Racional, configuración: Debug Win32 ------ 1> Racional.cpp 1>Racional.cpp(19): error C2144: error de sintaxis : 'int' debe estar precedido de ')' 1>Racional.cpp(19): error C2660: 'Racional::miRacional::reducir' : la función no acepta 0 argumentos 1>Racional.cpp(19): error C2059: error de sintaxis : ')' ========== Compilar: 0 correctos, 1 incorrectos, 0 actualizados, 0 omitidos ==========
Título: Re: clase racional
Publicado por: flony en 9 Abril 2013, 15:58 pm
me auto-respondo...pero no para infringir las reglas del foro sino por si le sirve a alguien, acá la solución // Racional.h #ifndef RACIONAL_H #define RACIONAL_H
#pragma once
using namespace System;
namespace Racional {
class miRacional { // TODO: agregar aquí los métodos de la clase. public: miRacional(int =1, int=1); ~miRacional(); //funciones void suma(); void resta(); void multiplicar(); void dividir(); void ImprimirFraccion(); void ImprimirFlotante(); void reducir(int, int); void reducida(int,int); private: int numerador; int denominador; }; } #endif
y // Archivo DLL principal. //racional.cpp
#include "Racional.h"
#include<iostream> using std::cout; using std::cin; using std::endl; using std::fixed;
#include<iomanip> using std::setprecision;
Racional::miRacional::miRacional(int deno, int num) { reducir(deno, num); }
void Racional::miRacional::reducir(int de, int nu) { reducida(de, nu); }
void Racional::miRacional::reducida(int d, int n) { int i; for (int i = 2; i <= 11; i++) { while ((d%i==0)&&(n%i==0)) { d=d/i; n=n/i; } } denominador=d; numerador=n; }
void Racional::miRacional::suma() { int n1,d1,n2,d2; cout<<"ingrese numerador y denominador de 1° fraccion"; cin>>n1,d1; cout<<"ingrese numerador y denominador de 2° fraccion"; cin>>n2,d2; numerador=((n1*d2)+(d1*n2)); denominador=(d1*d2); }
void Racional::miRacional::resta() { int n1,d1,n2,d2; cout<<"ingrese numerador y denominador de 1° fraccion"; cin>>n1,d1; cout<<"ingrese numerador y denominador de 2° fraccion"; cin>>n2,d2; denominador=(d1*d2); numerador=((d2*n1)-(d1*n2)); }
void Racional::miRacional::multiplicar() { int n1,d1,n2,d2; cout<<"ingrese numerador y denominador de 1° fraccion"; cin>>n1,d1; cout<<"ingrese numerador y denominador de 2° fraccion"; cin>>n2,d2; numerador=(n1*n2); denominador=(d1*d2); }
void Racional::miRacional::dividir() { int n1,d1,n2,d2; cout<<"ingrese numerador y denominador de 1° fraccion"; cin>>n1,d1; cout<<"ingrese numerador y denominador de 2° fraccion"; cin>>n2,d2; numerador=n1*d2; denominador=d1*n2; }
void Racional::miRacional::ImprimirFraccion() { cout<<"el resultado es "<<numerador<<"/"<<denominador<<endl; system("PAUSE"); }
void Racional::miRacional::ImprimirFlotante() { double a; a=static_cast<double>(numerador)/denominador; cout<<"el resultado de la fraccion en decimales es"<< setprecision(5)<<fixed<<a; system("PAUSE"); } ahora solo falta la implementacion...jijiji ahí no se si funca :silbar: :silbar:
|