Sábado 14 de Diciembre de 2024, 11:56
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Re: Listas simple......
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: Re: Listas simple...... (Leído 2452 veces)
alama
Nuevo Miembro
Mensajes: 16
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.
#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;
}
}
}
}
Tweet
JuanK
Miembro de ORO
Mensajes: 5393
Nacionalidad:
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
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:
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:
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
struct nodo_articulo
{
art inf_articulo;
struct nodo_articulo *sig;
};
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
struct *nuevo;
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
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:
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
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:
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
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?
JuanK
Miembro de ORO
Mensajes: 5393
Nacionalidad:
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
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:
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
Re: Listas simple......