Autor
|
Tema: Ayuda nuevamente con este simple codigo (Leído 4,032 veces)
|
spiderboot
Desconectado
Mensajes: 12
|
Se supone que el codigo debe resolver la siguiente cuestion se ingresan cierta cantidad de alumnos aprobados y cierta cantidad de alumnos reprobados, el programa debe arrojar el numero total de alumnos, el porcentaje de alumnos aprobados y el porcentaje de alumnos reprobados: para la cual elabore el siguiente codigo, pero no me realiza las operaciones, probe con estas cantidades 15 aprobados y 35 reprobados y solo funciona cuando me calcula el total de alumno (50), en los procentajes me arroja cero, espero su ayuda y gracias de antemano #include <cstdlib> #include <iostream>
using namespace std;
int main(int argc, char *argv[]) { int alaprobados; int alreprobados; int total; int paprobados; int preprobados; printf ("Ingrese el numero de alumnos Aprobados \t\n"); scanf ("%d", &alaprobados); printf ("Ingrese el numero de alumnos reprobados \t\n"); scanf ("%d", & alreprobados); total=alaprobados+alreprobados; printf ("El numero total de alumnos es %d \t\n", total); paprobados=alaprobados/total*100; printf ("El porcentaje de alumnos aprobados es %d Porciento \t\n", paprobados); preprobados=alreprobados/total*100; printf ("El porcentaje de alumnos NO aprobados es %d Porciento\t\n", preprobados); system("PAUSE"); return EXIT_SUCCESS; } he intentado cambiar las ultimas 2 variables (paprobados y preprobados) a tipo flotante para ver si es por alla el problema pero el resultado es el mismo 0.0000
|
|
« Última modificación: 12 Mayo 2014, 21:44 pm por spiderboot »
|
En línea
|
|
|
|
Blaster
Desconectado
Mensajes: 190
|
Para sacar el porcentaje de aprobados y reprobados del total, la operación la debes cambiar a esta paprobados = (alaprobados*100)/total; preprobados = (alreprobados*100)/total;
Utiliza el tipo float para obtener resultados mas precisos Saludos.
|
|
« Última modificación: 12 Mayo 2014, 22:29 pm por Blaster »
|
En línea
|
|
|
|
Caster
|
¿Y por qué el resultado es 0 haciendo las operaciones sin paréntesis?
|
|
|
En línea
|
|
|
|
Blaster
Desconectado
Mensajes: 190
|
¿Y por qué el resultado es 0 haciendo las operaciones sin paréntesis?
En el codigo de Spiderboot al dividir el número de aprobados por el total, el resultado siempre es cero ya que en C siempre se trunca cualquier valor real donde interviene el tipo int pasandolo al entero mas cercano y luego al multiplicarlo por cien da el cero que mencionas Saludos
|
|
|
En línea
|
|
|
|
Caster
|
En el codigo de Spiderboot al dividir el número de aprobados por el total, el resultado siempre es cero ya que en C siempre se trunca cualquier valor real donde interviene el tipo int pasandolo al entero mas cercano y luego al multiplicarlo por cien da el cero que mencionas
Saludos
Al dividir 15/35 da 0.4... por lo tanto lo redondea a 0 y después al multiplicarlo por 100 sigue dando cero, ¿no?
|
|
|
En línea
|
|
|
|
Blaster
Desconectado
Mensajes: 190
|
Al dividir 15/35 da 0.4... por lo tanto lo redondea a 0 y después al multiplicarlo por 100 sigue dando cero, ¿no?
Correcto, como ya sabes todo número multiplicado por cero da cero Saludos
|
|
|
En línea
|
|
|
|
Caster
|
Pero sin embargo si introduces los números 15 y 1, el total es 16 por lo tanto al dividir 15/16 en los alumnos aprobados el resultado es 0.9... lo que redondea a 1 y multiplicado por 100 es 100 no 0 y el resultado que da el programa es 0.
Un saludo
|
|
|
En línea
|
|
|
|
rir3760
Desconectado
Mensajes: 1.639
|
sin embargo si introduces los números 15 y 1, el total es 16 por lo tanto al dividir 15/16 en los alumnos aprobados el resultado es 0.9... lo que redondea a 1 No, como ya te comento Blaster en la división entera la parte decimal se descarta, el resultado de 15 / 16 es 0. Un saludo
|
|
|
En línea
|
C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly. -- Kernighan & Ritchie, The C programming language
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
Pero sin embargo si introduces los números 15 y 1, el total es 16 por lo tanto al dividir 15/16 en los alumnos aprobados el resultado es 0.9... lo que redondea a 1 y multiplicado por 100 es 100 no 0 y el resultado que da el programa es 0.
No se hace un redondeo sino un truncamiento, vamos le quita los decimales y se queda con la parte entera.¡¡¡¡ Saluditos! ..... !!!!
|
|
|
En línea
|
|
|
|
spiderboot
Desconectado
Mensajes: 12
|
gracia compañero mil gracias, copie y pegue el codigo que me proporcionaron y resulto, aunque creo que ya lo habia puesto asi, pero no habia funcionado, lo copie y pegue y se soluciono, gracias por su tiempo y conocimiento
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
ayundeme con este simple codigo
Programación Visual Basic
|
fraktal
|
3
|
1,958
|
13 Octubre 2006, 16:35 pm
por fraktal
|
|
|
Este codigo en C# no funciona (es simple)
.NET (C#, VB.NET, ASP)
|
& eDu &
|
1
|
2,757
|
22 Junio 2008, 23:08 pm
por MANULOMM
|
|
|
Ayuda con este simple codigo !!
PHP
|
TrashAmbishion
|
7
|
3,612
|
7 Mayo 2013, 02:42 am
por #!drvy
|
|
|
No funciona este simple codigo
Programación Visual Basic
|
luis456
|
6
|
5,429
|
21 Septiembre 2013, 08:50 am
por luis456
|
|
|
buenas alguna ayuda de como empezar con este ejercicio ? con codigo simple
Programación General
|
codigosharp
|
1
|
3,605
|
22 Junio 2022, 23:35 pm
por [JMS]
|
|