|
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 - pacorubio77
Páginas: 1 ... 4 5 [6] 7 8 9
126
« en: Viernes 17 de Octubre de 2008, 12:49 »
Hola, a todos,estoy empezando a entender la libreria STL,y tengo una duda,cuando (en el codigo que os presento) ,cuando hago ve.clear,que hace realmente este metodo?, deja el vector asi { }?, porque cuando voy a imprimir para probar si hay algo..no se mete ni el bucle for... Solo es esa duda,aqui presento el código: #include<vector> #include<string> #include<iostream> using namespace std; int main(){ vector<int>ve; //voy introduciendo en el vector for(int i=0;i<6;i++){ ve.push_back(i); } vector<int>::iterator iter; //muestro el primer elemento. cout<<*ve.begin()<<endl; //iter=ve.begin(); //saco por pantalla for(iter=ve.begin();iter!=ve.end();iter++){ cout<<*iter<<" "; } //ahora vamos a copiar el vector ve en el vector vn vector<int>vn; //copio en el vector vn for(iter=ve.begin();iter!=ve.end();iter++){ vn.push_back(*iter); } ve.clear(); //yo pienso que limpio el espacio //¿aunque este vacio no se tiene que meter? for(iter=ve.begin();iter!=ve.end();iter++){ cout<<*iter<<"z "; } //muestra el vector vn for(iter=vn.begin();iter!=vn.end();iter++){ cout<<*iter<<" "; } }
127
« en: Miércoles 15 de Octubre de 2008, 17:43 »
Teniais razon,muchas gracias,ya lo se para la próxima.un saludo,GRacias
128
« en: Miércoles 15 de Octubre de 2008, 17:24 »
Hola,ya he visto que os habeis avalanzado todos contra mi.aqui teneis los tres ficheros //fchero fecha.h #include<iostream> #include<ostream> #include<string> #include<cstring> #include<string.h> #include<ctime> using namespace std; class Fecha{ private: int dia,mes,anyo; public: Fecha(); Fecha(int d,int m,int a); Fecha(const Fecha &f); ~Fecha(); bool setDia(int d); bool setMes(int m); bool setAnyo(int a); int getDia()const; int getMes()const; int getAnyo()const; bool isBisiesto()const; void Imprimir(ostream &os)const; string toString()const; };
-------------------------------------------- #include<iostream> #include<ostream> #include<string> #include<cstring> #include<string.h> #include "Fecha.h" #include<ctime> #include<sstream> //#include"Punto.h" using namespace std; /* Fecha::Fecha(){ dia=1; mes=2; anyo=2000; } */ Fecha::~Fecha(){ dia=-1; mes=-1; anyo=-1; } Fecha::Fecha(){ //fecha y hora del sistema time_t ahora=time(0); tm* localtm=localtime(&ahora); dia=localtm->tm_mday; mes=localtm->tm_mon+1; anyo=localtm->tm_year+1900; /* //convertir a struct tm para fecha y hora local tm* localtm=localtime(&ahora); cout<<localtm->tm_mday <<"/" <<localtm->tm_mon+1<<"/" <<localtm->tm_year+1900<<endl; */ } Fecha::Fecha(const Fecha &f){ dia=f.dia; mes=f.mes; anyo=f.anyo; } Fecha::Fecha(int d,int m,int a){ //bool diac,mesc,anyoc; if(!setDia(d)){ dia=-1; } else{ dia=d; } if(!setMes(m)){ mes=-1; } else{ mes=m; } if(!setAnyo(a)){ anyo=-1; } else{ anyo=a; } /* dia=d; mes=m; anyo=a; dia=setDia(d); mes=setMes(m); anyo=setAnyo(a); */ } bool Fecha::setDia(int d){ bool correcto=false; if ((d>=1)&&(d<=31)){ correcto=true; dia=d; } else { dia=-1; } return correcto; } bool Fecha::setMes(int m){ bool correcto=false; if ((m>=1)&&(m<=12)){ correcto=true; mes=m; } else{ mes=-1; } return correcto; } bool Fecha::setAnyo(int a){ bool correcto=false; if (a>0){ correcto=true; anyo=a; } else{ anyo=-1; } return correcto; } int Fecha::getDia()const{ return dia; } int Fecha::getMes()const{ return mes; } int Fecha::getAnyo()const{ return anyo; } void Fecha::Imprimir(ostream &os)const{ Fecha f2; //bool diacorrecto,mescorrecto,anyocorrecto; //os<<dia<<"/"<<mes<<"/"<<anyo; //cout<<endl; //ahora vamos a validar /* diacorrecto=f2.setDia(dia); mescorrecto=f2.setMes(mes); anyocorrecto=f2.setAnyo(anyo); if((diacorrecto==false)||(mescorrecto==false)||(anyocorrecto==false)){ os<<"fecha no valida"<<endl; } else{ os<<dia<<"/"<<mes<<"/"<<anyo; } */ if( (dia==-1)||(mes==-1)||(anyo==-1) ){ os<<"fecha no valida"<<endl; } else{ os<<dia<<"/"<<mes<<"/"<<anyo; } } string Fecha::toString()const { /* string fecha=""; int resto; fecha=dia/10 +'0'; //cout<<fecha<<endl; fecha+=dia%10 +'0'; //cout<<fecha<<endl; fecha+=mes/10+'0'; fecha+=mes%10 + '0'; //convertimos el año a string fecha+=anyo/1000 +'0'; resto=anyo%1000; fecha+=resto/100+'0'; resto=resto%100; fecha+=resto/10+'0'; fecha+=resto%10+'0'; */ stringstream sfecha; sfecha << dia << '/' << mes << '/' << anyo << endl; // el método str() del objeto stringstream devuelve un string // con los datos que contiene el flujo de datos. cout << sfecha.str() << endl; return sfecha; //return fecha; }
//este es el main #include<iostream> #include<ostream> #include<ctime> #include "Fecha.h" //#include"Punto.h" using namespace std; int main(){ Fecha f1; int d,m,a; bool diac,mesc,anyoc; cout<<"LA FECHA ACTUAL ES "<<endl; cout<<f1.getDia()<<"/"; cout<<f1.getMes()<<"/"; cout<<f1.getAnyo()<<endl; cout<<"-------------------------"<<endl; cout<<"introduce el dia "<<endl; cin>>d; diac=f1.setDia(d); cout<<"introduce el mes "<<endl; cin>>m; mesc=f1.setMes(m); cout<<"introduce el año "<<endl; cin>>a; anyoc=f1.setAnyo(a); //cin>>anyo; cout<<"LA FECHA INTRODUCIDA POR EL USUARIO"<<endl; /* cout<<f1.getDia()<<endl; cout<<f1.getMes()<<endl; cout<<f1.getAnyo()<<endl; */ string fecha; cout<<"UTILIZO EL METODO IMPRIMIR"<<endl; Fecha f(f1.getDia(),f1.getMes(),f1.getAnyo()); f.Imprimir(cout); cout<<endl; fecha=f.toString(); cout<<"FECHA "<<fecha<<endl; f1.~Fecha(); //f1.setDia(5); //cout<<f1.getDia()<<endl; }
esto os dará el siguiente fallo: g++ -g -Wall -c ./lib/Fecha.cc -I ./include ./lib/Fecha.cc: In member function ‘std::string Fecha::toString() const’: ./lib/Fecha.cc:205: error: se solicitó la conversión desde ‘std::stringstream’ al tipo no escalar ‘std::string’ make: *** [Fecha.o] Error 1 Espero respuestas.Gracias.
129
« en: Miércoles 15 de Octubre de 2008, 11:42 »
quieres que ponga todo el programa completo? es que como esta separado por archivos,te paso todo el Fecha.cc,es que tambien tengo fecha.h y el main, o te paso los tres? te lo pregunto antes de enviarte todo,lo que tu me digas hago..vale?
130
« en: Miércoles 15 de Octubre de 2008, 10:48 »
Perdona ,pero no he entendido este ultimo mensaje que me habeis enviado..espero me lo expliqueis..un saludo,espero respuesta.
131
« en: Miércoles 15 de Octubre de 2008, 10:05 »
lo utilizé ,lo tengo definido.
132
« en: Martes 14 de Octubre de 2008, 18:42 »
Hola,a todos,soy nuevo en la programacion a objetos y cuando implemento el siguiente método,si os fijais hay dos formas de hacer lo mismo,a mi me interesa la que pongo opcion 2,pero siempre me da fallo,es necesario incluir alguna libreria? pongo #include<sstream>...entre ellas y me sigue dando error,en concreto este error:
tw@tw-desktop:~/Desktop/poo$ make g++ -g -Wall -c ./lib/Fecha.cc -I ./include ./lib/Fecha.cc: In member function ‘std::string Fecha::toString() const’: ./lib/Fecha.cc:193: error: el agregado ‘std::stringstream sfecha’ tiene un tipo incompleto y no se puede definir make: *** [Fecha.o] Error 1
este es mi metodo
string Fecha::toString()const {
//opcion 1 string fecha=""; int resto; fecha=dia/10 +'0'; //cout<<fecha<<endl; fecha+=dia%10 +'0'; //cout<<fecha<<endl;
fecha+=mes/10+'0'; fecha+=mes%10 + '0'; //convertimos el año a string fecha+=anyo/1000 +'0'; resto=anyo%1000; fecha+=resto/100+'0'; resto=resto%100; fecha+=resto/10+'0'; fecha+=resto%10+'0'; /*opcion 2 stringstream sfecha;
sfecha << dia << '/' << mes << '/' << anyo << endl;
// el método str() del objeto stringstream devuelve un string
// con los datos que contiene el flujo de datos.
cout << sfecha.str() << endl; */
return fecha; //return sfecha //cuando utilizo la segunda opcion.
Espero ayuda,gracias.
133
« en: Lunes 13 de Octubre de 2008, 21:03 »
Hola,mirar es una duda muy tonta,pero no se como se traduce:
el ejemplo es el siguiente:
si me salen en el codigo p1 +=p2 esto es igual a p1=p1+p2..verdad? pero si me sale p1=+p2? esto a que es igual? es que tengo esa duda para hacer la sobrecarga de eso en c++
espero me ayuden.gracias.
134
« en: Domingo 5 de Octubre de 2008, 12:19 »
Hola,como soy novato en objetos,mirar en una clase fecha,yo tengo un metodo imprimir, en el que tengo que validar si el dia está entre 1 y 31 el mes entre 1 y 12 y que el año sea mayor que 0,tengo que hacerlo dentro del metodo?
si el codigo tengo dichos metodos:
Fecha::~Fecha(){ dia=-1; mes=-1; anyo=-1;
}
Fecha::Fecha(){
//fecha y hora del sistema time_t ahora=time(0);
tm* localtm=localtime(&ahora); dia=localtm->tm_mday; mes=localtm->tm_mon+1; anyo=localtm->tm_year+1900; /* //convertir a struct tm para fecha y hora local tm* localtm=localtime(&ahora); cout<<localtm->tm_mday <<"/" <<localtm->tm_mon+1<<"/" <<localtm->tm_year+1900<<endl; */ } Fecha::Fecha(const Fecha &f){ dia=f.dia; mes=f.mes; anyo=f.anyo;
}
Fecha::Fecha(int d,int m,int a){
dia=d; mes=m; anyo=a;
}
bool Fecha::setDia(int d){ bool correcto=false; if ((d>=1)&&(d<=31)){ correcto=true; dia=d; } else { dia=-1; }
return correcto; }
bool Fecha::setMes(int m){ bool correcto=false; if ((m>=1)&&(m<=12)){ correcto=true; mes=m; } else{ mes=-1; } return correcto; }
bool Fecha::setAnyo(int a){ bool correcto=false; if (a>0){ correcto=true; anyo=a; } else{ anyo=-1; }
return correcto; }
lo que quiero preguntar si para validar,,,lo tengo que hacer dentro del metodo?
un saludo,espero respuesta.
void Fecha::Imprimir(ostream &os)const{ Fecha f2; bool diacorrecto,mescorrecto,anyocorrecto; os<<dia<<"/"<<mes<<"/"<<anyo; cout<<endl; //ahora vamos a validar diacorrecto=f2.setDia(dia); mescorrecto=f2.setMes(mes); anyocorrecto=f2.setAnyo(anyo); if((diacorrecto==false)||(mescorrecto==false)||(anyocorrecto==false)){ cout<<"fecha no valida"<<endl; }
}
135
« en: Viernes 3 de Octubre de 2008, 13:31 »
Te prometo que ahora si lo he leido, y en una funcion que tengo que implementar void Imprimir(ostream &os)const ,no consigo hallar su significado.
Muchas gracias.
136
« en: Viernes 3 de Octubre de 2008, 13:20 »
Si ,por lo de string ya me dejo de dar error,hice por una parte lo que me dijo usted, char *,pero lo que hice es incluir #nclude<cstring> y #include<string.h>
Ahora tengo error en otro dos metodos ,que no se que tengo que hacer,ahi van:
El método imprimir() debe imprimir la fecha en formato <dia>/<mes>/<año>. Si algún atributo contiene un valor no válido, imprimirá “<Fecha no valida>”. El método toString() devolverá una cadena en este mismo formato.
pero es que el metodo imprimir se tiene que definir como void Imprimir(ostream &os)const, y no se lo que le tengo que meter como parametro y el metodo toString tengo que sacar la fecha,pero me es necesario una funcion para sacar la cadena?
un saludo,espero respuesta. Gracias.
137
« en: Viernes 3 de Octubre de 2008, 11:52 »
Lo siento,pero el manual no resuelve mi cuestion,,muchas gracias de todas formas.
138
« en: Viernes 3 de Octubre de 2008, 11:50 »
ahh,,,espera un momento,pero como en c++ se llama al constructor por defecto siempre...no se como mostrarlo por pantalla.... EI: JUNTANDO MENSAJES, POR FAVOR USA EL BOTON EDITAR LA PROXIMA VEZ.Mira he echo una prueba ,pero sin meter el codigo en el constructor ,es decir una prueba individual en un main aparte... el codigo que he probado es el siguiente: int main(){ //fecha y hora del sistema time_t ahora=time(0); //convertir a struct tm para fecha y hora local tm* localtm=localtime(&ahora); cout<<localtm->tm_mday <<"/" <<localtm->tm_mon+1<<"/" <<localtm->tm_year+1900<<endl; } y entonces la salida es:3/10/2008 pero claro si el constructor tengo que tener la fecha actual ,que tengo que almacenarlo en dia,mes ,anyo ? si mi clase es: class Fecha{ private: int dia,mes,anyo; public: Fecha(); Fecha(int d,int m,int a); Fecha(const Fecha &f); ~Fecha(); bool setDia(int d); bool setMes(int m); bool setAnyo(int a); int getDia()const; int getMes()const; int getAnyo()const; bool isBisiesto()const; string toString()const; };
Perdon por las molestias y espero su ayuda. Gracias.
139
« en: Viernes 3 de Octubre de 2008, 11:26 »
No se que valores contiene,lo sabe usted? soy muy novato en objetos y eso me lo dieron para ayudarme a sacar la fecha actual y yo pense que sería el constructor...
140
« en: Viernes 3 de Octubre de 2008, 11:24 »
Hola,tengo una duda,estoy implementando una clase en c++ a partir de UML,pero hay una sentencia en UML que no se como ponerla en C++, os la explico, por ejemplo si tengo:
<<const>>getMes(): int esto se traduciria en c++ como int getMes() const: pero la siguiente es mi duda: <<const>>Imprimir(os:ostream&):void como se pasaría a c++ ,es que no se lo que es ostream&,? porque si fuera int,se que es un entero,pero que es ostream? un string ? un char?
Me podeis ayudar? Un saludo,Gracias.
141
« en: Viernes 3 de Octubre de 2008, 11:00 »
no se que me has querido con "que valores te asigna a tm?" no te he entendido.
Un saludo,espero respuesta.
142
« en: Viernes 3 de Octubre de 2008, 10:29 »
Hola,tengo que hacer un constructor con la fecha actual, y no me sale la fecha actual,,,yo tengo lo siguiente:
Fecha::Fecha(){
//fecha y hora del sistema time_t ahora=time(0);
//convertir a struct tm para fecha y hora local tm* localtm=localtime(&ahora); cout<<localtm->tm_mday <<"/" <<localtm->tm_mon+1<<"/" <<localtm->tm_year+1900<<endl;
}
este es el constructor,está bien echo? me podeis decir los errores?
Un saludo,espero respuesta.
143
« en: Jueves 2 de Octubre de 2008, 16:17 »
Hola estoy definiendo la clase fecha y cuando un metodo lo pongo String me da error...la clase es la siguiente:
#include<iostream> #include<string>
//using namespace std;
class Fecha{
private: int dia,mes,anyo;
public: Fecha(); Fecha(int d,int m,int a); Fecha(const Fecha &f); ~Fecha(); bool setDia(int d); bool setMes(int m); bool setAnyo(int a); int getDia()const; int getMes()const; int getAnyo()const; bool isBisiesto()const; string toString()const; //en esta linea me da error };
"el error que me pone dice: ./include/Fecha.h:27: error: ‘string’ no nombra a un tipo make: *** [Fecha.o] Error 1
Otra de mis dudas es que el constructor por defecto tiene que crear un objeto con la fecha actual,se haría de la siguiente manera?:
Fecha::Fecha(){
//fecha y hora del sistema time_t ahora=time(0);
//convertir a struct tm para fecha y hora local tm* localtm=localtime(&now); cout<<localtm->tm_mday <<"/" <<localtm->tm_mon+1<<"/" <<localtm->tm_year+1900<<endl;
}
es que tambien me da errores y no se el motivo, (claro para todo esto antes pongo #include<ctime>)
Esas son mis dos dudas.
Un saludo,espero respuesta.
Podeis ayudarme?
144
« en: Martes 30 de Septiembre de 2008, 19:46 »
Gracias por prestarme atencion y decirme los fallos,sobre todo para aprender,Muchas Gracias.
145
« en: Martes 30 de Septiembre de 2008, 18:13 »
Hola a todos,estoy empezando a trabajar con objetos y soy nuevo en este mundo de los objetos, por eso estoy implementando un pequeño programita y tengo un error de compilacion ,pero no se el porque¡¡
este es el programita y el error que me da dice:
/* Punto.cpp:33: error: el prototipo para ‘Punto::Punto(double, double)’ no coincide con ningún otro en la clase ‘Punto’ Punto.cpp:6: error: los candidatos son: Punto::Punto(const Punto&) Punto.cpp:6: error: Punto::Punto()
*/
#include<iostream> #include<math.h> //#include"Punto.h" using namespace std;
class Punto{
private: double x,y; public: void SetX(double vx); void SetY(double vy); Punto Translacionar(double d); double Distancia(Punto p2); double GetX(); double GetY(); };
/* class Punto{
public: Punto(double vx,double vy); }; */ /* Punto::Punto(){ x=0; y=0; } */
Punto::Punto(double vx,double vy){
SetX(vx); SetY(vy);
}
void Punto::SetX(double vx){
if(vx<0) x=0; else x=vx; } /* Punto::Punto(double vx,double vy){
SetX(vx); SetY(vy);
} */ /* Punto Punto::Translaccionar(double d){
Punto paux; paux.SetX(d+x); paux.SetY(d+y);
return paux;
} */
double Punto::Distancia (Punto p2){
return sqrt(pow(x-p2.x,2) + pow(y-p2.y,2));
}
double Punto::GetX(){
return x; } double Punto::GetY(){
return y; }
int main(){
Punto p1,p2;
p1.SetX(-3); p2.SetX(+6);
cout<<p1.Distancia(p2); cout<<endl; cout<<p2.Distancia(p1); cout<<endl;
//p1=p2.Translacionar(81);
cout<<p1.GetX()<<"-"<<p1.GetY(); cout<<endl; cout<<p2.GetX()<<"-"<<p2.GetY(); cout<<endl; }
Muchas gracias,os agradecería vuestra ayuda,gracias.
146
« en: Sábado 20 de Septiembre de 2008, 12:53 »
Hola leí atentamente su explicacion,pero si me perdona tengo una pregunta esencial.... Todo lo que me ha explicado es para que dentro de un nodo pila tenga una lista de nodos?,pero los nodos de mi lista,como los relaciono? o mejor dicho como los enlazo?
y lo más importante como los desenlazo?
147
« en: Viernes 19 de Septiembre de 2008, 18:40 »
Hola yo he definido un paciente
struct Tpaciente{ //con sus respectivos campos };
el nodo paciente definido como: typedef struct tNODO{ Tpaciente paciente: tNODO *sig; }*pNODO,*LISTA;
si yo me defino un nodo de una pila ,lo haría de la siguiente forma: typedef struct tNODOPILA{ Tpaciente paciente: tNODOPILA *sig; }*pNODOPILA,*PILA;
pero mi pregunta es que como me defino una lista dentro de un nodo de una pila? asi lo entiendo con la siguiente afirmacion "el nodo de la pila contendrá una lista con los nodos de los pacientes".
Me podeís explicar como lo defino? es que os lo digo realmente me cuesa mucho entenderlo. Gracias de antemano.
148
« en: Miércoles 17 de Septiembre de 2008, 12:39 »
Estoy haciendo una práctica sobre ajedrez y no tengo muy claro el movimiento del rey...el enroque ya lo tengo contemplado..pero me pone que el rey puede moverse a una casilla adyacente,es decir que solo se mueve una casilla..verdad? 8 posibles movimientos..verdad?,,,cuando yo me muevo a la casilla adyacente tiene que estar libre? si está ocupado por una pieza contraria ,se la come? es que ese movimiento no lo tengo muy claro...me hace falta tener el concepto claro para despues programar...
Os agradeceria ayuda.. Un saludo.Gracias.
149
« en: Martes 16 de Septiembre de 2008, 16:27 »
Yo tengo que hacer lo que una práctica me pide,yo estoy haciendo una practica que gestione unos pacientes de un Hospital, yo para implementar una pila lo hago de la siguiente manera:
struct Tpaciente{ char nombre[20]; int habitacion; ...etc
};
typedef struct tNODO{ Tpaciente paciente; tNODO *sig; }*pNODO,*LISTA;
eso lo hago para implementar una lista enlazada...
Mi duda es que me pone:
DESHACER ALTA : cada vez que se d´e de alta a un paciente por NSIP o por n´umero de habitaci´on debe almacenarse el nodo o nodos de los pacientes en una pila (en lugar de borrarlos), de forma que se pueda recuperar al elegir la opci´on DESHACER ALTA, que volver´a a colocar el nodo del paciente en la posici´on que le corresponda de la lista general. La pila debe implementarse como se ha explicado en las clases de teor´ia, utilizando una lista simplemente enlazada. Si se elige la opci´on ALTA POR NSIP, el nodo de la pila contendr´a una lista (del mismo tipo que la lista general) unicamente con el nodo del paciente dado de alta. Sin embargo, si se elige la opci´on ALTA POR N.HABITACION, se debe construir una lista con los nodos de los pacientes dados de alta, sin borrar nodos ni construir nuevos nodos, simplemente desenlazando los nodos de la lista general y enlaz´andolos en la nueva lista, y almacenar dicha lista en la pila, de forma que al deshacer el alta por n´umero de habitaci´on se colocar´an en la lista general todos los nodos de los pacientes dados de alta a la vez. En la pila, no es necesario distinguir un tipo de alta de otro, si es un alta por NSIP la lista tendr´a solo un elemento, mientras que si es un alta por 3 n´umero de habitaci´on podr´a tener un elemento o m´as.
COMO SE IMPLEMENTA PARA QUE UNA PILA CONTENGA UNA LISTA?
yo normalmente la pila la implemeto de la siguiente manera:
typedef struct tNODOPILA{ Tpaciente paciente: tNODOPILA *sig; }*pNODOPILA,*PILA;
150
« en: Martes 16 de Septiembre de 2008, 12:06 »
Ya se que hay muchas situaciones,yo solo tengo que contemplar una.que solo me quede una pieza por cada jugador y que esa pieza sea el rey de cada jugador
Páginas: 1 ... 4 5 [6] 7 8 9
|
|
|