• Viernes 8 de Noviembre de 2024, 07:47

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - princor

Páginas: [1]
1
C/C++ / Problema Con Programa
« en: Miércoles 25 de Julio de 2007, 13:29 »
tengo este programa
cabecera
Código: Text
  1.  
  2.  
  3. #include <iostream>
  4. using namespace std;
  5. class cajero
  6. {
  7. public:
  8.   //creamos el constructor y el destructor
  9.   cajero(int billetes500, int billetes100, int billetes50,
  10.     int billetes10, int monedas1);
  11.   ~cajero() {}
  12.   //metodos accesor
  13.   int obtenerBilletes500() const{return suBilletes500;}
  14.     int obtenerBilletes100() const{return suBilletes100;}
  15.     int obtenerBilletes50() const{return suBilletes50;}
  16.     int obtenerBilletes10() const{return suBilletes10;}
  17.   int obtenerMonedas1() const{return suMonedas1;}
  18.   int mostrarDineroTotal();
  19.   void meterDinero(int billetes500, int billetes100, int billetes50,
  20.     int billetes10, int monedas1);
  21.   void sacarDinero(int sumaDinero);
  22. private:
  23.   int suBilletes500;
  24.   int suBilletes100;
  25.   int suBilletes50;
  26.   int suBilletes10;
  27.   int suMonedas1;
  28. };
  29.  
y este el codigo fuente
Código: Text
  1.  
  2. /*este programa simulara un cajero, tendrá una clase donde se definira cajero. El cajero tendrá una determinada catidad de dinero
  3. y el usuario podra ir sacando dinero que se le dará en las antidades mas grandes de dinero posible*/
  4. #include "cajero.h"
  5. //creamos el cuerpo de los metodos de la clase cajero
  6. cajero::cajero(int billetes500, int billetes100, int billetes50,
  7.     int billetes10, int monedas1)
  8. {
  9.   suBilletes500 = billetes500;
  10.   suBilletes100 = billetes100;
  11.   suBilletes50 = billetes50;
  12.   suBilletes10 = billetes10;
  13.   suMonedas1 = monedas1;
  14. }
  15. int cajero::mostrarDineroTotal()
  16. {
  17.   int totalDinero;
  18.   totalDinero=(suBilletes500 * 500 + suBilletes100 * 100 + suBilletes50 * 50
  19.     + suBilletes10 * 10 + suMonedas1);
  20.   return totalDinero;
  21. }
  22. void cajero::meterDinero(int billetes500, int billetes100, int billetes50,
  23.     int billetes10, int monedas1)
  24. {
  25.   suBilletes500 = suBilletes500 + billetes500;
  26.   suBilletes100 = suBilletes100 + billetes100;
  27.   suBilletes50 = suBilletes50 + billetes50;
  28.   suBilletes10 = suBilletes10 + billetes10;
  29.   suMonedas1 = suMonedas1 + monedas1;
  30. }
  31. void cajero::sacarDinero(int sumaDinero)
  32. {
  33.   //creamos las variables donde se vera cuantos billetes se le daran al usuario
  34.   int billetes500, billetes100, billetes50, billetes10, monedas1, resto;
  35.   //dividimos para ver cuantos billetes de cada tipo hay que darle y utilizamos
  36.   //el operado mudulus para ver cual es el resto
  37.   billetes500 = sumaDinero / 500;
  38.   resto = sumaDinero % 500;
  39.   billetes100 = resto / 100;
  40.   resto = resto % 100;
  41.   billetes50 = resto / 50;
  42.   resto = resto % 50;
  43.   billetes10 = resto / 10;
  44.   resto = resto % 10;
  45.   monedas1 = resto / monedas1;
  46.   //quitamos los billetes al cajero
  47.     suBilletes500 = suBilletes500 - billetes500;
  48.   suBilletes100 = suBilletes100 - billetes100;
  49.   suBilletes50 = suBilletes50 - billetes50;
  50.   suBilletes10 = suBilletes10 - billetes10;
  51.   suMonedas1 = suMonedas1 - monedas1;
  52.   //mostramos en la pantalla la cantidad de billetes de cada tipo que ha recibido
  53.   cout <<"usted ha obtenido " << billetes500 << "billetes de 500 \n";
  54.   cout << billetes100 << "billetes de 100 \n";
  55.   cout << billetes50 << "billetes de 50 \n";
  56.   cout << billetes10 << "billetes de 10 \n";
  57.   cout << monedas1 << "monedas de 1 \n";
  58. }
  59. /*=============================================================*/
  60. //creamos los prototipos de las funciones
  61. int hacerMostrarMenu();
  62. void hacerSacarDinero(cajero);
  63. void hacerMostrarDineroTotal(cajero);
  64. void hacerMeterDinero(cajero);
  65. /*=============================================================*/
  66. int main()
  67. {
  68.   enum elegir {mostrarMenu = 1, sacarDinero,
  69.              mostrarDineroTotal, meterDinero,
  70.              salir};
  71.   int elegir = mostrarMenu;
  72.   int quick = false;
  73.   cajero cajero1(100,100,50,100,1000);
  74.   while (quick == false)
  75.   {
  76.     elegir = hacerMostrarMenu();
  77.     if (elegir < mostrarMenu || elegir > salir)
  78.     {
  79.       cout << "la opcion elegida no existe" << endl;
  80.       continue;
  81.     }
  82.     switch (elegir)
  83.     {
  84.     case sacarDinero:
  85.       hacerSacarDinero(cajero1);
  86.       break;
  87.     case mostrarDineroTotal:
  88.       hacerMostrarDineroTotal(cajero1);
  89.       break;
  90.     case meterDinero:
  91.       hacerMeterDinero(cajero1);
  92.       break;
  93.     case salir:
  94.       quick = true;
  95.       cout << "saliendo..." << endl;
  96.       break;
  97.     }
  98.   }
  99.   system("PAUSE");
  100.   return 0;
  101. }
  102. /*======================================================================*/
  103. //creamos los cuerpos de los metodos de las funciones
  104. int mostrarMenu()
  105. {
  106.   int elegir;
  107.   cout << "     ***MENU***    \n";
  108.   cout << "(1)saca dinero del cajero \n";
  109.   cout << "(2)muestra el dinero total que hay en el cajero \n";
  110.   cout << "(3)mete dinero al cajero \n";
  111.   cout << "(4)salir del programa \n";
  112.   cout << endl << endl;
  113.   cout << "elige una opcion \n";
  114.   cin >> elegir;
  115.   cout << endl;
  116.   return elegir;
  117. }
  118. void sacarDinero(cajero cajero1)
  119. {
  120.   int cantidadDinero;
  121.   cout << "cuanto dinero quieres sacar \n";
  122.   cin >> cantidadDinero;
  123.   cout << endl << "se le entregara el dinero con losbilletes mas grandes que tenga el cajero \n";
  124.   cajero1.sacarDinero(cantidadDinero);
  125. }
  126. void mostrarDineroTotal(cajero cajero1)
  127. {
  128.   cout << "el dinero total que esta disponible en el cajero es de " << cajero1.mostrarDineroTotal() << " euros \n";
  129. }
  130. void meterDinero(cajero cajero1)
  131. {
  132.   int billetes500, billetes100, billetes50, billetes10, monedas1;
  133.   cout << "escribe el numero de billetes de 500 que quieres añadir al cajero ";
  134.   cin >> billetes500;
  135.   cout << endl << "escribe el numero de billetes de 100 que quieres añadir al cajero ";
  136.   cin >> billetes100;
  137.     cout << endl << "escribe el numero de billetes de 50 que quieres añadir al cajero ";
  138.   cin >> billetes50;
  139.     cout << endl << "escribe el numero de billetes de 10 que quieres añadir al cajero ";
  140.   cin >> billetes10;
  141.   cout << endl << "escribe el numero de monedas de 1 euro que quieres añadir al cajero ";
  142.   cin >> monedas1;
  143.   cout << endl;
  144.   cajero1.meterDinero(billetes500, billetes100, billetes50, billetes10, monedas1);
  145. }
  146. /* ====================== FIN DEL PROGRAMA ======================= */
  147.  
  148.  
  149.  

