elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Temas
Páginas: [1] 2 3 4
1  Programación / Programación C/C++ / como relaciono una calse iterator con una clase lista... en: 19 Noviembre 2011, 02:53 am
Bueno el titulo no es muy exacto pero tengo una clase dLista para listas dobles, y una clase iterator para iterar en esa lista... Pero ambas clases son genericas.... es decir tengo que hacer esto...


Código
  1. template <class T>
  2. class dList{
  3. .
  4. .
  5. .
  6. };
  7.  
  8. template <class T>
  9. class iterator{
  10. .
  11. .
  12. .
  13.  
  14. };
  15.  
  16. //En main()
  17. dList<int> lista;
  18. iterator<int> it(lista);

Y quisiera poder esto:

Código
  1. dList<int>::iterator it; //como los iteradores de la clase vector< >
  2. //y luego le asigno al iterador el nodo etc etc....

Entonces que debo declarar dentro de que o tengo q hacer algun espacio de nombre? Si me pueden dar a detalle un ejemplo, porque he intentado declarando iterator dentro de dList pero me da errores... Gracias

Saludos...

EDIT:
Ya lo solucione...
Código
  1. template <class T>
  2. class dList{
  3.    public:
  4. class iterator;
  5. .
  6. .
  7. .
  8. };
  9.  
  10. template <class T>
  11. class dList<T>::iterator{
  12. .
  13. .
  14. .
  15. };

Espero le sea util a alguien...

Saludos
2  Programación / Programación C/C++ / problemas con ctime en: 14 Julio 2011, 02:07 am
Buenas alguien sabe porque me da 2 valores diferentes una llamada a ctime con el mismo argumento?
En principio tengo
Código
  1. time_t ent= pedido->get_entra();
  2.        time_t sal= pedido->get_sale();
  3.        time_t ven= pedido->get_vence();

Los 3 metodos del objeto "pedido" devuelven time_t diferentes (Estoy seguro)

Luego hago

Código
  1. filetext<<"Entrada: "<<ctime(&ent)<<std::endl
  2.             <<"Sale: "<<ctime(&sal)<<std::endl
  3.            <<"Vence: "<<ctime(&ven)<<std::endl;

Pero antes para estar seguro hice

Código
  1. ui->label->setText(ctime(&sal));

Y en label me aparece una fecha X pero en el archivo de texto me aparece 3 veces la misma fecha, y ni siquiera la fecha X de "sal", sino la fechade "ent". Quien me puede decir el por que?

Saludos...
3  Programación / Programación C/C++ / Como imprimir...? en: 7 Julio 2011, 21:13 pm
Buenas foro, necesito que mi programa imprima un archivo de texto. He visto codes sencillos para cuando la impresora esta en el LPT1, pero no se como hacerlo sino lo esta... Pues esta en un USB... Si alguien me da una idea, ejemplo, link o algo donde expliquen como hacerlo se lo agradezco. Estoy usando Qt asi que me sirven ejemplos de como hacerlo "a mano" o usando la API de Qt. Supongo que Qt me debe facilitar eso pero no se como...

Saludos...
4  Programación / Programación C/C++ / Archivo binario, al leerlo me muestra 2 veces el ultimo registro en: 4 Marzo 2011, 04:27 am
Buenas, estaba retomando el tema de archivos pero me quede estancado  :xD

