|
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.
Mensajes - waters
Páginas: [1]
1
« en: Jueves 12 de Junio de 2008, 03:21 »
olvide decir que el codigo compila y anda bien. los problemas los tengo al crear un main y probar los metodos. utilize el compilador dev-c++. les dejo el codigo del main.
#include <cstdlib> #include <iostream> #include "Discos.h" #include "Coleccion.h"
using namespace std;
int main(int argc, char *argv[]) { Coleccion nuevacoleccion("Progresiva"); Discos cd1("dark side of the moon","pink floyd",10,43,30,1,4,1973); Discos cd2,cd3("pepe","pf",10,43,20,1,4,1234),cd4,cd5,cd6,cd7,cd8,cd9,cd10; cout<<cd1; cd1.settema("speak to me",1); cd1.settema("breathe",2); cd1.settema("on the run",3); cd1.settema("time",4); cd1.settema("the great gig in the sky",5); cd1.settema("money",6); cd1.settema("us and them",7); cd1.settema("any colour you like",8); cd1.settema("brain damage",9); cd1.settema("eclipse",10); +cd1; nuevacoleccion.agregardisco(cd1); nuevacoleccion.agregardisco(cd2); nuevacoleccion.agregardisco(cd3);
cout<<endl; //nuevacoleccion.imprimirtodoslosdiscos(); // nuevacoleccion.eliminardisco(cd10); // nuevacoleccion.imprimirtodoslosdiscos(); system("PAUSE"); return EXIT_SUCCESS; }
2
« en: Lunes 9 de Junio de 2008, 01:50 »
Hola. que tal? este es mi primer mensaje en el foro. cree una clase coleccion a la cual se le pueden agregar y eliminar objetos de una clase disco y tambien imprimirlos en pantalla. tengo un problema con el metodo agregardisco, se copian mal los datos y al cerrar la aplicacion el compilador me da un mensaje de error. hay partes que estan comentadas y otras que las agregue recientemente, ya que probe de todo y no anda. espero que prueben el codigo para que vean bien cuales son sus fallas. espero una respuesta y la agradezco saludos.
Clase fecha :
#ifndef FECHA_H #define FECHA_H #include <iostream> #include <cstdlib>
using namespace std;
class Fecha { public: Fecha(int=1,int=1,int=2007); ~Fecha(); void imprimefecha()const; int getdia()const; int getmes()const; int getanio()const; void setdia(int); void setmes(int); void setanio(int); void setfecha(int,int,int); private: int dia; int mes; int anio; };
#endif
#include "Fecha.h"
Fecha::Fecha(int d,int m,int a) { setfecha(d,m,a); }
Fecha::~Fecha() { }
void Fecha::setfecha(int d,int m,int a) { setdia(d); setmes(m); setanio(a); }
void Fecha::setanio(int a) { if((a>1900) && (a< 2200)) { anio=a; } else { anio=2007; } }
void Fecha::setmes(int m) { if((m>=0) && (m<13) ) { mes=m; } else { mes=1; } }
void Fecha::setdia(int d) {
// verificardia(d) crearia una funcion para verificar que el dia ingresado es correcto dia=d; } int Fecha::getanio()const { return anio; }
int Fecha::getmes()const { return mes; }
int Fecha::getdia()const { return dia; }
void Fecha::imprimefecha()const { cout<<dia<<"/"<<mes<<"/"<<anio<<endl; }
Clase Discos :
#ifndef DISCOS_H #define DISCOS_H #include <cstring> #include <iostream> #include <stdlib.h> #include "Fecha.h"
using namespace std;
class Discos {
friend ostream & operator<<(ostream&,const Discos &);
public: Discos(); Discos(string,string,int); Discos(string,string,int,int,int,int,int,int); ~Discos(); string getnombredisco()const; string getinterprete()const; void setnombredisco(string); void setinterprete(string); static int getcantidaddiscos(); void setcantidadtemas(int); void settema(string,int); void operator+(); void operator-();
private: string nombredisco; string interprete; Fecha lanzamiento; int minduracion; int segduracion; static int cantidaddiscos; string *temas; int cantidadtemas; bool dond; };
#endif
#include "Discos.h" #include <conio.h> #include <stdio.h> #include <cstdlib>
using namespace std;
ostream & operator<<(ostream & salida, const Discos &cd) { salida<<"CD ="<<cd.getnombredisco()<<endl<<"Artista = "<<cd.getinterprete(); }
void Discos::operator+() { cout<<endl; if(dond==false) { for(int j=0;j<cantidadtemas;j++) { cout<<"track 0"<<j+1<<":"<<temas[j]<<endl; } } dond=true;
}
void Discos::operator-() { if(dond==true) { system("CLS"); cout<<nombredisco<<endl<<interprete; } dond=false; }
int Discos::cantidaddiscos=0;
Discos::Discos() { nombredisco="xx"; interprete="yy"; cantidaddiscos++; cantidadtemas=0; minduracion=0; segduracion=0; temas=NULL; dond=false; }
Discos::Discos(string nomdisc,string interp,int ct) { nombredisco=nomdisc; interprete=interp; cantidaddiscos++; cantidadtemas=ct; minduracion=10; segduracion=10; temas=new string [ct]; for(int i=0;i<ct;i++) { temas="track 01"; } dond=false; //significa que no esta desplegada la lista de temas }
Discos::Discos(string nomdisc,string interp,int ct,int md,int sd,int dl,int ml,int al):lanzamiento(dl,ml,al) { nombredisco=nomdisc; interprete=interp; cantidadtemas=ct; cantidaddiscos++; minduracion=md; segduracion=sd; temas=new string [cantidadtemas]; for(int i=0;i<cantidadtemas;i++) { temas="track 01"; } dond=false;
}
Discos::~Discos() {
if(temas!=NULL) { delete []temas; } else { delete temas; }
cantidaddiscos--; }
string Discos::getinterprete()const { return interprete; }
string Discos::getnombredisco()const { return nombredisco; }
int Discos::getcantidaddiscos() { return cantidaddiscos; }
void Discos::setcantidadtemas(int ct) { if(ct>0) { cantidadtemas=ct; } else { cantidadtemas=1; }
}
void Discos::setinterprete(string interp) { interprete=interp; }
void Discos::setnombredisco(string ndisc) { nombredisco=ndisc;
}
void Discos::settema(string nomtema, int numtema) { for(int i=0;i<cantidadtemas;i++) {
if(i==numtema-1) { temas=nomtema; } } }
Clase coleccion :
#ifndef COLECCION_H #define COLECCION_H #include "Discos.h"
using namespace std;
class Coleccion {
public: Coleccion(); Coleccion(string); void modificarinterprete(string); void modificarnombredisco(string); void imprimirtodoslosdiscos(); void agregardisco(Discos); void eliminardisco(/*&*/Discos); Discos operator[](int);
~Coleccion(); private: Discos * cds; int cantdiscos; string nombrecoleccion; void ordenarporfecha(); }; #endif
#include "Coleccion.h"
/*ostream & operator<<(ostream & salida ,const Coleccion & c) { salida<<c.imprimirtodoslosdiscos(); }*/
void Coleccion::imprimirtodoslosdiscos() { int i=0; if(cds==NULL) { cout<<"No hay discos cargados en la coleccion"<<endl; } else { for(int i=0;i<cantdiscos;i++) { cout<<endl; cout<<cds; } }
}
Discos Coleccion::operator[](int i) {
return cds; }
Coleccion::Coleccion() { cds=NULL; nombrecoleccion="Coleccion predeterminada"; cantdiscos=0; }
Coleccion::Coleccion(string nc) { cds=NULL; nombrecoleccion=nc; cantdiscos=0; }
Coleccion::~Coleccion() {
delete [] cds;
}
void Coleccion::modificarinterprete(string nint) {
if(cds!=NULL) {
int i=0; string nuevonombre=""; cout<<endl; cout<<"Ingrese el nuevo nombre de interprete : "<<endl; cin>>nuevonombre;
for(i=0;i<cantdiscos;i++) {
if(cds.getinterprete()==nint) { cds.setinterprete(nuevonombre); break; }
}
}
}
void Coleccion::modificarnombredisco(string nnd) { int i=0; string nuevonombre=""; cout<<endl; cout<<"Ingrese el nuevo nombre de disco : "<<endl; cin>>nuevonombre;
for(i=0;i<cantdiscos;i++) {
if(cds.getnombredisco()==nnd) { cds.setnombredisco(nuevonombre); break; }
} }
void Coleccion::agregardisco(/*&*/Discos d1) {
if(cds==NULL) { cds=new Discos(); cantdiscos++; return; }
if(cantdiscos==1) { Discos * arraydiscos=new Discos[2];
arraydiscos[0]=cds[0]; delete cds; cds=new Discos[2];
cds[0]=arraydiscos[0]; cds[1]=d1; cantdiscos++; }
Discos * arraydiscos=new Discos[cantdiscos+1];
for(int i=0;i<cantdiscos;i++) { arraydiscos=cds; cout<<arraydiscos.getnombredisco()<<endl; cout<<cds.getnombredisco()<<endl; } arraydiscos[cantdiscos]=d1; delete [] cds; cantdiscos++; cds=NULL; cds=new Discos[cantdiscos]; cds=arraydiscos;
/*for(int i=0;i<cantdiscos;i++) { cds=arraydiscos; } */
}
void Coleccion::eliminardisco(/*&*/Discos d1) { /* if(cds==NULL) { cout<<"No se cargaron cds"<<endl; return; } if(cantdiscos==1) { delete []cds; cds=NULL; cantdiscos--; }*/ //Discos * arraydiscos=new Discos[cantdiscos-1]; /* if(cds[cantdiscos-1].getnombredisco()==d1.getnombredisco()) { for(int i=0;i<cantdiscos-2;i++) { arraydiscos=cds; } cds=NULL; cantdiscos--; cds=arraydiscos; } else { for(int i=0;i<cantdiscos;i++) { if(cds.getnombredisco()==d1.getnombredisco()) { for(int j=i;j<cantdiscos-1;j++) { cds[j]=cds[j+1]; break; } } else { break; return; } } for(int k=0;k<cantdiscos-2;k++) { arraydiscos[k]=cds[k]; } delete []cds; cantdiscos--; cds=arraydiscos;
}*/
}
Páginas: [1]
|
|
|