al compilarlo me da estos errores

Warning   1   warning C4700: uninitialized local variable 'monedas1' used   c:\documents and settings\rafael\my documents\visual studio 2005\projects\cajero\cajero\cajero.cpp   44   


Error   2   error LNK2019: unresolved external symbol "void __cdecl hacerMeterDinero(class cajero)" (?hacerMeterDinero@@YAXVcajero@@@Z) referenced in function _main   cajero.obj   

Error   3   error LNK2019: unresolved external symbol "void __cdecl hacerMostrarDineroTotal(class cajero)" (?hacerMostrarDineroTotal@@YAXVcajero@@@Z) referenced in function _main   cajero.obj   


Error   4   error LNK2019: unresolved external symbol "void __cdecl hacerSacarDinero(class cajero)" (?hacerSacarDinero@@YAXVcajero@@@Z) referenced in function _main   cajero.obj   

Error   5   error LNK2019: unresolved external symbol "int __cdecl hacerMostrarMenu(void)" (?hacerMostrarMenu@@YAHXZ) referenced in function _main   cajero.obj   

Error   6   fatal error LNK1120: 4 unresolved externals   C:\Documents and Settings\rafael\My Documents\Visual Studio 2005\Projects\cajero\Debug\cajero.exe   



he buscado para ver de que trata estos errores pero no logro solucionar el problema.
Gracias de antemano

2
C/C++ / Problema Con Las Clases
« en: Martes 17 de Julio de 2007, 19:44 »
bueno pues acabo de empezar a estudiar c++ en unos tutoriales y hay un programa que no consigo entenderlo bien, a ver si me podeis ayudar
esta es la cabecera donde hago la clase

Código: Text
  1.  
  2. #include <iostream>
  3. class punto
  4. {
  5. public:
  6. int obtenerX() const {return suX;}
  7. int obtenerY() const {return suY;}
  8. void cambiarX (int x) {suX= x;}
  9. void cambiarY (int y) {suY= y;}
  10. private:
  11. int suX;
  12. int suY;
  13. };
  14. class rectangulo
  15. {
  16. public:
  17. rectangulo(int superior, int derecha, int inferior, int izquierda);   //constructor
  18. ~rectangulo() {}    //destructor (inline)
  19.     // funciones para obtener los datos superior, inferior, derecha e izquierda
  20. //todos ellos declarados inline
  21. int obtenerSuperior() const {return susuperior;}
  22. int obtenerDerecha() const {return suderecha;}
  23. int obtenerInferior() const {return suinferior;}
  24. int obtenerIzquierda() const {return suizquierda;}
  25. //funciones para modificar los datos anteriores
  26. //todos ellos declarados inline
  27. void cambiarSuperior(int superior) {susuperior= superior;}
  28. void cambiarDerecha(int derecha) {suderecha= derecha;}
  29. void canbiarInferior(int inferior) {suinferior= inferior;}
  30. void cambiarIzquierda(int izquierda) {suizquierda= izquierda;}
  31. //creamos funciones para obtener los 4 puntos de las esquinas
  32. //todos ellos inline
  33. punto obtenerSuperiorDerecha() const {return superiorDerecha;}
  34. punto obtenerSuperiorIzquierda() const {return superiorIzquierda;}
  35. punto obtenerInferiorDerecha() const {return inferiorDerecha;}
  36. punto obtenerInferiorIzquierda() const {return inferiorIzquierda;}
  37. //creamos funciones para cambiar los 4 puntos de las esquinas
  38. //todos ellos inline
  39.     void ConfigurarSuperiorIzquierda(punto Localizacion)  {superiorIzquierda = Localizacion;}
  40.     void ConfigurarInferiorIzquierda(punto Localizacion)  {inferiorIzquierda = Localizacion;}
  41.     void ConfigurarSuperiorDerecha(punto Localizacion)  {superiorDerecha = Localizacion;}
  42.     void ConfigurarInferiorDerecha(punto Localizacion)  {inferiorDerecha = Localizacion;}
  43.     //creamos una funcion que obtendrá el área del rectangulo
  44. int area();
  45. private:
  46. //declaramos 4 variables que seran los lados superior, inferior , derecha e izquierda int
  47. int susuperior;
  48. int suderecha;
  49. int suinferior;
  50. int suizquierda;
  51. //declaramos 4 variable que seran los 4 puntos de las esquinas y seran del tipo punto ya que obtienen sus coordenadas de la clase punto
  52. punto superiorDerecha;
  53. punto superiorIzquierda;
  54. punto inferiorDerecha;
  55. punto inferiorIzquierda;
  56. };
  57.  
  58.  
y este el resto del programa

Código: Text
  1.  
  2. #include "rectangulo.h"
  3. using namespace std;
  4. //creamos el constructor creado en la clase cuadrado
  5. rectangulo::rectangulo(int superior, int derecha, int inferior, int izquierda)
  6. {
  7. //almacenamos los 4 datos como sus posiciones de sus lados
  8. susuperior = superior;
  9. suderecha = derecha;
  10. suinferior = inferior;
  11. suizquierda = izquierda;
  12.  
  13. //hacemos que cada punto obtenga sus coordenadas
  14. //empezamos con el puntp superior derecho
  15. superiorDerecha.cambiarX(derecha);
  16. superiorDerecha.cambiarY(superior);
  17. //hacemos lo propio con el punto superior izquierdo
  18.     superiorIzquierda.cambiarX(izquierda);
  19. superiorIzquierda.cambiarY(superior);
  20.     //hacemos lo propio con el punto inferior derecho
  21. inferiorDerecha.cambiarX(derecha);
  22. inferiorDerecha.cambiarY(inferior);
  23.     //hacemos lo propio con el punto inferior izquierdo
  24. inferiorIzquierda.cambiarX(izquierda);
  25.     inferiorIzquierda.cambiarY(inferior);
  26. }
  27. //definimos la funcion area de la clase cuadrado
  28. int rectangulo::area()
  29. {
  30. return (suizquierda - suderecha) * (susuperior - suinferior);
  31. }
  32. int main()
  33. {
  34. rectangulo miRectangulo (100, 20, 50, 80);
  35. int area = miRectangulo.area();
  36. cout << "el area del rectangulo es " << area << " \n";
  37. cout << "la coordenada x superior izquierda es: " << miRectangulo.obtenerSuperiorIzquierda().obtenerX() << " \n";
  38. system("PAUSE");
  39. return 0;
  40. }
  41.  
  42.  


bueno el problema es que  cuando escribo el constructor le voy asignando a x todo el rato un numero y este segun creo yo va cambiando no se guarda en ninguna parte por lo tanto no se como luego al llamar
"miRectangulo.obtenerSuperiorIzquierda().obtenerX()" como puede obtener la coordenada x correcta.
gracias por la ayuda

Páginas: [1]