elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  clase racional
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: clase racional  (Leído 1,428 veces)
flony


Desconectado Desconectado

Mensajes: 583



Ver Perfil
clase racional
« 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
Citar
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
Código:
// 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
Código:
// 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
Citar
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 ==========


« Última modificación: 9 Abril 2013, 05:59 am por flony » En línea

si un problema no tiene solucion entonces no es un problema...es algo inevitable
flony


Desconectado Desconectado

Mensajes: 583



Ver Perfil
Re: clase racional
« Respuesta #1 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
Código:
// 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
Código:
// 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:


En línea

si un problema no tiene solucion entonces no es un problema...es algo inevitable
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
se puede dar herencia de una clase anidada a una clase normal.
Java
kev4142 0 3,282 Último mensaje 7 Agosto 2009, 20:46 pm
por kev4142
Problema de interacion entre una clase Interfaz y la clase que la llama
Java
yeah69 4 4,225 Último mensaje 21 Mayo 2010, 06:30 am
por we4rt
Acceder a una variable privada de una clase desde otra clase
Programación C/C++
Alvaro093 4 29,973 Último mensaje 27 Enero 2012, 09:46 am
por wachi
De Real a Racional SIN Strings
Programación General
matutefer 2 1,708 Último mensaje 14 Noviembre 2014, 04:20 am
por engel lex
La opinión (bastante racional) de Tyson sobre los OVNIs « 1 2 »
Foro Libre
@synthesize 11 4,505 Último mensaje 15 Abril 2015, 13:13 pm
por @synthesize
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines