Sábado 14 de Diciembre de 2024, 21:51
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
) »
duda principiante!!!
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: duda principiante!!! (Leído 1889 veces)
cobain21
Nuevo Miembro
Mensajes: 4
duda principiante!!!
«
en:
Martes 8 de Diciembre de 2009, 13:48 »
0
Bueno dias, me gustaría tener una solución para lo que abajo les describo...siempre me da problemas. Desde ya muchas gracias....Diego.
void IngresoMaquillaje (Maquillaje &maqui)//carga un maquillaje en ingresos
{
printf ("Ingrese la fecha:");
scan (maqui.fecha);
getchar();
printf ("nIngrese un comentario:");
scan (maqui.comentario);
getchar();
printf ("nIngrese el nombre del cliente:");
scan (maqui.cliente);
getchar();
printf ("nIngrese el precio:");
scanf ("%d", &maqui.precio);
getchar();
getchar();
system ("pause");
}
El problema es que en la ultima linea el "intro" me lo lee como un String y no me sale ingrese un precio sino que en precio me guarda la tecla "intro", se que tiene que ser facil de arreglar pero no me he podido dar cuenta...
Agradesco su colaboración....
Tweet
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: duda principiante!!!
«
Respuesta #1 en:
Martes 8 de Diciembre de 2009, 18:44 »
0
Usa fgets (con stdin) para obtener las cadenas, en el caso del numero despues aplicale un sscanf a esa cadena para obtenerlo.
Ejemplo:
Código: C++
printf
(
"nIngrese un comentario:"
)
;
fgets
(
maqui.
comentario
,
sizeof
(
maqui.
comentario
)
,
stdin
)
;
printf
(
"nIngrese el precio:"
)
;
char
line
[
80
]
;
fgets
(
line,
sizeof
(
line
)
,
stdin
)
;
sscanf
(
line,
"%d"
,
&
maqui.
precio
)
;
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
cobain21
Nuevo Miembro
Mensajes: 4
Re: duda principiante!!!
«
Respuesta #2 en:
Martes 8 de Diciembre de 2009, 19:20 »
0
Eternal Idol: lo hice a tu manera y me compilo bien pero al momento de ejecutar el programa me tiraba error.
Lo hice de esta manera y me funcionó:
Código: C++
void
IngresoMaquillaje
(
Maquillaje
&
maqui
)
//carga un maquillaje en ingresos
{
printf
(
"Ingrese la fecha:"
)
;
scan
(
maqui.
fecha
)
;
getchar
(
)
;
fflush
(
stdin
)
;
printf
(
"nIngrese un comentario:"
)
;
fflush
(
stdin
)
;
scan
(
maqui.
comentario
)
;
printf
(
"nIngrese el nombre del cliente:"
)
;
fflush
(
stdin
)
;
scan
(
maqui.
cliente
)
;
printf
(
"nIngrese el precio:"
)
;
fflush
(
stdin
)
;
scanf
(
"%d"
,
&
maqui.
precio
)
;
Cualquier aclaracion o sugerencia viene bien!!!!
Muchas gracias por tu ayuda.
Saludos
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: duda principiante!!!
«
Respuesta #3 en:
Martes 8 de Diciembre de 2009, 20:18 »
0
fflush no esta definido para flujos de entrada (como stdin) asi que no deberias usarlo. ¿Donde te daba error exactamente?
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
cobain21
Nuevo Miembro
Mensajes: 4
Re: duda principiante!!!
«
Respuesta #4 en:
Martes 8 de Diciembre de 2009, 22:43 »
0
Haber se me podes corregir...ahi me compila bien pero se me montan las salidas :Ingresar cliente, etc y despues me dice que el programa debe cerrarse porque se produjo un error. Te escribo el codigo.
Código: C++
void
IngresoMaquillaje
(
Maquillaje
&
maqui
)
//carga un maquillaje en ingresos
{
printf
(
"Ingrese la fecha:"
)
;
fgets
(
maqui.
fecha
,
sizeof
(
maqui.
fecha
)
,
stdin
)
;
getchar
(
)
;
printf
(
"nIngrese un comentario:"
)
;
fgets
(
maqui.
comentario
,
sizeof
(
maqui.
comentario
)
,
stdin
)
;
printf
(
"nIngrese un cliente:"
)
;
fgets
(
maqui.
cliente
,
sizeof
(
maqui.
cliente
)
,
stdin
)
;
printf
(
"nIngrese el precio:"
)
;
char
line
[
80
]
;
fgets
(
line,
sizeof
(
line
)
,
stdin
)
;
sscanf
(
line,
"%d"
,
&
maqui.
precio
)
;
}
Gracias
Eternal Idol
Moderador
Mensajes: 4696
Nacionalidad:
Re: duda principiante!!!
«
Respuesta #5 en:
Martes 8 de Diciembre de 2009, 23:37 »
0
¿Que compilador usas? Esto me funciona:
Código: C++
#include <stdio.h>
typedef
struct
_Maquillaje
{
char
fecha
[
16
]
;
char
comentario
[
16
]
;
char
cliente
[
16
]
;
int
precio
;
}
Maquillaje
;
void
IngresoMaquillaje
(
Maquillaje
&
maqui
)
//carga un maquillaje en ingresos
{
printf
(
"Ingrese la fecha:"
)
;
fgets
(
maqui.
fecha
,
sizeof
(
maqui.
fecha
)
,
stdin
)
;
printf
(
"nIngrese un comentario:"
)
;
fgets
(
maqui.
comentario
,
sizeof
(
maqui.
comentario
)
,
stdin
)
;
printf
(
"nIngrese un cliente:"
)
;
fgets
(
maqui.
cliente
,
sizeof
(
maqui.
cliente
)
,
stdin
)
;
printf
(
"nIngrese el precio:"
)
;
char
line
[
80
]
;
fgets
(
line,
sizeof
(
line
)
,
stdin
)
;
sscanf
(
line,
"%d"
,
&
maqui.
precio
)
;
}
void
main
(
)
{
Maquillaje m
;
IngresoMaquillaje
(
m
)
;
printf
(
"rn"
)
;
printf
(
"fecha %s comentario %s cliente %s precio %drn"
, m.
fecha
, m.
comentario
, m.
cliente
, m.
precio
)
;
}
Nacional y Popular
En mi país la bandera de Eva es inmortal.
Queremos una Argentina socialmente justa, económicamente libre y políticamente soberana.
¡Perón cumple, Evita dignifica!
La mano invisible del mercado me robo la billetera.
player_
Miembro activo
Mensajes: 51
Re: duda principiante!!!
«
Respuesta #6 en:
Martes 8 de Diciembre de 2009, 23:49 »
0
Y por qué el getchar() del primer código no lo sustituyes por un
while(getchar() != 'n');
?
cobain21
Nuevo Miembro
Mensajes: 4
Re: duda principiante!!!
«
Respuesta #7 en:
Miércoles 9 de Diciembre de 2009, 01:00 »
0
Uso el code blocks.
Citar
Y por qué el getchar() del primer código no lo sustituyes por un while(getchar() != 'n');?
probe de esta forma, me compila bien pero se me cuelga tambien cuando ingreso la segunda linea.
yo lo tengo asi en modulos diferentes:
Código: C++
typedef
struct
{
String fecha
;
String comentario
;
String cliente
;
int
precio
;
}
Maquillaje
;
el "String" lo tengo hecho en otro modulo y es para que me lea he imprima las cadenas de texto, no creo que haga falta poner el codigo del String para que lo vean. El scan guarda y el print imprime.
Código: C++
void
IngresoMaquillaje
(
Maquillaje
&
maqui
)
//carga un maquillaje en ingresos
{
printf
(
"Ingrese la fecha:"
)
;
fgets
(
maqui.
fecha
,
sizeof
(
maqui.
fecha
)
,
stdin
)
;
while
(
getchar
(
)
!
=
'n'
)
;
printf
(
"nIngrese un comentario:"
)
;
fgets
(
maqui.
comentario
,
sizeof
(
maqui.
comentario
)
,
stdin
)
;
printf
(
"nIngrese un cliente:"
)
;
fgets
(
maqui.
cliente
,
sizeof
(
maqui.
cliente
)
,
stdin
)
;
printf
(
"nIngrese el precio:"
)
;
char
line
[
80
]
;
fgets
(
line,
sizeof
(
line
)
,
stdin
)
;
sscanf
(
line,
"%d"
,
&
maqui.
precio
)
;
}
Asi fue de la unica manera que me funciono: pero he leido que no es recomendado su uso:
Código: C++
void
IngresoDepilacion
(
Depilacion
&
depi
)
//carga un maquillaje en ingresos
{
printf
(
"Ingrese la fecha:"
)
;
scan
(
maqui.
fecha
)
;
getchar
(
)
;
fflush
(
stdin
)
;
//sirve para limpiar el buffer del teclado y que no me quede el "enter" guardado
printf
(
"nIngrese un comentario:"
)
;
fflush
(
stdin
)
;
scan
(
maqui.
comentario
)
;
printf
(
"nIngrese el nombre del cliente:"
)
;
fflush
(
stdin
)
;
scan
(
maqui.
cliente
)
;
printf
(
"nIngrese el precio:"
)
;
fflush
(
stdin
)
;
scanf
(
"%d"
,
&
maqui.
precio
)
;
}
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
C/C++
(Moderador:
Eternal Idol
) »
duda principiante!!!