Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Omar_2013

#11
Buen Día, mi duda es acerca de la lectura de archivos Binarios, este es el código:

Código (cpp) [Seleccionar]

void CargarInformacion(struct TNodo<Usuarios> **Lista)
{
     struct Usuarios Load;
     
     ifstream Datos("Base De Datos.dat", ios::binary);
     
     if (Datos.good())
        while (!Datos.eof())
              if ( Datos.read((char*)&Load, sizeof(Load)) )
                 InsertarFinal(Lista, Load);
                 
     Datos.close();
}


La Funcion funciona!!! pero no se por que hay que colocar esto

Código (cpp) [Seleccionar]
Datos.read((char*)&Load, sizeof(Load))

dentro de un if, le pregunte a alguien pero me dice que es para que no lea 2 veces lo mismo, pero esa es la duda... por que????


Gracias por su tiempo.  ;)
#12
Muy bien muchísimas gracias, lo seguiré revisando

Definitivamente no   :-( :-( :-( no lo encuentro
#13
Gracias por responder nolasco281, la verdad no he podido, pero ya he subido el link para que descargues el ejecutable y te des cuenta del error
#14
Hola Buenas, el problema es que en mi código en la LINEA 20,cin.getline pasa de largo y no ejecuta la instrucción de leer, ya he depurado el código con Dev C++ pero es realmente extraño.

El error ÚNICAMENTE SUCEDE al escoger primero la opción 2 y después intentar con la 1.

Aquí esta la porción de código.
Código (cpp) [Seleccionar]

   while (Opcion!=3)
   {
         cout<<"Menu Principal\n\n";
         
         cout<<"1. Ingresar a Facebook";
         cout<<"2. Crear una cuenta"<<endl;
         cout<<"3. Salir\n\n\n";
         
         CharOp=getch();//Lee un caracter sin presionar enter y sin mostrarlo en pantalla
         
         if (CharOp=='1')
         {
            Opcion=1;//Se Decrara para mantener la condicion while principal
            system("cls");
                         
            Intentos=0;
            while (Intentos!=3)
            {            
                  gotoxy(30,10);cout<<"Usuario: ";
                  cin.getline(User,10,'\n');
           
                  Validacion=BuscarLista(&ListaUsuarios, User, 1);//Validacion Se Encarga de ver si el Usuario Existe,
                  if ( Validacion==false )
                  {
                     gotoxy(39,12);cout<<"ID no encontrada!!!"<<endl;
                     Sleep(1500);
                     //Borra Los Espacios Incorrectos Para Un Nuevo Intento
                     gotoxy(39,10);cout<<"                         ";
                     gotoxy(39,12);cout<<"                         ";
                     gotoxy(28,10);textcolor(12);cout<<char(219);
                     Intentos+=1;
                  }
                  else
                      Intentos=3;
            }
             
         }
               
         if (CharOp=='2')
         {
            Opcion=2;//Se Decrara para mantener la condicion while principal

            cout<<"Nombre: ";
            cin.getline(CuentaNueva.Nombre, 20,'\n');
            cout<<"ID: ";
            cin.getline(CuentaNueva.ID, 10,'\n');
            cout<<"Contrase"<<char(164)<<"a: ";
            cin.getline(CuentaNueva.Contrasenia, 10,'\n');
            cout<<"Genero (M - F): ";//AQUI ESTA EL ERROR????
            cin>>CuentaNueva.Genero;
            cout<<"Edad: ";
            cin>>CuentaNueva.Edad;
            cout<<"Documento: ";
            cin>>CuentaNueva.Documento;
   
            InsertarFinal(&ListaUsuarios, CuentaNueva);
         }
             
         if (CharOp=='3')
            Opcion=3;//Se Decrara para mantener la condicion while principal
       
         system("cls");
   }


Si no me hago entender por favor descarguen el ejecutable
https://mega.co.nz/#!Btx2URJb!Dsr7oOEZx5RfvQkVlEAAv5gSw40uD2FEw-Uxh1mQJ9I

Aqui el link del codigo
https://mega.co.nz/#!owZQHZjB!QLbJo-EUYFfucYX2Mnn2GoBqzA56PLwqa1BYo4996Fs
#15
Gracias amchacon
#16
La duda es que tengo un archivo de texto asi:

Lucas Gnneco
Omar Rodriguez
Laura Monroy


y lo que quiero es que atravez del manejo de archivos sin sobreescribir nada meter un nombre por ejemplo entre Omar y Laura.


Lucas Gnneco
Omar Rodriguez
Pepito Perez
Laura Monroy


con acceso secuencial no me funciono, asi que creo que es con acceso aleatorio con seekg y seekp pero la verdad no he podido, podria alguien orientarme por favor.
#17
Lo que queria hacer al igualar TemFilas[i]=Palabras[i]; era copiar el contenido ya que TemFilas[i] tiene un espacio de mas y esa es la que quiero usar[/size]
#18
Esque la salida del programa deve de ser asi:

Entrada: "Anita Lava La Tina"
Salida: Anita --> 1 vez
           Lava -->  1 vez
           La    -->   1 Vez
           Tina -->  1 Vez
#19
Hola, estoy haciendo un programa para contar el numero de palabras que tenga una frase, el problema es que por supuesto siempre el numero de palabras varia, por lo que segun pienso yo, hay que usar memoria dinamica

Código (cpp) [Seleccionar]

int main(int argc, char *argv[])
{
    char Lectura[200], *PTok, **Palabras=NULL;
    int i=0, j=0, ContPal=1;
   
    cin.getline(Lectura, sizeof(Lectura));
   
    PTok=strtok(Lectura," ");
   
    while ( PTok!= NULL )
    {
          AgrEspacio(Palabras, ContPal);//AgrEspacio Agrega Una Fila De Mas A Palabras
          strcpy( Palabras[i], PTok );
          PTok=strtok(NULL," ");
          i+=1;
          ContPal+=1;
    }
   
    for ( j=0; j<i; j++ )
        cout<<Palabras[j]<<endl;
   
    system("PAUSE");
    return EXIT_SUCCESS;
}



El problema como tal es esa funcion para agregar una fila a la matriz, ya que si compila, pero estoy violando el acceso a la memoria en una parte del codigo de esa funcion

Código (cpp) [Seleccionar]

void AgrEspacio ( char **Palabras, int NumPal)
{
     char **TemFilas=new char*[NumPal];
     
     for ( int i=0; i<NumPal; i++ )
     {
         TemFilas[i]=new char[200]; 
         TemFilas[i]=Palabras[i];
     }
         
     Palabras=TemFilas;   
}

La verdad este tema de memoria dinamica se me hace un poco dificil de entender, ya que no se bien cuando es correcto usarla, por ejemplo en este ejercicio podria haber creado una matriz estatica como
Código (cpp) [Seleccionar]
char Palabras[100][200]; en vez de pensar en memoria dinamica, pero la ventaja es que con esta voy agregando filas a mi matriz cuando lo voy necesitando en vez de declarar una estatica y ocupar memoria que tal vez no usare

Gracias por su tiempo.
#20
Gracias por responder....

En realidad lo que trataba de hacer era que para cada posicion del arreglo Mi_Maleta, le correspondiara una arreglo donde se guardara cada item de la maleta.

Pero por lo visto hay que crear los dos arreglos por aparte no? ...

Primero el arreglo de Maletas y despues el arreglo de Items

Código (cpp) [Seleccionar]
Maleta *Mi_Maleta=new Maleta[10];
Item *Elementos=new Item[10];



y despues de alguna manera asignarle a cada posicion de Mi_Maleta, el arreglo de Elementos