• Martes 5 de Noviembre de 2024, 20:39

Autor Tema:  Re: Listas simple......  (Leído 2410 veces)

alama

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Re: Listas simple......
« en: Martes 10 de Junio de 2003, 00:03 »
0
Por favor! q alguien m diga q tengo q cambiar o añadir(si voy bien,claro!)o lo q tengo mal,como solucionarlo.:ayuda:#include<stdio.h>
struct nodo_articulo
 {
    art inf_articulo;
    struct nodo_articulo *sig;
 };
void mostrar_menu();
void insertar(struct nodo_articulo **principio, struct nodo_articulo *nodo_nuevo,int repetido);
void mostrar_menu()
 {
  printf("nELIGE UNA OPCION");
  printf("1.-Inserta informacionn");
  printf("2.-Borrarn");
  printf("3.-Mostrar listan");
  printf("4.-Salirn");
 }
void insertar(struct nodo_articulo **principio, struct nodo_articulo *nodo_nuevo,int repetido)
 {
 struct nodo_articulo *anterior;
 struct *nuevo;
 int ya_esta,resultado;
 nuevo=(struct nodo_articulo*)malloc(sizeof(struct nodo_articulo)
    if(*principio==NULL)
     {
      *principio=nodo_nuevo;
      nodo_nuevo->sig=NULL;
     }
    else
      {
       resultado=

      
         if(resultado=*repetido)
      {
       *repetido=1;
       return NULL;
         printf("nEl nodo ya se encuentra en la lista");
      }
     else
      {
        if(resultado=NULL)
         {
      sig->nodo_nuevo=*principio;
      *principio=nodo_nuevo;
         }
        else
         {
          nodo_nuevo->sig=anterior->sig;
          anterior->sig=nodo_nuevo;

         }
      }
   }
 }

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Listas simple......
« Respuesta #1 en: Miércoles 11 de Junio de 2003, 15:39 »
0
No entiendo porque utilizas doble apuntador en tantas ocasiones, no es necesario.

juank
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

alama

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Re: Listas simple......
« Respuesta #2 en: Miércoles 11 de Junio de 2003, 16:04 »
0
esq en el libro m lo pone asi,pero lo d los nodos,no entiendo nada!!!

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Listas simple......
« Respuesta #3 en: Miércoles 11 de Junio de 2003, 23:17 »
0
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Listas simple......
« Respuesta #4 en: Jueves 12 de Junio de 2003, 18:54 »
0
1-no has definidi el tipo art:
 
Código: Text
  1.  
  2. struct nodo_articulo
  3. {
  4.   art inf_articulo;
  5.   struct nodo_articulo *sig;
  6. };
  7.  
  8.  
devido a esto se derivan multiples errores de compilacion3
2-luesgo dices struct *nuevo, pero eso nde por si no es nada porque no mencionas el tipo de la estructura...
 
Código: Text
  1.  
  2. struct *nuevo;
  3.  
  4.  
devido a esto se derivan multiples errores de compilacion3
3-por aqui te falta un punto y coma:
nuevo=(struct nodo_articulo*)malloc(sizeof(struct nodo_articulo)
nuevamente esto desencadena multiples errores


Creo que deberias buscarte un libro de programacion basica, proque todos estos errores sojn muy faciles de detecdtar porque el compilador te dice aprox. en que linea esta cada error, y te da una idea de lo que es cada cosa.

Si no tienes un compilador en un idioma que manejes, te sugiero qu mejor consigas uno, o te armes de un buen diccionario o de un programa de traduccion.

Juank
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

alama

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Re: Listas simple......
« Respuesta #5 en: Sábado 14 de Junio de 2003, 10:57 »
0
He añadido y corregido y por ahora creo q asi esta bastante bien,solo m falta lo de los comentarios(si m puedes ayudar!)#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>

struct articulo{
      char *cod_art;
      char *nombre;
      char *desc;
      float precio;
      int existencias;
      char *cod_prov;
      char *notas;
          };
struct nodo_articulo
 {
  struct articulo inf_articulo;
  struct nodo_articulo *sig;
 };
void leer_articulo(struct articulo *art);
struct nodo_articulo *BuscarNodoArtInsertar(struct nodo_articulo *principio,struct nodo_articulo *nodo_buscado,int *repetido);
int BorrarNodoArt(struct nodo_articulo **principio,struct nodo_articulo *nodo_borrar);

struct nodo_articulo *BuscarNodoArtBorrar(struct nodo_articulo *principio,struct nodo_articulo *nodo_buscado,int *esta);

void mostrar_articulo(struct articulo *art);
int InsertarNodoArt(struct nodo_articulo **principio,struct nodo_articulo *nodo_nuevo);

void main()
{

 struct articulo *art;
 struct nodo_articulo *nodo_nuevo,*principio=NULL;
 struct nodo_articulo *nodo_borrar;
 int op;

 do
 {
  printf("nELIGE UNA OPCIONn");
  printf("1.-Insertar en listan");
  printf("3.-Mostrar la listan");
  printf("2.-Borrar n");
  printf("4.-Salirn");
  scanf("%i",&op);
  fflush(stdin);
  switch(op)
   {
    case1:
     art=(struct nodo_articulo*)malloc(sizeof(struct nodo_articulo));
     leer_articulo(&(nodo_nuevo->inf_articulo));
     InsertarNodoArt(&principio,nodo_nuevo);

     break;
    case2:
          /*Bucle que recorra la lista desde el principio y llame cada vez a mostrar_Articulo*/
     mostrar_articulo(art);
     break;
    case3:
     /*Preguntar codigo del articulo a borrar*/
     printf("n¨Que articulo deseea borrar?");
          /*Buscar el nodo a borrar*/
     BorrarNodoArt (&principio,nodo_borrar);
     break;
    default:
       printf("nERROR:Dato incorrecto");
       break;
   }
  }
 while(op!=4);
}          

void leer_articulo(struct articulo *ar)
{
 char aux[30];
 float prec;
 printf("nIntroduzca el codigo del articulo: ");
 gets(aux);
 ar->cod_art=(char*)malloc((strlen(aux)+1)*sizeof(char));
 strcpy(ar->cod_art,aux);
 fflush(stdin);

 printf("nIntroduzca el nombre del articulo: ");
 gets(aux);
 ar->nombre=(char*)malloc((strlen(aux)+1)*sizeof(char));
 strcpy(ar->nombre,aux);
 fflush(stdin);

 printf("nIntroduzca la descripcion del articulo: ");
 gets(aux);
 ar->desc=(char*)malloc((strlen(aux)+1)*sizeof(char));
 strcpy(ar->desc,aux);
 fflush(stdin);

 printf("nIntroduzca el precio del articulo: ");
 scanf("%f",&prec);
 prec=ar->precio;

 printf("nIntroduzca las existencias del articulo: ");
 scanf("%i",&ar->existencias);

 printf("nIntroduzca el codigo de la provincia: ");
 gets(aux);
 ar->cod_prov=(char*)malloc((strlen(aux)+1)*sizeof(char));
 strcpy(ar->cod_prov,aux);
 fflush(stdin);

 printf("nIntroduzca las notas del articulo: ");
 gets(aux);
 ar->notas=(char*)malloc((strlen(aux)+1)*sizeof(char));
 strcpy(ar->notas,aux);
 fflush(stdin);

}


int InsertarNodoArt(struct nodo_articulo **principio,struct nodo_articulo *nodo_nuevo)
 {
 struct nodo_articulo *anterior;
 int ya_esta;
 

    if(*principio==NULL)
      {
        *principio=nodo_nuevo;
        nodo_nuevo->sig=NULL;
      }
    else
       {
         anterior=BuscarNodoArtInsertar(principio,nodo_nuevo,&ya_esta);

     if(ya_esta)
          return 0;
     else
           if(anterior==NULL)
           {
      nodo_nuevo->sig=*principio;
           *principio=nodo_nuevo;
           }
      else
          {
          nodo_nuevo->sig=anterior->sig;
          anterior->sig=nodo_nuevo;
          }
        }
 }
struct nodo_articulo *BuscarNodoArtInsertar(struct nodo_articulo *principio,struct nodo_articulo *nodo_buscado,int *repetido)
  {
   struct nodo_articulo *aux;
   int comparacion;

        aux = principio;
         comparacion =strcmp(nodo_buscado->inf_articulo.cod_art,aux->inf_articulo.cod_art);

         if(comparacion == 0)
          {
      *repetido = 1;
      return NULL;
          }
         else if (comparacion > 0 && aux->sig == NULL)
          {
      *repetido =0;
      return aux;
          }
         else if(comparacion < 0)
          {
      *repetido = 0;
      return NULL;
          }
         while(aux->sig !=NULL)
          {
      comparacion = strcmp(nodo_buscado->inf_articulo.cod_art,aux->inf_articulo.cod_art);

        if(comparacion == 0)
         {
          *repetido = 1;
          return NULL;
         }
        else if(comparacion < 0)
         {
          *repetido = 0;
          return aux;
         }
          aux = aux->sig;
          }
          return aux;
    }


void mostrar_articulo(struct articulo *art)
{
 printf("nArticulo: %s",art->cod_art);
 printf("nNombre: %s",art->nombre);
 printf("nDescripcion: %s",art->desc);
 printf("nPrecio: %f",art->precio);
 printf("nExistencias: %i",art->existencias);
 printf("nProvincia: %s",art->cod_prov);
 printf("nNotas: %s",art->notas);
 getch();
}
int BorrarNodoArt(struct nodo_articulo **principio,struct nodo_articulo *nodo_borrar)
 {
  struct nodo_articulo *anterior, *a_borrar;
  int esta,no_esta=0;

      if(*principio == NULL)
         {
      esta=0;
      return esta;
         }
      else
         {
          anterior=BuscarNodoArtBorrar(principio, nodo_borrar,&no_esta);

       if(!esta)
         return esta;
       else if(anterior == NULL)
         {
          a_borrar=*principio;
          *principio=a_borrar->sig;
          free(a_borrar);
         }
        else
           {
            a_borrar=anterior->sig;
            anterior->sig=a_borrar->sig;
            free(a_borrar);
          }

         }
  }
 struct nodo_articulo *BuscarNodoArtBorrar(struct nodo_articulo *principio,struct nodo_articulo *nodo_buscado,int *esta)
 {
  struct nodo_articulo *aux;
  int comparacion;

       aux=principio;
       comparacion=CompararArticulosCod(&nodo_buscado->inf_articulo,&aux->inf_articulo);

       if(comparacion == 0)
        {
       *esta=1;
       return NULL;
        }
       else if(aux->sig == NULL)
        {
       *esta=0;
       return NULL;
        }
       while(aux->sig !=NULL)
        {
       comparacion = CompararArticulosCod(&nodo_buscado->inf_articulo,&aux->inf_articulo);

      if(comparacion == 0)
       {
          *esta = 1;
          return aux;
       }
      else if(comparacion < 0)
       {
          *esta = 0;
          return NULL;
       }
      else aux = aux->sig;
        }
        *esta = 0;
        return NULL;
  }

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Listas simple......
« Respuesta #6 en: Lunes 16 de Junio de 2003, 13:55 »
0
Aque te refieres con lo de los comentarios.??

Juank
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

alama

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Re: Listas simple......
« Respuesta #7 en: Lunes 16 de Junio de 2003, 15:44 »
0
A lo q pone entre /*    */,se llama asi,no?,bueno pero solo m falta el q pone
/*Buscar el nodo a borrar*/,gracias:hippi:

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Listas simple......
« Respuesta #8 en: Lunes 16 de Junio de 2003, 16:05 »
0
ayudaria mucho si colocas el codigo identado..

utilizando antes del codigo:
["code"] y al final  ["/code"]
logicamente sin las comilals..
o sino anexando el archivo...

Juank
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

alama

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Re: Listas simple......
« Respuesta #9 en: Lunes 16 de Junio de 2003, 19:58 »
0
no te entiendo!q quieres q ponga?o como lo quieres q lo ponga?:question:

JuanK

  • Miembro de ORO
  • ******
  • Mensajes: 5393
  • Nacionalidad: co
    • Ver Perfil
    • http://juank.io
Re: Listas simple......
« Respuesta #10 en: Lunes 16 de Junio de 2003, 22:23 »
0
revisa la ayuda de codigo bb que sale cuando creas o editas un mensaje, con eso no tendras que colocar topdo ese codigo ilegible(sin identar), o adicionalmente mejor puedes anexar el archivo.

Juank
[size=109]Juan Carlos Ruiz Pacheco
[/size]
Microsoft Technical Evangelist
@JuanKRuiz
http://juank.io

alama

  • Nuevo Miembro
  • *
  • Mensajes: 16
    • Ver Perfil
Listas simple......
« Respuesta #11 en: Martes 17 de Junio de 2003, 17:52 »
0
Bueno ya no te agobio mas pq ya he entregado el programa,no iba bien del todo pero...Bueno ya t contare,y gracias!!:flower: