• Miércoles 6 de Noviembre de 2024, 09:37

Autor Tema:  POO  (Leído 2418 veces)

eruelas

  • Miembro activo
  • **
  • Mensajes: 69
  • Nacionalidad: mx
    • Ver Perfil
POO
« en: Jueves 6 de Noviembre de 2008, 06:24 »
0
bueno ps tengo unos problemillas kon este programa k me marca en los konstructores la vdd yo no veo el error y kisiera saber si me pueden ayudar a descubrirlos por favor esto es lo k tiene k hacer dicho programa gracias de antemano  :)
Se trabaja con productos perecederos y no perecederos de los cuales se tiene la informacion correspondiente o necesaria para desglosar en pantalla sus caracteristicas junto con subtotal,iva,total.
En caso de los perecederos si la fecha es mayor a la de hoy (Uno decide la fecha) desplegar un mensaje de que el producto ya caduco
aki les pongo el kodigo de lo k hice:
Código: Text
  1. #include<iostream.h>
  2. #include<conio.h>
  3. #include<string.h>
  4. class producto
  5. {
  6. public:
  7.     char nombre[30], codigo[30];
  8.     float precio;
  9.     int cantidad;
  10.  
  11. producto(char n[30],char cod[30], float pre, int can)
  12. {
  13. strcpy(producto::nombre,n);
  14. strcpy(producto::codigo,cod);
  15. precio=pre;
  16. cantidad=can;
  17. }
  18. float subtotal()
  19. {
  20. float subtotal1;
  21.     subtotal1=precio;
  22.     return subtotal1;
  23. }
  24. float iva()
  25. {
  26.     float iva1;
  27.     iva1=subtotal()*0.15;
  28.     return iva1;
  29. }
  30. float total()
  31. {
  32. float total1;
  33. total1=subtotal()+iva();
  34. return total1;
  35. }
  36. };
  37. class perecedero: public producto
  38. {
  39. int dia,mes,anio;
  40. perecedero(int d, int m, int a,char n[30],char cod[30], float pre, int can)
  41. {
  42.     d=dia;
  43.     m=mes;
  44.     a=anio;
  45.     strcpy(producto::nombre,n);
  46.     strcpy(producto::codigo,cod);
  47. }
  48. void fecha_caducidad()
  49. {
  50. cout<<"El producto esta caducado: ";
  51. }
  52. void p_imprime()
  53. {
  54. cout<<"El producto es perecedero: ";
  55. }
  56.  
  57. class no_perecedero: public producto
  58. {
  59. no_perecedero(char n[30],char cod[30], float pre, int can)
  60. {
  61. void np_imprime()
  62. {
  63. cout<<"El producto no es perecedero: ";
  64. } ;
  65. };
  66. };
  67. void main()
  68. {
  69. clrscr();
  70. producto pro;
  71. perecedero pe;
  72. no_perecedero np;
  73. int opcion;
  74. cout<<"Introduce el nombre del producto: ";
  75. cin>>pro.nombre;
  76. cout<<"Introduce el precio del producto: ";
  77. cin>>pro.precio;
  78. cout<<"Introduce la cantidad de producto: ";
  79. cin>>pro.cantidad;
  80. cout<<"Introduce el codigo del produtcto: ";
  81. cin>>pro.codigo;
  82. cout<<"Que tipo de producto es:nn 1 perecederonn 2 no perecedero";
  83. cin>>opcion;
  84. switch (opcion)
  85.    {
  86.    case 1:
  87.         cout<<"Ingresa Dia: "<<endl;
  88.         cin>>pe.dia;
  89.         cout<<"Ingresa Mes: "<<endl;
  90.         cin>>pe.mes;
  91.         cout<<"Ingresa Anio: "<<endl;
  92.         cin>>pe.anio;
  93.         if(pe.anio>2008&&pe.mes>5&&pe.dia>3)
  94.         {
  95.         cout<<"El producto ya caduco";
  96.         }
  97.         pe.fecha_caducidad();
  98.         pe.p_imprime();
  99.         cin.get();
  100.         break;
  101.    case 2:
  102.  
  103.         np.np_imprime();
  104.         cin.get();
  105.         break;
  106.    default:
  107.        cout<<"Error"<<endl;
  108.        cin.get();
  109.    }
  110. }
  111.  
  112.  
La imagen del progama

Espero me puedan ayudar gracias :beer:

daltomi

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: POO
« Respuesta #1 en: Jueves 6 de Noviembre de 2008, 07:49 »
0
Buenas.
Dejando de lado el lenguaje  y las caracteristicas extrañas de tú compilador, el error se debe a un mal cierre de las llaves({}), observa desde la línea 57 hasta la línea 66.

Suerte.

eruelas

  • Miembro activo
  • **
  • Mensajes: 69
  • Nacionalidad: mx
    • Ver Perfil
Re: POO
« Respuesta #2 en: Jueves 6 de Noviembre de 2008, 17:06 »
0
gracias por la respuesta ya lo cheke pero aun me marca error en el constructor y error de sintaxis en el void np_imprime()
y no c pork aka te dejo e codigo modificado
Código: Text
  1. #include<iostream.h>
  2. #include<conio.h>
  3. #include<string.h>
  4. class producto
  5. {
  6. public:
  7.     char nombre[30], codigo[30];
  8.     float precio;
  9.     int cantidad;
  10.  
  11. producto(char n[30],char cod[30], float pre, int can)
  12.     {
  13.         strcpy(producto::nombre,n);
  14.         strcpy(producto::codigo,cod);
  15.         precio=pre;
  16.         cantidad=can;
  17.     }
  18. float subtotal()
  19. {
  20.     float subtotal1;
  21.     subtotal1=precio;
  22.     return subtotal1;
  23. }
  24.     float iva()
  25.     {
  26.         float iva1;
  27.             iva1=subtotal()*0.15;
  28.     return iva1;
  29.     }
  30. float total()
  31. {
  32.     float total1;
  33.     total1=subtotal()+iva();
  34.     return total1;
  35. }
  36. };
  37. class perecedero: public producto
  38. {
  39.     int dia,mes,anio;
  40.     perecedero(int d, int m, int a,char n[30],char cod[30], float pre, int can)
  41.     {
  42.         d=dia;
  43.         m=mes;
  44.         a=anio;
  45.         strcpy(producto::nombre,n);
  46.         strcpy(producto::codigo,cod);
  47.     }
  48. void fecha_caducidad()
  49. {
  50.     cout<<"El producto esta caducado: ";
  51. }
  52.     void p_imprime()
  53.     {
  54.         cout<<"El producto es perecedero: ";
  55.     }
  56. };
  57. class no_perecedero: public producto
  58. {
  59.     no_perecedero(char n[30],char cod[30], float pre, int can)
  60.     {
  61.         void np_imprime()
  62.         {
  63.             cout<<"El producto no es perecedero: ";
  64.         }
  65.     }   
  66. };
  67.  
  68. void main()
  69. {
  70. clrscr();
  71. producto pro;
  72. perecedero pe;
  73. no_perecedero np;
  74. int opcion;
  75. cout<<"Introduce el nombre del producto: ";
  76. cin>>pro.nombre;
  77. cout<<"Introduce el precio del producto: ";
  78. cin>>pro.precio;
  79. cout<<"Introduce la cantidad de producto: ";
  80. cin>>pro.cantidad;
  81. cout<<"Introduce el codigo del produtcto: ";
  82. cin>>pro.codigo;
  83. cout<<"Que tipo de producto es:nn 1 perecederonn 2 no perecedero";
  84. cin>>opcion;
  85. switch (opcion)
  86.    {
  87.    case 1:
  88.         cout<<"Ingresa Dia: "<<endl;
  89.         cin>>pe.dia;
  90.         cout<<"Ingresa Mes: "<<endl;
  91.         cin>>pe.mes;
  92.         cout<<"Ingresa Anio: "<<endl;
  93.         cin>>pe.anio;
  94.         if(pe.anio>2008&&pe.mes>5&&pe.dia>3)
  95.         {
  96.         cout<<"El producto ya caduco";
  97.         }
  98.         pe.fecha_caducidad();
  99.         pe.p_imprime();
  100.         cin.get();
  101.         break;
  102.    case 2:
  103.  
  104.         np.np_imprime();
  105.         cin.get();
  106.         break;
  107.    default:
  108.        cout<<"Error"<<endl;
  109.        cin.get();
  110.    }
  111. }
  112.  
  113.  
aka te dejo los errores k me manda yo no kreo tener error de sintaxis pero aun asi me lo marka he estado revisando el kodigo y no veo la falla espero me puedan auxiliar gracias


m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: POO
« Respuesta #3 en: Jueves 6 de Noviembre de 2008, 17:11 »
0
Que yo sepa, en C++ no se pueden implementar los métodos dentro de la definición de clase. Sólo puedes poner los prototipos y la implementación tiene que estar fuera de la declaración de clase.

eruelas

  • Miembro activo
  • **
  • Mensajes: 69
  • Nacionalidad: mx
    • Ver Perfil
Re: POO
« Respuesta #4 en: Jueves 6 de Noviembre de 2008, 17:26 »
0
bueno gracias moskito pero si se puede lo he hecho kon otros programas y me va al 100 solo k este me da problemas en los constroctores y ps demas y no entiendo el pork ya he intentado kon poner el metodo fuera y salen errores :S he intentado varias kosas y nomas no da ya le kambie unas kosillas me marka menos errores donde siempre
Código: Text
  1. #include<iostream.h>
  2. #include<conio.h>
  3. #include<string.h>
  4. class producto
  5. {
  6. public:
  7.     char nombre[30], codigo[30];
  8.     float precio;
  9.     int cantidad;
  10.  
  11. producto(char n[30],char cod[30], float pre, int can)
  12.     {
  13.         strcpy(producto::nombre,n);
  14.         strcpy(producto::codigo,cod);
  15.         precio=pre;
  16.         cantidad=can;
  17.     }
  18. float subtotal()
  19. {
  20.     float subtotal1;
  21.     subtotal1=precio;
  22.     return subtotal1;
  23. }
  24.     float iva()
  25.     {
  26.         float iva1;
  27.             iva1=subtotal()*0.15;
  28.     return iva1;
  29.     }
  30. float total()
  31. {
  32.     float total1;
  33.     total1=subtotal()+iva();
  34.     return total1;
  35. }
  36. };
  37. class perecedero: public producto
  38. {
  39.     int dia,mes,anio;
  40.     perecedero(int d, int m, int a,char n[30],char cod[30], float pre, int can)
  41.     {
  42.         d=dia;
  43.         m=mes;
  44.         a=anio;
  45.         strcpy(producto::nombre,n);
  46.         strcpy(producto::codigo,cod);
  47.         precio=pre;
  48.         cantidad=can;
  49.     }
  50. void fecha_caducidad()
  51. {
  52.     cout<<"El producto esta caducado: ";
  53. }
  54.     void p_imprime()
  55.     {
  56.         cout<<"El producto es perecedero: ";
  57.     }
  58. };
  59. class no_perecedero: public producto
  60. {
  61.     no_perecedero(char n[30],char cod[30], float pre, int can)
  62.     {
  63.     strcpy(producto::nombre,n);
  64.         strcpy(producto::codigo,cod);
  65.         precio=pre;
  66.         cantidad=can;
  67. }   
  68.     void np_imprime()
  69.         {
  70.             cout<<"El producto no es perecedero: ";
  71.         }
  72.        
  73. };
  74.  
  75. void main()
  76. {
  77. clrscr();
  78. producto pro;
  79. perecedero pe;
  80. no_perecedero np;
  81. int opcion;
  82. cout<<"Introduce el nombre del producto: ";
  83. cin>>pro.nombre;
  84. cout<<"Introduce el precio del producto: ";
  85. cin>>pro.precio;
  86. cout<<"Introduce la cantidad de producto: ";
  87. cin>>pro.cantidad;
  88. cout<<"Introduce el codigo del produtcto: ";
  89. cin>>pro.codigo;
  90. cout<<"Que tipo de producto es:nn 1 perecederonn 2 no perecedero";
  91. cin>>opcion;
  92. switch (opcion)
  93.    {
  94.    case 1:
  95.         cout<<"Ingresa Dia: "<<endl;
  96.         cin>>pe.dia;
  97.         cout<<"Ingresa Mes: "<<endl;
  98.         cin>>pe.mes;
  99.         cout<<"Ingresa Anio: "<<endl;
  100.         cin>>pe.anio;
  101.         if(pe.anio>2008&&pe.mes>5&&pe.dia>3)
  102.         {
  103.         cout<<"El producto ya caduco";
  104.         }
  105.         pe.fecha_caducidad();
  106.         pe.p_imprime();
  107.         cin.get();
  108.         break;
  109.    case 2:
  110.  
  111.         np.np_imprime();
  112.         cin.get();
  113.         break;
  114.    default:
  115.        cout<<"Error"<<endl;
  116.        cin.get();
  117.    }
  118. }
  119.  
  120.  

aki les dejo mis errores reducieron jejeje


Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: POO
« Respuesta #5 en: Jueves 6 de Noviembre de 2008, 17:53 »
0
Se puede hacer perfectamente la implementacion dentro de la clase.

No mire mas que los primeros errores, son muy obvios, definiste un constructor con parametros y estas definiendo objetos cuyo constructor no tiene parametros ...

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

eruelas

  • Miembro activo
  • **
  • Mensajes: 69
  • Nacionalidad: mx
    • Ver Perfil
Re: POO
« Respuesta #6 en: Jueves 6 de Noviembre de 2008, 17:57 »
0
primero k nada gracias pero haber no entendi lo k kisiste decir esk aki  
Citar
producto(char n[30],char cod[30], float pre, int can)
aki
Citar
perecedero(int d, int m, int a,char n[30],char cod[30], float pre, int can)
y aki
Citar
#     no_perecedero(char n[30],char cod[30], float pre, int can)
le puse parametros  y aki no?
Citar
# producto pro;
# perecedero pe;
# no_perecedero np;

daltomi

  • Nuevo Miembro
  • *
  • Mensajes: 19
    • Ver Perfil
Re: POO
« Respuesta #7 en: Jueves 6 de Noviembre de 2008, 18:48 »
0
Eso y el echo de no llamar,en tu caso, explicitamente al contructor de la clase base, por ejemplo:
Código: Text
  1.  
  2. class A
  3. {
  4.     public:
  5.     A(int ia) { };
  6. };
  7.  
  8. class B : public A
  9. {
  10.     public:
  11.     B(int ib) : A(ib) { };
  12. };
  13.  
  14.  
Observa la línea 11.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: POO
« Respuesta #8 en: Jueves 6 de Noviembre de 2008, 18:52 »
0
Si, ademas de algo que no vi y es que usas herencia entre esas clases con lo cual ni siquiera arreglando eso te va a funcionar. La solucion es que crees los benditos constructores sin parametros:

Código: Text
  1. producto() { }
  2.  

Y etc (siempre public).

Tambien podes hacer esto para los constructores con parametros:
Código: Text
  1. no_perecedero(char n[30],char cod[30], float pre, int can) : producto(n,cod,pre,can)
  2. {
  3. }
  4.  
  5. perecedero(int d, int m, int a,char n[30],char cod[30], float pre, int can) : producto(n, cod, pre, can)
  6. {
  7.         d=dia;
  8.         m=mes;
  9.         a=anio;
  10. }
  11.  

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

eruelas

  • Miembro activo
  • **
  • Mensajes: 69
  • Nacionalidad: mx
    • Ver Perfil
Re: POO
« Respuesta #9 en: Jueves 6 de Noviembre de 2008, 19:01 »
0
gracias a los 2 ya lo intente asi komo le pusiste eternal pero ps m sigue arrojando errores jejeje kreo k fue mucho nuestro esfuerzo tendre k empezarlo de nuevo paso por paso y le dire k sucede gracias a todos!!xD

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: POO
« Respuesta #10 en: Jueves 6 de Noviembre de 2008, 19:11 »
0
Como quieras, sacando las cosas no standard y haciendo eso compila con VC++.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.