Miércoles 20 de Noviembre de 2024, 14:20
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
) »
estrucutras, punteros
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: estrucutras, punteros (Leído 2486 veces)
bendroide
Nuevo Miembro
Mensajes: 7
estrucutras, punteros
«
en:
Jueves 7 de Abril de 2011, 23:40 »
0
Código: C
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
struct
agenda
{
char
nombre
[
50
]
;
char
telefono
[
25
]
;
char
email
[
50
]
;
}
;
struct
nodo
{
struct
agenda dato
;
struct
nodo
*
proximo
;
}
;
struct
nodo
*
nuevonodo
int
colavacia
(
struct
nodo
*
)
struct
nodo
*
creacola
(
struct
nodo
*,
struct
agenda
)
;
void
mostrar
(
struct
nodo
*
)
;
void
main
(
)
{
struct
nodo
*
pri
=
NULL
,
*
ult
=
NULL
;
struct
agenda x
;
printf
(
"ingrese nombre: "
)
;
gets
(
x.
nombre
)
;
while
(
strcmpi
(
x.
nombre
,
"fin"
)
)
{
printf
(
"ingrese telefono: "
)
;
gets
(
x.
telefono
)
;
printf
(
"ingrese mail: "
)
;
gets
(
x.
mail
)
;
ult
=
creacola
(
ult
,
x
)
;
if
(
pri
==
NULL
)
pri
=
ult
;
//si es la 1 pasada pongo en pri el valor del primer nodo
printf
(
"ingrese nombre: "
)
;
gets
(
x.
nombre
)
;
}
if
(
colavacia
(
pri
)
==
1
)
{
printf
(
"No se ingresaron registros"
)
;
getch
(
)
;
}
else
mostrar
(
pri
)
;
}
struct
nodo
*
nuevonodo
(
)
{
struct
nodo
*
p
;
p
=
(
struct
nodo
*
)
malloc
(
sizeof
(
struc nodo
)
)
;
if
(
p
==
NULL
)
{
printf
(
"memoria ram llena"
)
;
getch
(
)
;
exit
(
0
)
;
}
return
p
;
}
struct
nodo
*
creacola
(
struct
nodo
*
ult
,
struct
agenda x
)
{
struct
nodo
*
p
;
p
=
nuevonodo
(
)
;
(
*
P
)
.
dato
=
x
;
(
*
p
)
.
proximo
=
NULL
;
if
(
ult
!=
NULL
)
(
*
ult
)
.
proximo
=
p
;
//si hay nodo anterior en prox pongo la direccion del nodo actual
return
p
;
}
int
colavacia
(
struct
nodo
*
pri
)
{
if
(
pri
==
NULL
)
return
1
;
else
return
0
;
}
void
mostrar
(
struct
nodo
*
pri
)
{
struct
nodo
*
aux
;
while
(
pri
!=
NULL
)
{
printf
(
"Nombre: %s - telefono: %s - Mail: %s n"
,
pri
->
dato.
nombre
,
pri
->
dato.
telefono
,
pri
->
dato.
mail
)
;
aux
=
pri
;
pri
=
(
*
pri
)
.
proximo
;
free
(
aux
)
;
}
getch
(
)
;
}
me tira un error en
Código: C
int
colavacia
(
struct
nodo
*
)
alguien me puede ayudar :p
saludos,
ben
Tweet
Leber
Miembro activo
Mensajes: 65
Re: estrucutras, punteros
«
Respuesta #1 en:
Jueves 7 de Abril de 2011, 23:52 »
0
En verdad, mi compilador casi se rompe. Tu código contenía bastantes erratas de sintaxis.
Faltaban ";" , habías puesto
mail
en lugar de
email
. una
P
cuando tenia que ser
p
, el prototipo de la función
nuevonodo
estaba incompleta.
Despues de corregir eso, tu código queda así:
A mi me lanza un error porque no tengo la libreria
conio
(que no es estandart):
Código: C
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
struct
agenda
{
char
nombre
[
50
]
;
char
telefono
[
25
]
;
char
email
[
50
]
;
}
;
struct
nodo
{
struct
agenda dato
;
struct
nodo
*
proximo
;
}
;
struct
nodo
*
nuevonodo
(
void
)
;
int
colavacia
(
struct
nodo
*
)
;
struct
nodo
*
creacola
(
struct
nodo
*,
struct
agenda
)
;
void
mostrar
(
struct
nodo
*
)
;
void
main
(
)
{
struct
nodo
*
pri
=
NULL
,
*
ult
=
NULL
;
struct
agenda x
;
printf
(
"ingrese nombre: "
)
;
gets
(
x.
nombre
)
;
while
(
strcmp
(
x.
nombre
,
"fin"
)
)
{
printf
(
"ingrese telefono: "
)
;
gets
(
x.
telefono
)
;
printf
(
"ingrese mail: "
)
;
gets
(
x.
email
)
;
ult
=
creacola
(
ult
,
x
)
;
if
(
pri
==
NULL
)
pri
=
ult
;
//si es la 1 pasada pongo en pri el valor del primer nodo
printf
(
"ingrese nombre: "
)
;
gets
(
x.
nombre
)
;
}
if
(
colavacia
(
pri
)
==
1
)
{
printf
(
"No se ingresaron registros"
)
;
getch
(
)
;
}
else
mostrar
(
pri
)
;
}
struct
nodo
*
nuevonodo
(
)
{
struct
nodo
*
p
;
p
=
(
struct
nodo
*
)
malloc
(
sizeof
(
struct
nodo
)
)
;
if
(
p
==
NULL
)
{
printf
(
"memoria ram llena"
)
;
getch
(
)
;
exit
(
0
)
;
}
return
p
;
}
struct
nodo
*
creacola
(
struct
nodo
*
ult
,
struct
agenda x
)
{
struct
nodo
*
p
;
p
=
nuevonodo
(
)
;
(
*
p
)
.
dato
=
x
;
(
*
p
)
.
proximo
=
NULL
;
if
(
ult
!=
NULL
)
(
*
ult
)
.
proximo
=
p
;
//si hay nodo anterior en prox pongo la direccion del nodo actual
return
p
;
}
int
colavacia
(
struct
nodo
*
pri
)
{
if
(
pri
==
NULL
)
return
1
;
else
return
0
;
}
void
mostrar
(
struct
nodo
*
pri
)
{
struct
nodo
*
aux
;
while
(
pri
!=
NULL
)
{
printf
(
"Nombre: %s - telefono: %s - Mail: %s n"
,
pri
->
dato.
nombre
,
pri
->
dato.
telefono
,
pri
->
dato.
email
)
;
aux
=
pri
;
pri
=
(
*
pri
)
.
proximo
;
free
(
aux
)
;
}
}
bendroide
Nuevo Miembro
Mensajes: 7
Re: estrucutras, punteros
«
Respuesta #2 en:
Viernes 8 de Abril de 2011, 00:08 »
0
bine gracias, ahorita solo tengo que comentariar cada linea.
saludos coridales,
bendroide
m0skit0
Miembro de PLATA
Mensajes: 2337
Nacionalidad:
Re: estrucutras, punteros
«
Respuesta #3 en:
Viernes 8 de Abril de 2011, 09:06 »
0
Cita de: "bendroide"
comentariar
Fr33k K0mpu73r
bendroide
Nuevo Miembro
Mensajes: 7
Re: estrucutras, punteros
«
Respuesta #4 en:
Sábado 9 de Abril de 2011, 00:25 »
0
Código: C
#include <stdio.h> //libreria sirve para printf y scanf
#include <stdlib.h> //librera obligatoria para malloc() y el free
#include <string.h> //cadenas
#include <conio.h> //hacer un pause para mostrar datos
struct
agenda
//se declara una estructura
{
/*miembros de la estructura*/
char
nombre
[
50
]
;
char
telefono
[
25
]
;
char
email
[
50
]
;
}
;
/* se delcara una estructura nodo*/
struct
nodo
{
struct
agenda dato
;
//estructura agenda dato
struct
nodo
*
proximo
;
//estructura nodo , defino un puntero
}
;
struct
nodo
*
nuevonodo
(
void
)
;
int
colavacia
(
struct
nodo
*
)
;
struct
nodo
*
creacola
(
struct
nodo
*,
struct
agenda
)
;
void
mostrar
(
struct
nodo
*
)
;
// se declara la funcion mostrar con prototipo de 1estructura y 1puntero
void
main
(
)
//funcion principal
{
struct
nodo
*
pri
=
NULL
,
*
ult
=
NULL
;
struct
agenda x
;
printf
(
"ingrese nombre: "
)
;
gets
(
x.
nombre
)
;
while
(
strcmp
(
x.
nombre
,
"fin"
)
)
{
printf
(
"ingrese telefono: "
)
;
gets
(
x.
telefono
)
;
printf
(
"ingrese mail: "
)
;
gets
(
x.
email
)
;
ult
=
creacola
(
ult
,
x
)
;
if
(
pri
==
NULL
)
pri
=
ult
;
//si es la 1 pasada pongo en pri el valor del primer nodo
printf
(
"ingrese nombre: "
)
;
gets
(
x.
nombre
)
;
}
if
(
colavacia
(
pri
)
==
1
)
{
printf
(
"No se ingresaron registros"
)
;
getch
(
)
;
}
else
mostrar
(
pri
)
;
}
struct
nodo
*
nuevonodo
(
)
{
struct
nodo
*
p
;
p
=
(
struct
nodo
*
)
malloc
(
sizeof
(
struct
nodo
)
)
;
if
(
p
==
NULL
)
{
printf
(
"memoria ram llena"
)
;
getch
(
)
;
exit
(
0
)
;
}
return
p
;
}
struct
nodo
*
creacola
(
struct
nodo
*
ult
,
struct
agenda x
)
{
struct
nodo
*
p
;
p
=
nuevonodo
(
)
;
(
*
p
)
.
dato
=
x
;
(
*
p
)
.
proximo
=
NULL
;
if
(
ult
!=
NULL
)
(
*
ult
)
.
proximo
=
p
;
//si hay nodo anterior en prox pongo la direccion del nodo actual
return
p
;
}
int
colavacia
(
struct
nodo
*
pri
)
//funcion entera con parametros de estructura y puntero
{
if
(
pri
==
NULL
)
return
1
;
//si pri es nulo retorna 1
else
//caso contrario
return
0
;
//retorna 0 y finaliza el programa
}
void
mostrar
(
struct
nodo
*
pri
)
//funcion declarada para mostrar datos
//tiene como parametros strcut nodo y un puntero a *pri
{
struct
nodo
*
aux
;
//estructura dentro de una funcion nodo con un puntero a *aux
while
(
pri
!=
NULL
)
//mientras se niega pri! es igual a un valor nulo, no apunta a ningun lado
{
/* imprime en pantalla telefono, mail, y imprime , y accede a cada mienbro de la estructura
struct agenda dato; y las imprime*/
printf
(
"Nombre: %s - telefono: %s - Mail: %s n"
,
pri
->
dato.
nombre
,
pri
->
dato.
telefono
,
pri
->
dato.
email
)
;
aux
=
pri
;
//las dos variables son iguales
pri
=
(
*
pri
)
.
proximo
;
//pri se igual a su apuntador
free
(
aux
)
;
}
}
hola amigos, no se si las lineas comentariadas esta bien o tengo que modificarla y en donde...
saludos,
bendroide
ProfesorX
Moderador
Mensajes: 796
Nacionalidad:
Re: estrucutras, punteros
«
Respuesta #5 en:
Sábado 9 de Abril de 2011, 02:04 »
0
Bueno, en mi opinion esta bien, solo añadiria que en mi caso, perfiero comentar una linea antes, a comentar en la misma linea,como en el siguiente ejemplo:
Código: C++
//se declara una estructura
struct
agenda
pero bueno, es preferencia personal, en todo caso, es valido como haces los comentarios.
P.D: Por si no lo notaste, tal como te lo hizo notar m0skit0, no se dice "comentariar" ni "comentariadas", el verbo correcto es "comentar", y se conjuga "comentadas".
La palabra "Comentario" no es verbo, asi que escribir "comentario" esta correcto
Saludos
NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================
bendroide
Nuevo Miembro
Mensajes: 7
Re: estrucutras, punteros
«
Respuesta #6 en:
Sábado 9 de Abril de 2011, 02:59 »
0
ok, gracias por la correccion, pero me referia a la parte esta
Código: C
struct
nodo
*
pri
=
NULL
,
*
ult
=
NULL
;
struct
agenda x
;
printf
(
"ingrese nombre: "
)
;
gets
(
x.
nombre
)
;
while
(
strcmp
(
x.
nombre
,
"fin"
)
)
{
printf
(
"ingrese telefono: "
)
;
gets
(
x.
telefono
)
;
printf
(
"ingrese mail: "
)
;
gets
(
x.
email
)
;
ult
=
creacola
(
ult
,
x
)
;
if
(
pri
==
NULL
)
pri
=
ult
;
//si es la 1 pasada pongo en pri el valor del primer nodo
printf
(
"ingrese nombre: "
)
;
gets
(
x.
nombre
)
;
}
if
(
colavacia
(
pri
)
==
1
)
{
printf
(
"No se ingresaron registros"
)
;
getch
(
)
;
}
else
mostrar
(
pri
)
;
}
struct
nodo
*
nuevonodo
(
)
{
struct
nodo
*
p
;
p
=
(
struct
nodo
*
)
malloc
(
sizeof
(
struct
nodo
)
)
;
if
(
p
==
NULL
)
{
printf
(
"memoria ram llena"
)
;
getch
(
)
;
exit
(
0
)
;
}
return
p
;
}
S41UD0X,
bendroide
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
estrucutras, punteros