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ú

Temas - pitka

#1
Hola de nuevo por aca molestando con una gran duda (al menos para mi), pues verán con la ayuda del foro y lo que he leído en la red, tengo este código que va llenando una lista de personas a las cuales le pide su nombre, id y edad, consultar por id y eliminar toda la lista eso hasta ahora lo hace bien o eso creo, el problema esta cuando trato de eliminar a una persona de la lista ingresando yo el id a eliminar, si no es el primer elemento ingresado lo elimina perfectamente pero si es el primero no funciona al intentar volver al menú, dejo el código para que vean lo que llevo hecho y también de que todos los errores que tengan me orienten para mejorar, de antemano gracias y saludos!

Código (cpp) [Seleccionar]

#include <iostream>
using namespace std;

#define VOLVER_MENU cout<<"\n\nPRESIONE ENTER PARA VOLVER AL MENU"; setbuf(stdin, NULL); cin.get();


struct nodo
{
        string nombre;
        int id;
        int edad;
        nodo *siguiente;     
};

nodo *pIni = NULL;
nodo *pFin;
nodo *p;

char op = 'n';
int cont = 0;
int i = 0;
int enc =0;


void cargar();
void mostrarlista();
void cargarnodo(nodo *x);
void consultar();
void eliminar();
void borrarNodo();


int main()
{

      do{         
         system("cls");       
         cout<<"Insertar elemento --- (I) (Personas ingresadas) "<<cont<<endl;       
         cout<<"Mostrar elementos --- (M)\n"; 
         cout<<"Consultar elemento -- (C)\n";
         cout<<"Eliminar elementos ---(E)\n";
         cout<<"Eliminar por id ------(N)\n";
         cout<<"Salir --- (S)\n";
         cin.get(op);
         if(toupper(op) == 'I')
             {
              cargar();
             }   
         else if(toupper(op) == 'M')
              mostrarlista();
         else if(toupper(op) == 'C')
              consultar();
         else if(toupper(op) == 'E')
              eliminar();
         else if(toupper(op) == 'N')
              borrarNodo();             
       }while(toupper(op) != 'S');
p = pIni;
if(p != NULL)
{
         nodo *aux;
         while(p!=NULL)
             { 
                 aux = new nodo;
                 aux = pIni;
                 pIni = pIni->siguiente;
                 free(aux);
                 p = p->siguiente;                         
             }
}
return 0;

}


void mostrarlista()
{
     
     system("cls");
      if(pIni != NULL)
         {
           p = pIni;
           i = 0;
         while (p->siguiente != NULL)
            {
                  i++;
                  cout<<i<<"Direccion : "<<int(p)<<endl;
                  cout<<i<<".1) Nombre: "<<p->nombre<<endl;
                  cout<<i<<".2) Id: "<<p->id<<endl;
                  cout<<i<<".3) Edad: "<<p->edad<<endl<<endl;
                  p = p->siguiente;
            }     
        }else
         cout<<"NO HAY ELEMENTOS PARA MOSTAR";
         VOLVER_MENU
}


void cargar()
{
     if(pIni == NULL) 
       {       
             pIni = new nodo;
             pFin = new nodo;
             pIni->siguiente = pFin;           
             pFin->siguiente = NULL;           
             cargarnodo(pIni);                 
       }
       else                               
         {
             cargarnodo(pFin);                     
             pFin->siguiente = new nodo;         
             pFin = pFin->siguiente;           
             pFin->siguiente = NULL;             
         }
       cont++;
       p = pIni;
}

void cargarnodo(nodo *x)
{
      system("cls");
      cout<<"introduzca el nombre: ";
      cin>>x->nombre;
      cout<<"introduzca el id: ";
      cin>>x->id;
      cout<<"introduzca la edad: ";
      cin>>x->edad; 
}

void consultar()
{
                   system("cls");
                   p = pIni;         
                   if(p != NULL)
                   {
                   nodo *c = NULL;
                   c = new nodo;             
                   cout<<"INGRESE ID A CONSULTAR\n";
                   cin>>c->id;
                   enc = 0;
                   while(p != NULL)
                     {   
                          if(c->id == p->id)
                          { 
                              enc = 1;         
                              cout<<"\n\nNombre: "<<p->nombre<<endl;
                              cout<<"id: "<<p->id<<endl;
                              cout<<"Edad: "<<p->edad<<endl;
   
                          }
                          p = p->siguiente;
                     }     
                     if(enc == 0)
                        {
                            cout<<"\n\nELEMENTO NO ENCONTRADO";
                        } 
                        free(c);
                    }else
                        cout<<"NO HAY ELEMENTOS PARA CONSULTAR";
                        VOLVER_MENU   



void eliminar()
{
     system("cls");
     p = pIni;
     if(p!=NULL)
     {
         nodo *aux;
         aux = new nodo;
         while(p->siguiente != NULL)
                         {       
                             aux = pIni;
                             pIni = pIni->siguiente;
                             free(aux);
                             p = p->siguiente;                         
                         }
         cout<<"ELEMENTOS ELIMINADOS";               
         cont = 0;     
                             
    }else   
       cout<<"NO HAY ELEMENTOS PARA ELIMINAR";
    VOLVER_MENU       
}


void borrarNodo()
{
     system("cls");
     p = pIni;
     if(p)
     {
                 
         nodo *aux = NULL, *ant = NULL;
         ant = new nodo; 
         aux = new nodo;
         cout<<"INTRODUZCA EL ID A ELIMINAR\n";
         cin>>aux->id;
         while(aux->id != p->id)
           {
              ant = p;
              p = p->siguiente;
           }           
             if(aux->id == p->id)
                {                   
                   ant = p;
                   p = p->siguiente;               
                   free(ant);
                   free(aux);
                   cout<<"ELEMENTO ELIMINADO";
                   cont--;
                }                                 
    }else   
       cout<<"ELEMENTO NO ENCONTRADO";
    VOLVER_MENU       
}
#2
Hola apenas estoy empezando con punteros y listas, quiero hacer un programa que vaya leyendo por teclado nombre y edad de una persona y lo vaya almacenando en a lista(sin conocer la cantidad de personas que vayan a ser registradas) y luego mostrar todas esas personas, pero estoy atascado,  me han dicho que tengo que usar un puntero auxiliar que guarde el primer valor o algo así pero de verdad me gustaría entender el porque.

gracias de antemano, aquí dejo lo que llevo

Saludos

Código (cpp) [Seleccionar]
#include <iostream>
using namespace std;

struct nodo
   {
       string nombre;
       int edad;
       nodo *siguiente;      
   };

int main(void)
{

nodo *persona;
char resp;


do
{
     persona = new nodo;
     cout<<"introduzca el nombre: ";
     cin>>persona->nombre;
     cout<<"introduzca la edad: ";
     cin>>persona->edad;
     cout<<"Salir? S/N ";
     cin>>resp;
}while(resp!='s');

p = persona;

while (p->siguiente != NULL)
{
     cout<<p->nombre<<endl;
     cout<<p->edad<<endl;
     p=p->siguiente;  
}

system("pause");

}
#3
Buenas asi como dice el titulo tengo una duda cual de esos 2 procesadores es mejor y porque?? cual es mas optimo para juegos o para el sistema en general??... gracias!!

Saludos.

Edito: segun lo que he buscado y entendido el dual core (por ser mas nuevo) se lo lleva, pero aun no me saca todas las dudas!! igual creo q mejor es el dual core (en este caso)
#4
Windows / Tarjeta de red windows 7
24 Marzo 2012, 07:05 AM
Buenas ya he soucionado el otro problema, pero me acaba de surgir uno nuevo, he instalado win 7 en una pc de escritorio, es una vit modelo 2600 (si hace falta un log de everest o que se yo lo pongo) y bueno segun veo en administrador de dispositivo aparecen todos aunque en adaptadores de red solo dice esto

D-link airplus dwl-g520 wireless pci adapter (rev.B) (me imagino que es la inalambrica)
Realtek PCIe GBE Family controller (la integrada)

Bueno conecto el cable de red y no enciende ninguno de los leds, he revisado en el bios y la opcion de onboard lan esta enabled asi que creo que se descarta la posibilidad de que fuese eso..!

ya no se que hacer, es como si estuviera apagado eso, pero es integrado no se como se apaga o se enciende..! :S disculpen la ignorancia pero es la verdad  :(

Bueno si alguien sabe a q se puede deber y una posible solucion sera mucho mas que bienvenida, gracias de antemano

Saludos
#5
Buenas, he estado intentando instalar windows 7 en una desktop, que tenia windows xp pero al tratar de iniciar sale la pantalla negra con letras blancas que dice que no pudo iniciar normalmente y da las opciones al intentar pulsar una de esas opciones se queda colgada la pc.

en la instalacion de windows 7 (decidi formatear y pense que asi me libraria de eso) luego de que sale "windows is loading files" primero carga rapido y luego lento, sale "starting windows" despues salta a la pantalla como de carga que dice "microsoft corporation" y una barra con puntos verdes com osi cargara el heco es que pasado unos segundos se queda colgada y los puntos dejan de moverse es decir que nisiquiera entra al setup de win7 para proceder con la instalacion, he intentado instalar en safe mode, y cuando sale la carga de archivosse queda pegado en " loaded: \windows\system32\DRIVERS\disk.sys"

Alguna solucion si alguien sabe que es lo que sucede? gracias de antemano! y disculpen si me extendi trate de ser especifico con el problema!

Saludos
#6
Redes / Windows / no reconoce tarjeta de red
19 Marzo 2012, 21:02 PM
Buenas tratando de formatear una pc e instalar windows 7 me ha surgido un gran prooblema, he podido instalar satisfactoriamente el so y los programas todo bien. pero el problema surge al conectar el cable de red el sistema no lo reconoce quedando el icono de una pc q sale con la X roja, he intenado de todo y nada auin en el administrador de dispositivo aparece "otros dispositivos" y dentro de ella aparece "controladora ethernet" con el icono amarillo instalando el everest no me dice nada excepto que la tarjeta se llama "realtek rtl8129 fast ethernet" y que es pci... pero mas que eso nada, aparte el led que traen las tarjetas generalmente (verde) q se enciende al conectar el cable de red esta permanentemente encendido aun asi sin tener el cable conectado, si a alguien le ha pasado algo similar o sabe de alguna solucion le agradezco de antemano!!

Saludos
#7
Buenas, llevo un tiempo leyendo el foro, y me parece espectacular y decidi registrarme ya que veo que tienen la disposicion de ayudar a personas que no saben como yo, de antemano gracias!

Entrando al tema mi duda es la siguiente, estoy aprendiendo c/c++, he estado tratando de hacer un programa que cuente las vocales de un texto ingresado por teclado lo cual he logrado, pero no puedo hacer que finalice el texto al introducir uncaracter especifico (ejemplo un "@" o ".") para finalizar sin tener que darle enter, ademas de que tambien me gustaria usar un ciclo para repetir todo mientras el usuario quiera, pero se me embasuran las variables y ni idea de como limpiarlas de nuevo, estuve leyendo aqui en busca de una funcion llama fflush, pero segun lei no es lo que necesito http://foro.elhacker.net/programacion_cc/lo_que_no_hay_que_hacer_en_cc_nivel_basico-t277729.0.html
lo que lei en ese enlace me ayudo, porque me habian dicho que necesitaba usar "gets", buen esa es mi duda ya me extendi, mucho esto es lo que llevo de codigo
por cierto me ayude con unos codigos que encontre en internet pero ninguno me dijo lo que necesitaba por eso me anime a preguntar despues de que busque  :D



modificacion

he conseguido hacer un ciclo, y solucione lo del "embasuramiento del buffer" aunque aun no tengo muy claros los conceptos, lo arregle usando esto.. que encontre en muchas partes  #define BORRA_BUFFER while( getchar() != '\n'); y luego agregue BORRA_BUFFER al final del ciclo antes de evaluar la condicion, y se soluciona, pero me surgio una duda con respecto a esa macros.. y es que hace exactamente?? gracias..