Dev - C++ - porque no me da bien el resultado en c++ si corre pero no me da el resultado que kiero

   
Vista:

porque no me da bien el resultado en c++ si corre pero no me da el resultado que kiero

Publicado por christian gutierrez sanchez dolphys05@hotmail.com (3 intervenciones) el 11/11/2014 16:59:15
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<stdio.h>
#include<conio.h>
main()
{
char nombre[95];
int c1,c2,c3;
float p;
printf("escribe el nombre del alumno:\n");
scanf("%c",&nombre);
printf("escribe la calificacion del primer parcial:\n");
scanf("%f",&c1);
printf("escribe la calificacion del segundo parcial:\n");
scanf("%f",&c2);
printf("escribe la calificacion del tercer parcial:\n");
scanf("%f",&c3);
p=(c1+c2+c3)/3;
//if(p>95){
printf("El promedio =es: %f \n",p);
getch();
}


[b]ya lo compile y lo corri pero a la hora que quiero que me de el resultado me mada todo junto y quiero que me de porsepara las calificacion no se donde tenga el erro
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de vangodp

porque no me da bien el resultado en c++ si corre pero no me da el resultado que kiero

Publicado por vangodp (287 intervenciones) el 11/11/2014 18:40:00
estas leyendo un string en el nombre.
prueba cambiar:
scanf("%c",&nombre);

por:
scanf ( "%s", nombre );

Aun asi no te va leer espacios...
Por ejemplo:
Si pones antonio gutierres solo va guardar antonio.
Eso es asi por que scanf solo lee hasta encontrar un espacio, un tabulador o hasta que pulses la teclaenter.

Si necesitas leer mas de un char scanf debe ser asi:
scanf("%c%*c", letra1);
scanf("%c", letra2);

Eso es asi por que enter tambien es una tecla y si en el primer scanf poner 'a' y pulsas enter en el buffer lo tienes " 'a', '\n' ".
a va parar en la primera variable y enter en la segunda y ni te va preguntar en el segundo scanf la letra sino que va pasar directo por el.

scanf posue modificadores que cambian su comportamiento.
por ejemplo el %*c ignora un char. Si hago scanf("%c%*c", letra1); estoy diciendo que lea un char y ignore el segundo y por eso no da error.

ya para leer strings tienes mas opciones. O bien te recomiendo fgts() que lee cadenas con espacios pero no te libra del problema del enter o bien puedes usar scanf de este modo:

scanf ( "%99[^\n]%*c", nombreCompleto );

si tienes un string asi char nombreCompleto[100];

scanf ( "%99[^\n]%*c", nombreCompleto );

Lee hasta 99 caracteres evitando el enter. es lo ideal.

o bien puedes hacer:

scanf ( "%[^\n]s", nombre );

leera todo lo que pongas sin mirar la lonjitud pero evitando el enter.

Creo que con eso ya te puedes apañar XDD
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

porque no me da bien el resultado en c++ si corre pero no me da el resultado que kiero

Publicado por christian (3 intervenciones) el 11/11/2014 18:49:31
hola en el nombre si me sale lo que no me sale es el resultado de los parciales al correrlo me manda que ponga el nombre se lo pongo y al darle enter por automatico solito me avientael promedio sin que yo lo ponga y lo que quiero es poner yo el promedio de cada parcial como le hago o que variable esta mal me podrias decir porfavor
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de vangodp

porque no me da bien el resultado en c++ si corre pero no me da el resultado que kiero

Publicado por vangodp (287 intervenciones) el 11/11/2014 21:54:09
¿como vas estar leyendo correctamente si estas leyendo un char? scanf("%c",&nombre);
Para leer un string debes poner minimo scanf asi: scanf ("%s", nombre);.. y ya te dije que no lee espacios ni tabuladores ni enters.
Ya tu hagas lo que veas mejor... no te puedo decir nada mas, ya que he compilado tu programa haciendo el cambio referido y me funciona perfectamente.
suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

porque no me da bien el resultado en c++ si corre pero no me da el resultado que kiero

Publicado por christian (3 intervenciones) el 12/11/2014 19:36:31
hola si ya lo hice asi como me dijiste y si salio muchas gracias por la ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar