clase racional

Iniciado por flony, 9 Abril 2013, 05:57 AM

0 Miembros y 1 Visitante están viendo este tema.

flony

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
Citarcree 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
Citar1>------ 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 ==========
si un problema no tiene solucion entonces no es un problema...es algo inevitable

flony

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:
si un problema no tiene solucion entonces no es un problema...es algo inevitable