Código
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <fstream>
  4.  
  5. using namespace std;
  6.  
  7. class Personas{
  8.    private:
  9.        char Nombre[30];
  10.        int edad;
  11.    public:
  12.        Personas(char *x="",int e=0){
  13.            strcpy(Nombre,x);
  14.            edad=e;
  15.        }
  16.        const char* getNombre() const{
  17.            return Nombre;
  18.        }
  19.        int getEdad() const{
  20.            return edad;
  21.        }
  22.        void setNombre(const char cad[]){
  23.            strcpy(Nombre,cad);
  24.        }
  25.        void setEdad(const int e){
  26.            edad=e;
  27.        }
  28. };
  29.  
  30. void mostrar(){
  31.    ifstream ent("PRUEBA.dat",ios::in | ios::binary);
  32.    Personas aux;
  33.  
  34.    while(!ent.eof()){
  35.        ent.read(reinterpret_cast<char *> (&aux),sizeof(Personas));
  36.        cout<<aux.getNombre()<<endl<<aux.getEdad()<<endl;
  37.    }
  38.    ent.close();
  39. }
  40.  
  41. int main(int argc, char *argv[])
  42. {
  43.    Personas persona("ALGUIEN",50);
  44.    Personas persona2("Otro",20);
  45.  
  46.    ofstream sal("PRUEBA.dat", ios::out | ios::binary);
  47.  
  48.    sal.write(reinterpret_cast<char *>( &persona ), sizeof(Personas));
  49.    sal.write(reinterpret_cast<char *>( &persona2 ), sizeof(Personas));
  50.    sal.close();
  51.  
  52.    mostrar();
  53.  
  54.    system("PAUSE");
  55.    return EXIT_SUCCESS;
  56. }

El programa muestra 2 veces el ultimo registro es decir, muestra:

ALGUIEN
50
Otro
20
Otro
20


Por que?
5  Programación / Programación C/C++ / Duda con validacion... en: 26 Febrero 2011, 17:52 pm
En este code... Que valida la entrada de un entero...

Código
  1.   int numero, cont = 0;
  2.   bool continuar;
  3.  
  4.   do {
  5.      continuar = false;
  6.      cin.clear();
  7.      if(cont > 0) cin.ignore(1024, '\n');
  8.      cout << "Introduce un numero: ";
  9.      cin >> numero;
  10.      cont++;
  11.      if(cin.fail() && cin.rdstate()){
  12.         cout << "NO ES UN NUMERO" << endl;
  13.         continuar = true;
  14.      }
  15.   } while (continuar);

Por que 1024? De hecho funciona hasta con 1... yo crei que funcionaria con un simple cin.ignore( '\n');  

Pero nop  :xD

Saludos...

EDIT:

Ya vi el por que, mejor hacerlo asi:

Código
  1. int x;
  2.    do{  
  3.        if (!cin){
  4.            cin.clear();
  5.            while (cin.get() != '\n');
  6.        }            
  7.        cout<<"dame x: ";
  8.        cin>>x;
  9.  
  10.    }
  11.    while(!cin);

 :)
6  Programación / Programación General / Que uso tienen las hperbolas y los elipses en la programacion en: 7 Noviembre 2010, 22:57 pm
Hola, pes esa es la duda, alguien ha usado, o sabe que uso tienen las hiperbolas o los elipses en la programacion? o en la computacion?...
Existe la posibilidad de que me pregunten eso y no tengo idea  :-\

Saludos...
7  Programación / Programación C/C++ / Urgente simbolo matematico para el residuo? en: 29 Julio 2010, 23:52 pm
Wenas es una urgencia pero no lo hayo, cual es equivalente al residuo en lenguaje matematico? Es decir lo que en C/C++ es 2+4%2 en matematica como se escribe?

Es urgente lamento el offtopic...

Saludos
8  Programación / Programación C/C++ / [SRC] [C++] (Archivo de TEXTO) MiniAgenda en: 29 Julio 2010, 03:59 am
Wenas... Aca dejo un code de una MiniAgenda que estuve haciendo, guarda Un nombre y un numero que en este caso es una edad pero el cambio para que guarde un tlf es minimo... Gracias a littlehorse y Leo Gutierrez por sus consejos  :xD:

Código
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <fstream>
  4.  
  5. using namespace std;
  6.  
  7. class Agenda{
  8.        char name[30];
  9.        int age;
  10.    public:
  11.        int contar();
  12.        void extraer(Agenda* Persona);
  13.        void ordenar(Agenda* Persona);
  14.        void agregaralfi(const char* nombre, int edad);
  15.        const char* getname();
  16.        int getage();
  17.        void set(char*,int);
  18. };
  19.  
  20. int main(int argc, char *argv[])
  21. {
  22.    int op;
  23.    do{
  24.        cout<<"1.Ingresar una persona a la agenda"<<endl;
  25.        cout<<"2.Ver todas las personas de la agenda"<<endl;
  26.        cout<<"3.Ordenar agenda"<<endl;
  27.        cout<<"4. Salir"<<endl;
  28.        cin>>op;
  29.  
  30.        if (op == 1){
  31.            char aux[30];
  32.            int ageaux;
  33.            cin.ignore();
  34.            cout<<"Ingrese el nombre: ";
  35.            cin.getline(aux,30);
  36.            cout<<"Ingrese la edad: ";
  37.            cin>>ageaux;
  38.            Agenda persona;
  39.            persona.agregaralfi((const char*)aux,ageaux);
  40.        }
  41.        else if (op == 2){
  42.            Agenda *persona;
  43.            int x=persona->contar();
  44.            if (x > 0){
  45.                persona= new Agenda [x];
  46.                persona->extraer(persona);
  47.                for (int i=0;i<x;i++)
  48.                    cout<<persona[i].getname()<<persona[i].getage()<<endl;
  49.            }
  50.            else if (x==0)
  51.            cout<<"No hay personas"<<endl;
  52.            else
  53.            cout<<"Error al abrir el archivo, compruebe su existencia"<<endl;
  54.  
  55.            delete[] persona;
  56.        }
  57.        else if (op == 3){
  58.            Agenda *persona;
  59.            int x=persona->contar();
  60.            if (x > 0){
  61.                persona= new Agenda [x];
  62.                persona->extraer(persona);
  63.                persona->ordenar(persona);
  64.                for (int i=0;i<x;i++){
  65.                    cout<<persona[i].getname()<<persona[i].getage()<<endl;
  66.                    persona[i].agregaralfi(persona[i].getname(),persona[i].getage());
  67.                }
  68.            }
  69.            else if (x==0) cout<<"La agenda no tiene personas"<<endl;
  70.            else cout<<"Error al abrir el archivo, compruebe su existencia"<<endl;
  71.        }
  72.        cout<<"\n\n\n";
  73.    }while (op != 4);
  74.  
  75.    cin.get();
  76.    return EXIT_SUCCESS;
  77. }
  78.  
  79. void Agenda::extraer(Agenda* Persona){
  80.    ifstream ent("Agenda.txt");
  81.    if (!ent){
  82.        cout<<"Error al abrir el archivo, compruebe su existencia"<<endl;
  83.        return;
  84.    }
  85.    for (int i=0;i<contar();i++){
  86.        ent.getline(Persona[i].name,30,':');
  87.        ent>>Persona[i].age;
  88.        ent.ignore();
  89.    }
  90.    ent.close();  
  91. }
  92.  
  93. int Agenda::contar(){
  94.    ifstream ent("Agenda.txt");
  95.      if (!ent){
  96.        return -1;
  97.    }
  98.    int c=0;
  99.    while (ent) if (ent.get() == '\n') c++;
  100.    ent.close();
  101.    return c;
  102. }
  103.  
  104. void Agenda::ordenar(Agenda* Persona){
  105.    int c=contar();
  106.    ofstream sal("Agenda.txt");
  107.    sal.close();
  108.    for (int i=0;i<c-1;i++)
  109.        for (int j=i+1;j<c;j++)
  110.        if (strcmp(Persona[i].getname(), Persona[j].getname()) > 0){
  111.            Agenda AUX=Persona[i];
  112.            Persona[i]=Persona[j];
  113.            Persona[j]=AUX;
  114.        }
  115. }
  116.  
  117. void Agenda::agregaralfi(const char* nombre, int edad){
  118.    ofstream sal("Agenda.txt", ios::out | ios::app | ios::ate);
  119.    if (!sal) exit(1);
  120.    sal.setf(ios::left);
  121.    sal.width(29);
  122.    sal<<nombre<<':'<<edad<<endl;
  123.    sal.close();
  124. }
  125.  
  126. void Agenda::set(char nombre[], int edad){
  127.    strcpy(this->name,nombre);
  128.    this->age=edad;    
  129. }
  130.  
  131. const char* Agenda::getname(){
  132.    return this->name;
  133.    }
  134.  
  135. int Agenda::getage(){
  136.    int x=this->age;
  137.    return x;
  138.    }
  139.  

Estare ausente un tiempo pero cuando vuelva vere las criticas y/u observaciones... Saludos....

PD: Alguien por ahi lo hizo con sobrecarga de operadores y me dijo que lo queria postear (ayer), le dije que esperara un poco hasta que yo creara el post y aca esta... Do it  :xD
9  Programación / Programación C/C++ / PROBLEMA con la funcion miembro getline() e ignore() en: 26 Julio 2010, 06:07 am
Wenas... no se si es por el tiempo sin programar o wtf pero tengo problemas con getline() Lo explico en el codigo:

Código
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <fstream>
  4.  
  5. using namespace std;
  6.  
  7. int main(int argc, char *argv[])
  8. {
  9.    ofstream sal("Agenda.txt");
  10.    sal<<"Pedro Perez                  :"<<18<<endl;//Agrego un nombre y espacios
  11.    sal<<"Maria Rodriguez              :"<<56<<endl;//para completar 29 caracteres
  12.    sal.close();                                                     //mas el ':'
  13.  
  14.    ifstream ent("Agenda.txt");
  15.    int c=2;
  16.    char reg[c][30];
  17.    int edad[c];
  18.    for (int i=0;ent;i++){
  19.        ent.getline(reg[i],30);//Aca deberia extraer los 29 caracteres y agregar a reg un '\0'
  20.        ent.ignore();//Aca ignorar el ':'
  21.        ent>>edad[i];//Pes leer la edad
  22.        ent.ignore();//Ignorar el fin de linea...
  23.    }
  24.  
  25.    cout<<reg[0]<<"T"<<edad[0]<<endl;//Mostrar tal cual como esta en el archivo
  26.    cout<<reg[1]<<"T"<<edad[1]<<endl;//La T era un ':', pero lo use para ver
  27.                                    //si conseguia el error
  28.  
  29.    ent.close();
  30.  
  31.    system("PAUSE");
  32.    return EXIT_SUCCESS;
  33. }
  34.  

Me imagino el error esta en getline()... La use pasandole como delimitador ':' y funciono pero igual me quedo la duda de porque no funciona...

Gracias a quien pueda aclarar la duda...

Saludos...


Asi es como "funciona" bueno mas o menos porque el for da una vuelta de mas... como que si no consigue el EOF, pero no se porque el ejemplo de arriba no lo hace =.=

Código
  1.    ofstream sal("Agenda.txt");
  2.    sal<<"Pedro Perez                  :"<<18<<endl;
  3.    sal<<"Maria Rodriguez              :"<<34<<endl;
  4.  
  5.    sal.close();
  6.    ifstream ent("Agenda.txt");
  7.    char name[2][30];
  8.    int age[2];
  9.    for (int i=0;ent;i++){
  10.        ent.getline(name[i],31,':');
  11.        cout<<name[i];
  12.        ent>>age[i];
  13.        cout<<age[i]<<endl;
  14.        ent.ignore();
  15.        cout<<i<<endl;
  16.    }
  17.  
  18.    ent.close();
  19.  
Por favor alguien que me aclare porque no funciona el code del mensaje anterior y porque este da una vuelta de mas...


Saludos...
10  Programación / Programación C/C++ / [?]Ordenamiento de datos en un archivo en: 26 Julio 2010, 00:45 am
Wenas... Tengo un ejercicio que dice algo asi:

    "Hacer un programa que pida nombres y numeros de telefono de personas, y los agregue de forma alfabetica a un archivo... Se desea que cada vez que se ejecute el programa se puedan agregar personas y numeros de tlf correspondientes al mismo, pero que los mantenga ordenados alfabeticamente..."

    Algo asi dice el ejercicio, ahora... Creo que con archivos binarios seria lo ideal, mas deseo hacerlo con archivos de textos... Pero lo haga como lo haga, el problema esta en que, lo que se me ocurre es extraer el contenido del archivo en un vector estructuras (con un miembro char* y otro int) ordenar ese vector y luego agregarlos al archivo pero elminando su contenido primero...

    Ahora la duda en si, es una buena manera de hacerlo? o hay otras mucho mas eficientes?

Saludos...
Páginas: [1] 2 3 4
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines