elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Como proteger una cartera - billetera de Bitcoin


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda nuevamente con este simple codigo
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda nuevamente con este simple codigo  (Leído 4,032 veces)
spiderboot

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Ayuda nuevamente con este simple codigo
« en: 12 Mayo 2014, 21:33 pm »

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
Código:
#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 Desconectado

Mensajes: 190


Ver Perfil
Re: Ayuda nuevamente con este simple codigo
« Respuesta #1 en: 12 Mayo 2014, 22:22 pm »

Para sacar el porcentaje de aprobados y reprobados del total, la operación la debes cambiar a esta

Código
  1. paprobados = (alaprobados*100)/total;
  2. 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


Desconectado Desconectado

Mensajes: 786


Ver Perfil WWW
Re: Ayuda nuevamente con este simple codigo
« Respuesta #2 en: 12 Mayo 2014, 22:58 pm »

¿Y por qué el resultado es 0 haciendo las operaciones sin paréntesis?
En línea

Blaster

Desconectado Desconectado

Mensajes: 190


Ver Perfil
Re: Ayuda nuevamente con este simple codigo
« Respuesta #3 en: 12 Mayo 2014, 23:38 pm »

¿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


Desconectado Desconectado

Mensajes: 786


Ver Perfil WWW
Re: Ayuda nuevamente con este simple codigo
« Respuesta #4 en: 12 Mayo 2014, 23:41 pm »

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 Desconectado

Mensajes: 190


Ver Perfil
Re: Ayuda nuevamente con este simple codigo
« Respuesta #5 en: 12 Mayo 2014, 23:44 pm »

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


Desconectado Desconectado

Mensajes: 786


Ver Perfil WWW
Re: Ayuda nuevamente con este simple codigo
« Respuesta #6 en: 12 Mayo 2014, 23:49 pm »

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 Desconectado

Mensajes: 1.639


Ver Perfil
Re: Ayuda nuevamente con este simple codigo
« Respuesta #7 en: 13 Mayo 2014, 03:29 am »

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 Desconectado

Mensajes: 1.314


Ver Perfil
Re: Ayuda nuevamente con este simple codigo
« Respuesta #8 en: 13 Mayo 2014, 15:35 pm »

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 Desconectado

Mensajes: 12


Ver Perfil
Re: Ayuda nuevamente con este simple codigo
« Respuesta #9 en: 13 Mayo 2014, 15:39 pm »

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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayundeme con este simple codigo
Programación Visual Basic
fraktal 3 1,958 Último mensaje 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 Último mensaje 22 Junio 2008, 23:08 pm
por MANULOMM
Ayuda con este simple codigo !!
PHP
TrashAmbishion 7 3,612 Último mensaje 7 Mayo 2013, 02:42 am
por #!drvy
No funciona este simple codigo
Programación Visual Basic
luis456 6 5,429 Último mensaje 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 Último mensaje 22 Junio 2022, 23:35 pm
por [JMS]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines