| Ver tema anterior :: Ver siguiente tema |
| Autor |
Mensaje |
clara
Registrado: 18 Mar 2012 Mensajes: 2
|
Publicado: 18/03/2012 12:08 pm |
|
| Título: como termino este programa basico de c++ esta infinito |
|
esta infinito ayuda para corregirlo gracias
En una universidad se desea obtener alguna estadística de sus estudiantes. Por cada estudiante se tiene la siguiente información: Código. Edad. Sexo (1. Masculino, 2. Femenino).
Carrera (1. Ing. Industrial, 2. Ing. Eléctrica, 3. Ing. Mecánica, 4. Ing. Electrónica, 5. Ing. de sistemas, 19. Tecnología en sistemas).
Elabore un programa que calcule e imprima: Número de estudiantes que hay en cada carrera. Promedio de edad de los estudiantes. Porcentaje de hombres. Porcentaje de mujeres que estudian ingeniería industrial.
#include <conio.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
int main(){
int n;
int edad,sexo,carrera,conth=0,contm=0,cont1=0,cont2=0,cont3=0,cont4=0,cont5=0,cont6=0,acum=0;
char cod[8];
float porch;
cout<<"digite n: ";
cin>>n;
int c=1;
while(c<=n){
cout<<"digite codigo: ";
cin>>cod;
cout<<"digite edad: ";
cin>>edad;
cout<<"Sexo(1.masculino,2.femenino): ";
cin>>sexo;
if(sexo=1){
conth=conth+1;
}else{
contm=contm+1;
}
cout<<"carrera(1.ing industrial,2.ing electrica,3.ing mecanica,4.ing electronica,5.ing de sistemas,6.tecnologia en sistemas): ";
cin>>carrera;
if(carrera=1){
cont1=cont1+1;
}else if(carrera=2){
cont2=cont2+1;
}
else if (carrera=3){
cont3=cont3+1;
}
else if (carrera=4){
cont4=cont4+1;
}
else if(carrera=5){
cont5=cont5+1;
}
else if(carrera=6){
cont6=cont6+1;
}
acum=(acum+edad)/n;
porch=(conth*100)/n;
}
cout <<"cantidad de estudiantes en ing industrial: " << cont1<<std::endl;
cout <<"cantidad de estudiantes en ing electrica: " << cont2<<std::endl;
cout <<"cantidad de estudiantes en ing mecanica: " << cont3<<std::endl;
cout <<"cantidad de estudiantes en ing electronica: " << cont4<<std::endl;
cout <<"cantidad de estudiantes en ing de sistemas: " << cont5<<std::endl;
cout <<"cantidad de estudiantes en tecnologia de sistemas: " << cont6<<std::endl;
cout <<"el porcentaje de hombre es de: " << porch<<std::endl;
system ("pause");
return 0;
} |
|
| Volver arriba |
|
 |
dehm
Registrado: 29 Abr 2011 Mensajes: 71
|
Publicado: 19/03/2012 1:48 am |
|
| Título: |
|
Hola Clara:
El problema lo tienes aquí:
| Código: | cin>>n;
int c=1;
while(c<=n){ ....... |
Entras un valor de n, y si no es menor que 1, el bucle se sigue repitiendo, hasta que no le vuelvas a dar otro valor a n. Pero dentro del bucle no vuelves a pedirlo, por lo que nunca se dará la condición necesaria para que el bucle acabe.
Obviamente, si de primeras introduces un valor de n menor que 1, el programa acabará sin entrar en el bucle.
En definitiva, necesitas darle un valor a n dentro del bucle, para que ese n (que supongo que es el centinela que has puesto) sea menor que 1.
Por otro lado, tienes algunos fallos dentro del programa.
Confundes el operador de asignación = con el de comparación ==, es decir:
lo que estarías haciendo es asignar a sexo el valor 1.
Lo correcto sería:
Ahora estás evaluando si sexo vale 1.
Mas cosas....te sobran librerías que no usas, y en concreto conio.h, aunque también stdlib.h
Y por último, acum y porch no trabajan bien. Tendrás que revisar la forma de averiguar la media y demás.
Pues nada, ánimo y a revisar tu código  _________________ Aprendiendo |
|
| Volver arriba |
|
 |
|
|
|
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
|
|