Pregunta:
¿Ayuda, ejercicio de clases de c++?
Paúl
2011-05-26 22:05:07 UTC
El programa pide que se envíe un objeto con los parámetros referencia, titulo y autor, pero me esta imprimiendo basura en la parte de titulo y autor. El problema es que estas dos variables estan declaradas como arreglo de carateres y no se como hacer para que se impriman. lo que tengo es algo de mis conocimientos básicos. Como digo, me está imprimiendo basura; me gustaría que me ayudasen, ya que le he dado mil vueltas al problema pero ya no se que mas hacer. me han dicho que en vez de declarar como arreglos, declare estas dos variables como punteros. El problema es que no entiendo bien punteros.Y prefiero hacerlo como arreglo de caracteres. Alguien me ayuda por favor. 1000 gracias, 10 puntos y 5 estrellas. El programa está hecho en Visual 2010 pero también corre en BC5 quitándole el using namespace std; y agregandole .h a la libreria iostream.

#include ;
#include ;
#include ;
using namespace std;

class ficha
{
private:
unsigned *referencia;
char titulo[20];

public:
ficha(unsigned, char *);
ficha(ficha &f);
~ficha(void);
virtual void imprimir();
};


class ficha_d :
public ficha
{
private:
char autor[20];

public:
ficha_d(unsigned, char *, char *);
ficha_d(ficha_d &f1);
~ficha_d(void);
void imprimir();
};

ficha::ficha(unsigned ref, char *tit)
{
referencia= new unsigned;
*referencia=ref;
tit= new char;
strcpy(titulo, tit);
}

ficha::ficha(ficha &f)
{
*referencia=*f.referencia;
strcpy(titulo, f.titulo);
}

ficha::~ficha(void)
{ delete referencia;
delete titulo;
}

void ficha::imprimir()
{
cout<<"Referencia: "<<*referencia< cout<<"Titulo: "<}

ficha_d::ficha_d(unsigned ref, char *tit, char *aut):ficha(ref, tit)
{
aut= new char;
strcpy(autor, aut);
}

/*ficha_d::ficha_d(ficha_d &f1)
{
strcpy(autor, f1.autor);
}*/


ficha_d::~ficha_d(void)
{ delete autor;
}

void ficha_d::imprimir()
{
cout<<"Autor: "<}

void main()
{
ficha_d obj(101, "Calculo Vectorial", "Ing. Luis Toro");
obj.ficha::imprimir();
obj.imprimir();

system("pause");
system("cls");
}
Tres respuestas:
2011-05-26 22:47:18 UTC
Hola Paúl por lo visto te estas complicando un poco.



Empecemos, al estar utlizando la libreria iostream, no tienes necesidad de usar la libreria string.h, puesto q esta libreria es una libreria contenida dentro de iostream. El compilador te lo acepta pero en realidad es un error, puesto que es como agregar la misma libreria dos veces. Tampoco necesitas la libreria stdio.h.



Es el problema de usar estar acostumbrado a programar en forma estructurada y a veces cuesta un poco adaptarse programar bajo el paradigma de orientación a objetos (POO)



Bien despues de la libreria no necesitas el punto y coma (;)



En ves de trabajar con los vectores para almacenar nombres, o cadenas de caracteres puedes usar el objeto sobrecargado string. Y te evitas estar con la forma estructurada de manejar las cadenas de caracteres



ej: en vez de usar la siguiente clase



class ejemplo

{

private:

char nombre[20];

char comparame[20];

public:

//metodos

}



puedes usar la siguiente clase





class ejemplo

{

private:

string nombre; //este es un objeto sobrecargado

string comparame;

public:

//metodos

}



Bien antes para comparar, copiar cadenas, etc, tenias que usar las funciones strcmp, strcpy... etc



ahora puedes usar los operadores ==, el operador =.



Espero te sea de ayuda
?
2016-12-18 08:20:43 UTC
El de arriba es C, no C++, este es en C++: #comprise iostream #comprise string employing namespace std; int significant (){ string s; cout << "Ingrese un nombre: "; getline (cin, s); cout << "Hola"; cout << s << endl; return 0; }
zerart245
2011-05-26 22:55:22 UTC
imprime asi:



objeto.atributo


Este contenido se publicó originalmente en Y! Answers, un sitio web de preguntas y respuestas que se cerró en 2021.
Loading...