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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


  Mostrar Temas
Páginas: [1]
1  Programación / Programación C/C++ / Problema con eof, de fstream en: 22 Noviembre 2010, 05:31 am
Bueno tengo este codigo, y lo q pasa es q el final cuando estoy en el menu de mostrar datos, siempre me muesta el ultimo dato registrado dos veces, como si en la parte de agregar lo agregara dos veces.

este es el while ubicado casi al finalq  repite el numero de veces al mostar  y me muestra un valor mas. while (reg && !reg.eof()) tmb lo cambie por
 while ( !reg.eof()) y me da lo mismo, gracias.

Código:
#include <iostream.h>
#include <stdlib.h>
#include <string.h>
#include <fstream>
struct datos
{
  char nombre[50];
  int telefono;
  char direccion[50];
  char email[50];
  int valido;       //valido=1->si existe        valido=0->no existe
  int valido2;  //checara si el registro es correcto... siempre sera igual a 1706887114
};
int menu()
{
  int n=0;
  system("cls");
  cout<<endl<<endl;
  cout<<"                 ==========================================="<<endl;
  cout<<"                 ||            AGENDA PERSONAL            ||"<<endl;
  cout<<"                 ==========================================="<<endl;
  cout<<"                 ||      1. AGREGAR NUEVO REGISTRO        ||"<<endl;
  cout<<"                 ||      2. BUSCAR REGISTRO               ||"<<endl;
  cout<<"                 ||      3. MOSTRAR TODOS LOS REGISTROS   ||"<<endl;
  cout<<"                 ||      4. SALIR                         ||"<<endl;
  cout<<"                 ==========================================="<<endl<<endl;
  while ((n<1) || (n>4))
    { cout<<"          Introduce un numero de las opciones listadas arriba [1-4]: "; cin>>n; }
  cout<<endl;
  return n;
}
void agregar(struct datos d)
{
  char na='s';        //na=preguntar si kiere nuevo registro
  while (na=='s')
    {
    char nn='x';  //nn=verificacion para agregar el registro
    system ("cls"); //borramos pantalla
    //guardamos los datos temporalmente en el struct
    cout<<"Nombre: "; cin>> d.nombre;
    cout<<"Telefono: "; cin>> d.telefono;
    cout<<"Direccion: "; cin>> d.direccion;
    cout<<"Email: "; cin>> d.email; cout<<endl;
    d.valido=1;   //decimos que el registro si existe
    d.valido2=1706887114; //con esto garantizamos que es uno de nuestros registros
    //verificamos si kiere agregar el nuevo registro
    while ((nn!='s') && (nn!='n'))
      { cout<<endl<<"Deseas agregar el nuevo registro? [s-n]: "; cin>>nn; }
    //agregamos
    if (nn=='s')
      {
       ofstream reg("registros.dat", ios::app | ios::binary); //activamos el archivo en modo de escritura  tomando en cuenta el parametro "app" para agregar en la ultima posicion del archivo
       if(!reg)                         //si no se pudo abrir el archivo
         { cout <<"No se puede abrir el fichero."; }
       reg.seekp(0, ios::end); // Colocar el cursor al final del archivo
       reg.write((char *) &d, sizeof(d));  //escribimos el nuevo registro
       reg.close();  //cerramos el archivo
       cout<<endl<<"Registro agregado exitosamente"<<endl;
       system("pause");
      }
    else
      {
       //borramos los datos temporales del struct
       strcpy(d.nombre,"");
       d.telefono=0;
       strcpy(d.direccion,"");
       strcpy(d.email,"");
       d.valido=0;
       d.valido2=0;
       cout<<endl<<"El Registro NO fue agregado"<<endl;
       system("pause");
      }
    na='x';
    while ((na!='s') && (na!='n'))
      { cout<<endl<<endl<<"Deseas agregar un registro nuevo? [s-n]: "; cin>>na; } //la validacion se hace en el while inicial
  }//endwhile
}
void modificar(struct datos d, int nm)
{
   char nnm='x';
   system ("cls"); //borramos pantalla
   //guardamos los datos temporalmente en el struct
   cout<<"Nombre: "; cin>> d.nombre;
   cout<<"Telefono: "; cin>> d.telefono;
   cout<<"Direccion: "; cin>> d.direccion;
   cout<<"Email: "; cin>> d.email; cout<<endl;
   d.valido=1; //decimos que si existe
   d.valido2=1706887114;
   //verificamos si kiere modificar el registro
   while ((nnm!='s') && (nnm!='n'))
     { cout<<endl<<"Deseas modificar este registro? [s-n]: "; cin>>nnm; }
   //agregamos
   if (nnm=='s')
     {
      ofstream reg("registros.dat", ios::out | ios::binary); //activamos el archivo en modo de escritura  (creamos el objeto 'reg')
      if(!reg)                         //si no se pudo abrir el archivo
        { cout <<"No se puede abrir el fichero."; }
      reg.seekp((nm-1)*sizeof(d));     //colocamos el apuntador en la posicion inicial del registro a modificar
      reg.write((char *) &d, sizeof(d));  //escribimos el nuevo registro
      reg.close();  //cerramos el archivo
      cout<<endl<<"Registro modificado exitosamente"<<endl;
     }
   else
     {
      //borramos los datos temporales del struct
      strcpy(d.nombre,"");
      d.telefono=0;
      strcpy(d.direccion,"");
      strcpy(d.email,"");
      d.valido=1;
      d.valido2=0;
      cout<<endl<<"El Registro NO fue modificado"<<endl;
     }
   system("pause");
}
void eliminar(struct datos d, int ne)
{
   system ("cls"); //borramos pantalla
   d.valido=0;   //modificamos "valid0" del struct para decir que ese registro no sera tomado en cuenta
   d.valido2=1706887114; //agregamos nuestra garantia de registro
   //ahora actualizamos el registro
   ofstream reg("registros.dat", ios::out | ios::binary); //activamos el archivo en modo de escritura  (creamos el objeto 'reg')
   if(!reg)                         //si no se pudo abrir el archivo
      { cout <<"No se puede abrir el fichero."<<endl; system("pause");}
   reg.seekp((ne-1)*sizeof(d));     //colocamos el apuntador en la posicion inicial del registro a modificar
   reg.write((char *) &d, sizeof(d));  //escribimos el nuevo registro
   reg.close();  //cerramos el archivo
   cout<<endl<<"Registro eliminado"<<endl;
   system("pause");
}
void buscar(struct datos d)
{
  int nb1=0, nb=-2;  //nb1=variable auxiliar para saber si kiere volver a buskar o salir  nb=variable que guarda el #de registro buskado
  while (nb1<4)
    {
    if (nb1==2)
      { modificar(d, nb); }
    else
      {
       if (nb1==3)
         { eliminar(d, nb); }
      }
    system("cls"); //borramos pantalla
    int nb=-2;
    while (nb<0)
      { cout<<"Introduce el registro a buscar [0 para salir]: "; cin>>nb; }
    if (nb!=0) //si kiere buskar...
      {
      ifstream reg("registros.dat", ios::in | ios::binary);      //activa el archivo en modo de lectura (creamos el objeto 'reg')
      reg.seekg((nb-1)*sizeof(d));     //colocamos el apuntador en la posicion inicial del registro encontrado
      reg.read((char *) &d, sizeof d);        //leemos el registro encontrado
      //verificamos que el registro es correcto
      if ((d.valido==1) && (d.valido2==1706887114))
        {
        cout<<endl<<endl<<"--------Registro encontrado--------"<<endl;
        cout<<"Nombre: "<<d.nombre<<endl<<"Telefono: "<<d.telefono<<endl<<"Direccion: "<<d.direccion<<endl<<"Email: "<<d.email<<endl<<endl;
        cout<<endl;    //imprimimos menu de opciones
        cout<<"                 ================================"<<endl;
        cout<<"                 ||          OPCIONES          ||"<<endl;
        cout<<"                 ================================"<<endl;
        cout<<"                 ||    1. NUEVA BUSQUEDA       ||"<<endl;
        cout<<"                 ||    2. MODIFICAR REGISTRO   ||"<<endl;
        cout<<"                 ||    3. ELIMINAR REGISTRO    ||"<<endl;
        cout<<"                 ||    4. SALIR                ||"<<endl;
        cout<<"                 ================================"<<endl<<endl;
        nb1=0;
        while ((nb1<1) || (nb1>4))
          { cout<<"     Introduce un numero de las opciones listadas arriba [1-4]: "; cin>>nb1; }
        cout<<endl;
        }//endif ((d.valido==1) && (d.valido2==1706887114))
      else //si el registro encontrado no es correcto
        {
         cout<<endl<<"El registro buscado no existe"<<endl;
         system("pause");
         nb1=1;
        }
      }//endif (nb!=0)
    else     //si ya se kiere salir
      { nb1=4; } //igualamos la bandera a 4 para que se salga
    } //endwhile
}
void mostrar(struct datos d)
{
  int nb11=0,con=0,nme=0,bandera=0;  //nb1=variable auxiliar para saber si kiere volver a buskar o salir  nb=variable que guarda el #de registro buskado
  while (nb11<3)
    {
    if (nb11==1)
      { modificar(d, nme); }
    else
      {
       if (nb11==2)
         { eliminar(d, nme); }
      }
    system("cls"); //borramos pantalla
    ifstream reg("registros.dat", ios::in | ios::binary);      //activa el archivo en modo de lectura (creamos el objeto 'reg')
    con=0;
    bandera=0;
    while (reg && !reg.eof()) //aca el problema
      {
       reg.seekg((con)*sizeof(d));     //colocamos el apuntador en la posicion inicial del registro encontrado
       reg.read((char *) &d, sizeof d);        //leemos el registro encontrado
       con++; //incrementamos contador del registro
       //verificamos que el registro es correcto
       if ((d.valido==1) && (d.valido2==1706887114))
         {
         bandera=1;
         cout<<endl<<"--------Registro "<<con<<"--------"<<endl;
         cout<<"Nombre: "<<d.nombre<<endl<<"Telefono: "<<d.telefono<<endl<<"Direccion: "<<d.direccion<<endl<<"Email: "<<d.email<<endl<<endl;
         }//endif
      }//endwhile
    if (bandera==1)
     {
      cout<<endl<<endl;    //imprimimos menu de opciones
      cout<<"                 ================================"<<endl;
      cout<<"                 ||          OPCIONES          ||"<<endl;
      cout<<"                 ================================"<<endl;
      cout<<"                 ||    1. MODIFICAR REGISTRO   ||"<<endl;
      cout<<"                 ||    2. ELIMINAR REGISTRO    ||"<<endl;
      cout<<"                 ||    3. SALIR                ||"<<endl;
      cout<<"                 ================================"<<endl<<endl;
      nb11=0;
      //preguntamos por que opcion kiere realizar
      while ((nb11<1) || (nb11>3))
        { cout<<"     Introduce un numero de las opciones listadas arriba [1-4]: "; cin>>nb11; }
      nme=0;
      while ((nme<1) && (nb11<3))
        { cout<<"     Introduce el numero del registro: "; cin>>nme; }
     }//endif bandera=1
    else
      { cout<<"No existen registros!"<<endl; system("pause"); nb11=3;}
    } //endwhile
}
int main()
{
  struct datos d;
  int x=0;
  fstream ("registros.dat", ios::out | ios::in | ios::binary);   //creamos el archivo
  int n=0,band=0;
  while (band==0)
    {
     n=menu();
     switch (n)
       {
        case 1: agregar(d); break;
        case 2: buscar(d); break;
        case 3: mostrar(d); break;
        case 4: band=1; break;
       }
    }
  system("PAUSE");
  return 0;
}
2  Foros Generales / Dudas Generales / Administrar unidades de disco duro en: 24 Septiembre 2010, 20:13 pm
Bueno  tengo un problemita, tengo unas cabinas de internet, en la cual, vienen muchos jovenes a jugar, juegos como audition, rakion, o gunbound, y como sabran estos juegos se actulizan costantemente, io lo que tenia hace tiempo fue 3 unidades de disco  c: d: e:, en le e se guardaban archivos, de los clientes, las demas unidades c: y d: estan con deep freeze , pero un dia se metio un virus pr dicha unidad unidades, y tuve q formatear todas las pcs, ahora, quiero tratar de ver si puedo hacer para q esta unidad este en modo invisible y q nadie la pueda ver , y solo pueda guardar dichos juegos, para q se actulisen, claro teniendo congeladas las otras unidades.

Adjunto:
-He descargado el program No drives manager, pero no veo como configurarlo. y si ademas sera seguro o no., segun lei es para esconder el disco y ponerlo en form ainvisible, pero puedo ejercutar porgrmas de esta forma ?, que tan seguro puedo ser ?
-Actualmente uso el windows 7.

gracias de antemano por las respuestas.
3  Sistemas Operativos / Windows / Administrar arranque del sistema operativo . en: 11 Septiembre 2010, 16:37 pm
Bueno, el problem q me da mi pc, es q hace unos meses instale win 7 , pero la pc era muy baja para poder correrla, entonces decidi eliminarlo, formate la unidad donde estaba instalado, pero ahora el problema recide q al prenden la pc, me sale el mensaje de escojer entre  win xp sp2 y win 7 , al darle en 7 no , aranca nada, me sale otro, menu donde tengo laopcion de reparar, pero al darle se reinicia , la pc:
Qusiera saver como borrar, ese mensaje de incio, por q ya no tengo el 7, ia intente en msconfig boot,inn, me sale una serie de comandos, comproe y esta bien, le di click derecho a mp, y inicio y recuperacion, y seleccione sistema, pero solo sale 1, gracias de antemano.
4  Programación / Programación C/C++ / Ejercutar main desde otro main. en: 10 Septiembre 2010, 03:10 am
Holas, me gustaria que me puedan gracias por adentado:
Weno me dejaron hacer un programa una especi de presentacion, donde mostraba lo siguien
Citar
#include <iostream>
#include <conio2.h>
#include <windows.h>
#include <intro.cpp>
using namespace std;

int main()
{
    char op;
    do{
    char soundfile[] = "f:/presentacio.wav" ;
  //  PlaySound((LPCSTR)soundfile, NULL, SND_FILENAME | SND_ASYNC );
    textcolor(CYAN);
cout<<"       ?Sexy"<<endl;
cout<<"____?Sexy?Sexy"<<endl;
cout<<"___y?Sexy?Sexy?"<<endl;
cout<<"___?Sexy?Sexy?S"<<endl;
cout<<"___?Sexy?Sexy?S               PRODUCCIONES "<<endl;
cout<<"__?Sexy?Sexy?Se"<<endl;
cout<<"_?Sexy?Sexy?Se                ***** Un Ingeniero no es un  "<<endl;
cout<<"_?Sexy?Sexy?Se_"<<endl;
cout<<"_?Sexy?Sexy?Sexy?                    ser calculador y frio, "<<endl;
cout<<"?Sexy?Sexy?Sexy?Sexy "<<endl;
cout<<"?Sexy?Sexy?Sexy?Sexy?Se                 simplemente su cerebro es   "<<endl;
cout<<"?Sexy?Sexy?Sexy?Sexy?Sex"<<endl;
cout<<"_?Sexy?__?Sexy?Sexy?Sex                     mas fuerte que su corazon. *****"<<endl;
cout<<"___?Sex____?Sexy?Sexy?"<<endl;
cout<<"___?Sex_____?Sexy?Sexy"<<endl;
cout<<"___?Sex_____?Sexy?Sexy"<<endl;
cout<<"____?Sex____?Sexy?Sexy"<<endl;
cout<<"_____?Se____?Sexy?Sex"<<endl;
cout<<"______?Se__?Sexy?Sexy"<<endl;
cout<<"_______?Sexy?Sexy?Sex"<<endl;
cout<<"________?Sexy?Sexy?sex                  Tu controlas "<<endl;
cout<<"_______?Sexy?Sexy?Sexy?Se"<<endl;
cout<<"_______?Sexy?Sexy?Sexy?Sexy?                    Tu      "<<endl;
cout<<"_______?Sexy?Sexy?Sexy?Sexy?Sexy"<<endl;
cout<<"_______?Sexy?Sexy?Sexy?Sexy?Sexy?S             Destino "<<endl;
cout<<"________?Sexy?Sexy____?Sexy?Sexy?se"<<endl;
cout<<"_________?Sexy?Se_______?Sexy?Sexy?"<<endl;
cout<<"_________?Sexy?Se_____?Sexy?Sexy?"<<endl;
cout<<"_________?Sexy?S____?Sexy?Sexy"<<endl;
cout<<"_________?Sexy?S_?Sexy?Sexy"<<endl;
cout<<"________?Sexy?Sexy?Sexy"<<endl;
cout<<"________?Sexy?Sexy?S              DUDAS O PREGUNTAS "<<endl;
cout<<"________?Sexy?Sexy"<<endl;
cout<<"_______?Sexy?Se         ANGEL1D@HOTMAIL.COM  "<<endl;
cout<<"_______?Sexy?"<<endl;
cout<<"______?Sexy?"<<endl;
cout<<"______?Sexy?"<<endl;
cout<<"______?Sexy"<<endl;
cout<<"______?Sexy"<<endl;
cout<<"_______?Sex"<<endl;
cout<<"_______?Sex"<<endl;
cout<<"_______?Sex"<<endl;
cout<<"______?Sexy"<<endl;
cout<<"Repetir sonido s/n"<<endl;
cin>>op;
system("cls");
    }while(op=='s');
    return 0;
    system("pause");

}


Ahora  lo que m e pidieron hacer es, que este menu, me salga cada ves q cree un programita, bueno lo pondria despues de declarar variables, con un copia y pega,pega, pero lo que tengo q hacer es guarlo de alguna forma que lo llame desde un main de otro programa, he tenido la idia de guardarlo en una especie de libreria, y de hay llamarlo como un metodo, pero no logro conseguir, si alguien me podria ayudar estaria muy agradecido .
No inporta el compilador, me puedo adaptar, actualmente uso code blocks, gracias.
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines