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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ordenar una lista alfabeticamente
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ordenar una lista alfabeticamente  (Leído 4,098 veces)
maferavagar

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Ordenar una lista alfabeticamente
« en: 17 Mayo 2015, 13:10 pm »

Buenas Noches, alguien que me pudiera ayudar en mi código. Lo estoy haciendo en Dev, y al momento de compilar me manda Done, me aparece la ventana negra y despues me sale otra ventana diciendome , que mi proyecto.exe dejo de funcionar.
// LISTA SIMPLEMENTE ENLAZADA CON MEMORIA DINAMICA
// QUE INSERTA ORDENADO LOS DATOS
// CON FUNCION QUE DESPLIEGA LOS DATOS Y RETORNA UN PUNTERO
// CON FUNCION QUE INVIERTE EL ORDEN DE LA LISTA SIMPLE
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
#include <iostream>
#include <string.h>
#include <stdlib.h>
#define n 3
using namespace std;
struct nodo_lista {
  public:
                char nom[31];
          char bol[10];
          float cal[n];
          float prom;
          struct nodo_lista *sig;  // puntero a estructura
 
           
            nodo_lista(nodo_lista *S=NULL)
          {
       prom=0.0;
       strcpy(bol,S->bol);
       strcpy(nom,S->nom);
       for(int i=0;i<n;i++)
       {   cal=S->cal;
      prom=prom+cal;
      }
      prom=prom/n;
      sig=NULL;
  } //constructor que inicializa las variables del nodo

 };

class lista1{
private:
    class nodo_lista *primero, * final, *nvo, *recorre;

public :
   lista1(){primero=final=recorre=nvo=NULL; }
   void inserta_nodo_ord(nodo_lista *D);
   nodo_lista *ver_nodos();
   void invertir(nodo_lista *lista);
   void eliminar_dato(char boleta[10]);
};

//funcion que inserta ordenado en la lista
void lista1::inserta_nodo_ord(nodo_lista *D) {
 nvo= new nodo_lista(D);
 if(nvo==NULL){cout<<"error en asignacion de memoria\n";getch();exit(1);}
 if(primero == NULL) primero=final=nvo ;
 // INICIALIZA LA PRIMERA DIRECCION Y LA FINAL
 else
  {
    if(strcmpi(nvo->bol,primero->bol)<=0)
    {  //el dato a insertar es menor al primero
      nvo->sig=primero;  // enlaza el nuevo nodo al inicio
      primero = nvo;   // inicio apunta al nodo nuevo
    }
    else
    {   // de otra forma se busca su lugar
      recorre= primero;                 // condicion de ubicacion
      while( (recorre->sig != NULL) && (strcmpi(nvo->bol,recorre->sig->bol)>0) )
         {
          recorre = recorre->sig;
         }
      nvo->sig = recorre->sig; //inserta y/o enlaza el nuevo nodo al nodo siguiente
      recorre->sig= nvo;   // inserta y/o enlaza al nuevo nodo al nodo anterior
    }
  }
}
void lista1::invertir(nodo_lista *lista)
{
  recorre=lista;
  nodo_lista *nva_lista=NULL;
  while(lista!=NULL)
  {
    recorre=lista->sig;
    lista->sig=nva_lista;
    nva_lista=lista;
    lista=recorre;
  }
  primero=nva_lista;
}
   // Elimina un numero de la lista
void lista1::eliminar_dato(char boleta[10]) {
   nvo=recorre=primero;
   if(strcmpi(nvo->bol,boleta) == 0){
      primero=nvo->sig;
      delete(nvo);
   }
   while((nvo->sig != NULL) && (primero!=NULL)){
       nvo=recorre;
       recorre=recorre->sig;
      if(strcmpi(recorre->bol,boleta) == 0){
         nvo->sig = recorre->sig;
         delete(recorre);
      }
   }
}
// MUESTRA EL CONTENIDO DE LA LISTA Y RETORNA UN PUNTERO DE LA LISTA SIMPLE
nodo_lista *lista1::ver_nodos() {
   recorre=primero;
   cout<<"entra a ver"<<endl;
   while((recorre != NULL) && (primero != NULL))
   {
     cout<<"\nBOLETA : "<<  recorre->bol<<endl;
     cout<<"NOMBRE : "<<  recorre->nom<<endl;
     for(int i=0;i<n;i++)
       cout<<"CALIFICACION["<<i<<"] = "<<  recorre->cal<<endl;
     cout<<"PROMEDIO = "<<  recorre->prom<<endl;

    recorre=recorre->sig;
   }
   return(primero);
}

int main()
{
 int i=0;char m,borra[10];
 int opc;
 lista1 Obj1C;     // objeto de la clase
 nodo_lista *Obj2E,*Obj3E;  // objeto de la estructura
 Obj2E=new nodo_lista;
 if(Obj2E==NULL)exit(1);
 clrscr();
 do
{
     cout<<"\n\nBOLETA : ";     cin>>Obj2E->bol;
     cout<<"\nNOMBRE : ";     gets(Obj2E->nom);
     for(i=0;i<n;i++)
      {
       cout<<"\nCALIFICACION["<<i<<"] = ";
       cin>>Obj2E->cal;
      }

   Obj1C.inserta_nodo_ord(Obj2E); // inserta dato
   cout<<"  Salir de Insertar s/n ? ";
   m=getch();i++;
  }
   while(toupper(m) != 'S');
 clrscr();
  //visualiza la lista y entrega la direccion inicial de la lista simple
 Obj3E=Obj1C.ver_nodos();
 cout<<"\n\nDesea ver invertida la lista? s(1),n(0) ";cin>>opc;
  if(opc)
{
  //invierte la lista simple
  Obj1C.invertir(Obj3E);
  //visualiza la lista y pierde la direccion inicial de la lista simple
  Obj1C.ver_nodos();
   }
  cout<<"\n\nDesea borrar un registro de la lista? s(1),n(0) ";cin>>opc;
  if(opc)
{
  cout<<"\nBoleta a borrar? : ";cin>>borra;
    Obj1C.eliminar_dato(borra);
    Obj1C.ver_nodos();
   }
 getch();
}


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.414


ASMático


Ver Perfil WWW
Re: Ordenar una lista alfabeticamente
« Respuesta #1 en: 17 Mayo 2015, 14:56 pm »

La ventana negra es la consola.
Si hubo un error, y viendo que usas memoria dinámica, intuyo que es por un acceso a memoria mal practicado.

Como dato, estás usando librerias de C y de C++ a la vez. Si les quitas el .h y le pones una 'c' al comienzo, la mayoria serán de C++. ("stdio.h" -> "cstdio")

Mete el código en etiquetas GeSHi.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ordenar alfabeticamente en php con numeros « 1 2 »
PHP
dominioswww 10 6,938 Último mensaje 17 Junio 2008, 03:02 am
por WHK
Ordenar matriz alfabeticamente
Programación C/C++
programacion_c 7 9,962 Último mensaje 25 Abril 2012, 00:19 am
por david_BS
Como ordenar alfabéticamente palabras en C++
Programación C/C++
loko5755 4 20,304 Último mensaje 5 Mayo 2014, 12:04 pm
por eferion
Ordenar alfabeticamente Nombres (Struct)
Programación C/C++
Ja_90 6 8,226 Último mensaje 22 Octubre 2014, 19:10 pm
por Ja_90
como ordenar 3 palabras alfabeticamente « 1 2 3 »
Programación C/C++
fernandoprog1 22 20,980 Último mensaje 16 Junio 2015, 17:13 pm
por fernandoprog1
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines