Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Problema sencillo de C++

Estas en el tema de Problema sencillo de C++ en el foro de C/C++ en Foros del Web. Hola amigos tengo un problema con C++. El caso es que yo hice un codigo donde hay tres notas por cada alumno (son 10 alumnos), ...
  #1 (permalink)  
Antiguo 23/09/2013, 06:15
 
Fecha de Ingreso: enero-2012
Mensajes: 111
Antigüedad: 12 años, 9 meses
Puntos: 6
Problema sencillo de C++

Hola amigos tengo un problema con C++. El caso es que yo hice un codigo donde hay tres notas por cada alumno (son 10 alumnos), al hacer que saque promedio cada uno no se como hacer que el programa elija al de mejor promedio.

Les dejo el codigo;
Código:
#include <iostream>

using namespace std;

int main ()
{
//variables
double nota1alumno1;
double nota2alumno1;
double nota3alumno1;
double nota1alumno2;
double nota2alumno2;
double nota3alumno2;
double nota1alumno3;
double nota2alumno3;
double nota3alumno3;
double nota1alumno4;
double nota2alumno4;
double nota3alumno4;
double nota1alumno5;
double nota2alumno5;
double nota3alumno5;
double nota1alumno6;
double nota2alumno6;
double nota3alumno6;
double nota1alumno7;
double nota2alumno7;
double nota3alumno7;
double nota1alumno8;
double nota2alumno8;
double nota3alumno8;
double nota1alumno9;
double nota2alumno9;
double nota3alumno9;
double nota1alumno10;
double nota2alumno10;
double nota3alumno10;
double promedio1;
double promedio2;
double promedio3;
double promedio4;
double promedio5;
double promedio6;
double promedio7;
double promedio8;
double promedio9;
double promedio10;
//interaccion con el usuario
cout << "Bienvenidos al asistente de seleccion de mejores alumnos" << endl;
cout << "Ingrese los datos de los mejores 10 alumnos" << endl;
cout << "Notas del primer alumno" << endl;
cin >> nota1alumno1;
cin >> nota2alumno1;
cin >> nota3alumno1;
cout << "Notas del segundo alumno" << endl;
cin >> nota1alumno2;
cin >> nota2alumno2;
cin >> nota3alumno2;
cout << "Notas del tercer alumno" << endl;
cin >> nota1alumno3;
cin >> nota2alumno3;
cin >> nota3alumno3;
cout << "Notas del cuarto alumno" << endl;
cin >> nota1alumno4;
cin >> nota2alumno4;
cin >> nota3alumno4;
cout << "Notas del quinto alumno" << endl;
cin >> nota1alumno5;
cin >> nota2alumno5;
cin >> nota3alumno5;
cout << "Notas del sexto alumno" << endl;
cin >> nota1alumno6;
cin >> nota2alumno6;
cin >> nota3alumno6;
cout << "Notas del septimo alumno" << endl;
cin >> nota1alumno7;
cin >> nota2alumno7;
cin >> nota3alumno7;
cout << "Notas del octavo alumno" << endl;
cin >> nota1alumno8;
cin >> nota2alumno8;
cin >> nota3alumno8;
cout << "Notas del noveno alumno" << endl;
cin >> nota1alumno9;
cin >> nota2alumno9;
cin >> nota3alumno9;
cout << "Notas del decimo alumno" << endl;
cin >> nota1alumno10;
cin >> nota2alumno10;
cin >> nota3alumno10;
cout << "Sacando promedios..." << endl;
//calculo de promedios
promedio1 = nota1alumno1 + nota2alumno1 + nota3alumno1 / 3;
promedio2 = nota1alumno2 + nota2alumno2 + nota3alumno2 / 3;
promedio3 = nota1alumno3 + nota2alumno3 + nota3alumno3 / 3;
promedio4 = nota1alumno4 + nota2alumno4 + nota3alumno4 / 3;
promedio5 = nota1alumno5 + nota2alumno5 + nota3alumno5 / 3;
promedio6 = nota1alumno6 + nota2alumno6 + nota3alumno6 / 3;
promedio7 = nota1alumno7 + nota2alumno7 + nota3alumno7 / 3;
promedio8 = nota1alumno8 + nota2alumno8 + nota3alumno8 / 3;
promedio9 = nota1alumno9 + nota2alumno9 + nota3alumno9 / 3;
promedio10 = nota1alumno10 + nota2alumno10 + nota3alumno10 / 3;
cout << "Listo" << endl;
cout << "------------------------" << endl;
//finalizacion
}
  #2 (permalink)  
Antiguo 23/09/2013, 08:02
 
Fecha de Ingreso: julio-2012
Mensajes: 375
Antigüedad: 12 años, 4 meses
Puntos: 28
Respuesta: Problema sencillo de C++

Mirate arrays, ese código puede simplificarse bastante...
  #3 (permalink)  
Antiguo 23/09/2013, 21:16
 
Fecha de Ingreso: enero-2012
Mensajes: 111
Antigüedad: 12 años, 9 meses
Puntos: 6
Respuesta: Problema sencillo de C++

Si, es que hace mucho no toco el codigo y me olvide por completo de los arrays, le pregunte a mi profesor de matematica y me dice que use do while que vaya comparandolos para ver cual es el mayor.
  #4 (permalink)  
Antiguo 24/09/2013, 13:45
Avatar de guzzano  
Fecha de Ingreso: julio-2010
Ubicación: Isla de Margarita
Mensajes: 162
Antigüedad: 14 años, 3 meses
Puntos: 13
Respuesta: Problema sencillo de C++

El problema está en que la estructura del programa hace tedioso y poco optimizado, más no imposible, ni difícil la comparación, el hecho de tener tantas variables. Como te dijo amchacon es mejor usar un array o en caso de de que no sepas cuantas notas serían usar memoria dinámica.
  #5 (permalink)  
Antiguo 24/09/2013, 15:54
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 10 meses
Puntos: 35
Respuesta: Problema sencillo de C++

Mi solución en C:

Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. struct Alumno {
  5.     int notas[3];
  6.     float promedio;
  7. };
  8.  
  9. struct MejorPromedio {
  10.     int alumno;
  11.     float promedio;
  12. };
  13.  
  14. int main(int argc, char **argv)
  15. {
  16.     struct Alumno alumnos[10];
  17.     struct MejorPromedio mejor_promedio = {-1, -1};
  18.     int i, j;
  19.    
  20.     for (i = 0; i < 10; i++)
  21.     {
  22.         for (j = 0; j < 3; j++)
  23.         {
  24.             printf("[Alumno %d] Nota %d: ", i + 1, j + 1);
  25.             scanf("%d", &(alumnos[i].notas[j]));
  26.         }
  27.         alumnos[i].promedio = (alumnos[i].notas[0] + alumnos[i].notas[1] +
  28.                                alumnos[i].notas[2]) / 3;
  29.     }
  30.    
  31.     for (i = 0; i < 10; i++)
  32.     {
  33.         if (alumnos[i].promedio > mejor_promedio.promedio)
  34.         {
  35.             mejor_promedio.promedio = alumnos[i].promedio;
  36.             mejor_promedio.alumno = i + 1;
  37.         }
  38.     }
  39.    
  40.     if (mejor_promedio.promedio == -1)
  41.         printf("Todos los alumnos tienen el mismo promedio.\n");
  42.     else
  43.         printf("El alumno %d tiene el mejor promedio: %f\n",
  44.                mejor_promedio.alumno, mejor_promedio.promedio);
  45.    
  46.     return 0;
  47. }

  #6 (permalink)  
Antiguo 25/09/2013, 03:31
 
Fecha de Ingreso: enero-2012
Mensajes: 111
Antigüedad: 12 años, 9 meses
Puntos: 6
Respuesta: Problema sencillo de C++

Gracias Carbon por tu ayuda, se que me quisiste ayudar conel codigo pero es un ejercicio de practica y no entiendo nada que pones, esto es nada mas que una practica, por eso uso este codigo tan basico, asi que si me puedes ayudar con codigo basico te agradeceria, ya que estoy recien empezando de vuelta despues de unos meses.
  #7 (permalink)  
Antiguo 26/09/2013, 10:15
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 10 meses
Puntos: 35
Respuesta: Problema sencillo de C++

Bien, entonces podría ser:

Código C++:
Ver original
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int main ()
  6. {
  7. //variables
  8. double nota1alumno1;
  9. double nota2alumno1;
  10. double nota3alumno1;
  11. double nota1alumno2;
  12. double nota2alumno2;
  13. double nota3alumno2;
  14. double nota1alumno3;
  15. double nota2alumno3;
  16. double nota3alumno3;
  17. double nota1alumno4;
  18. double nota2alumno4;
  19. double nota3alumno4;
  20. double nota1alumno5;
  21. double nota2alumno5;
  22. double nota3alumno5;
  23. double nota1alumno6;
  24. double nota2alumno6;
  25. double nota3alumno6;
  26. double nota1alumno7;
  27. double nota2alumno7;
  28. double nota3alumno7;
  29. double nota1alumno8;
  30. double nota2alumno8;
  31. double nota3alumno8;
  32. double nota1alumno9;
  33. double nota2alumno9;
  34. double nota3alumno9;
  35. double nota1alumno10;
  36. double nota2alumno10;
  37. double nota3alumno10;
  38. double promedio1;
  39. double promedio2;
  40. double promedio3;
  41. double promedio4;
  42. double promedio5;
  43. double promedio6;
  44. double promedio7;
  45. double promedio8;
  46. double promedio9;
  47. double promedio10;
  48. //interaccion con el usuario
  49. cout << "Bienvenidos al asistente de seleccion de mejores alumnos" << endl;
  50. cout << "Ingrese los datos de los mejores 10 alumnos" << endl;
  51. cout << "Notas del primer alumno" << endl;
  52. cin >> nota1alumno1;
  53. cin >> nota2alumno1;
  54. cin >> nota3alumno1;
  55. cout << "Notas del segundo alumno" << endl;
  56. cin >> nota1alumno2;
  57. cin >> nota2alumno2;
  58. cin >> nota3alumno2;
  59. cout << "Notas del tercer alumno" << endl;
  60. cin >> nota1alumno3;
  61. cin >> nota2alumno3;
  62. cin >> nota3alumno3;
  63. cout << "Notas del cuarto alumno" << endl;
  64. cin >> nota1alumno4;
  65. cin >> nota2alumno4;
  66. cin >> nota3alumno4;
  67. cout << "Notas del quinto alumno" << endl;
  68. cin >> nota1alumno5;
  69. cin >> nota2alumno5;
  70. cin >> nota3alumno5;
  71. cout << "Notas del sexto alumno" << endl;
  72. cin >> nota1alumno6;
  73. cin >> nota2alumno6;
  74. cin >> nota3alumno6;
  75. cout << "Notas del septimo alumno" << endl;
  76. cin >> nota1alumno7;
  77. cin >> nota2alumno7;
  78. cin >> nota3alumno7;
  79. cout << "Notas del octavo alumno" << endl;
  80. cin >> nota1alumno8;
  81. cin >> nota2alumno8;
  82. cin >> nota3alumno8;
  83. cout << "Notas del noveno alumno" << endl;
  84. cin >> nota1alumno9;
  85. cin >> nota2alumno9;
  86. cin >> nota3alumno9;
  87. cout << "Notas del decimo alumno" << endl;
  88. cin >> nota1alumno10;
  89. cin >> nota2alumno10;
  90. cin >> nota3alumno10;
  91. cout << "Sacando promedios..." << endl;
  92. //calculo de promedios
  93. promedio1 = (nota1alumno1 + nota2alumno1 + nota3alumno1) / 3;
  94. promedio2 = (nota1alumno2 + nota2alumno2 + nota3alumno2) / 3;
  95. promedio3 = (nota1alumno3 + nota2alumno3 + nota3alumno3) / 3;
  96. promedio4 = (nota1alumno4 + nota2alumno4 + nota3alumno4) / 3;
  97. promedio5 = (nota1alumno5 + nota2alumno5 + nota3alumno5) / 3;
  98. promedio6 = (nota1alumno6 + nota2alumno6 + nota3alumno6) / 3;
  99. promedio7 = (nota1alumno7 + nota2alumno7 + nota3alumno7) / 3;
  100. promedio8 = (nota1alumno8 + nota2alumno8 + nota3alumno8) / 3;
  101. promedio9 = (nota1alumno9 + nota2alumno9 + nota3alumno9) / 3;
  102. promedio10 = (nota1alumno10 + nota2alumno10 + nota3alumno10) / 3;
  103.  
  104. // Mejor promedio
  105. int mejor_promedio = -1;
  106. int mejor_alumno = -1;
  107.  
  108. if (promedio1 > mejor_promedio) {
  109.     mejor_promedio = promedio1;
  110.     mejor_alumno = 1;
  111. }
  112. if (promedio2 > mejor_promedio) {
  113.     mejor_promedio = promedio2;
  114.     mejor_alumno = 2;
  115. }
  116. if (promedio3 > mejor_promedio) {
  117.     mejor_promedio = promedio3;
  118.     mejor_alumno = 3;
  119. }
  120. if (promedio4 > mejor_promedio) {
  121.     mejor_promedio = promedio4;
  122.     mejor_alumno = 4;
  123. }
  124. if (promedio5 > mejor_promedio) {
  125.     mejor_promedio = promedio5;
  126.     mejor_alumno = 5;
  127. }
  128. if (promedio6 > mejor_promedio) {
  129.     mejor_promedio = promedio6;
  130.     mejor_alumno = 6;
  131. }
  132. if (promedio7 > mejor_promedio) {
  133.     mejor_promedio = promedio7;
  134.     mejor_alumno = 7;
  135. }
  136. if (promedio8 > mejor_promedio) {
  137.     mejor_promedio = promedio8;
  138.     mejor_alumno = 8;
  139. }
  140. if (promedio9 > mejor_promedio) {
  141.     mejor_promedio = promedio9;
  142.     mejor_alumno = 9;
  143. }
  144. if (promedio10 > mejor_promedio) {
  145.     mejor_promedio = promedio10;
  146.     mejor_alumno = 10;
  147. }
  148.  
  149. cout << "El mejor promedio es " << mejor_promedio << " para el alumno numero " << mejor_alumno << endl;
  150.  
  151. cout << "Listo" << endl;
  152. cout << "------------------------" << endl;
  153. //finalizacion
  154. }

Recuerda poner paréntesis ya que el signo + tiene mayor prioridad que el /.

Espero que te sirva.

  #8 (permalink)  
Antiguo 28/09/2013, 21:54
 
Fecha de Ingreso: enero-2012
Mensajes: 111
Antigüedad: 12 años, 9 meses
Puntos: 6
Respuesta: Problema sencillo de C++

Gracias, tengo un problema cuando es dividir, no divide bien :/
  #9 (permalink)  
Antiguo 29/09/2013, 10:48
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 10 meses
Puntos: 35
Respuesta: Problema sencillo de C++

Pusiste los paréntesis?
  #10 (permalink)  
Antiguo 30/09/2013, 07:14
 
Fecha de Ingreso: enero-2012
Mensajes: 111
Antigüedad: 12 años, 9 meses
Puntos: 6
Respuesta: Problema sencillo de C++

No, LOL, soy bueno con las matematicas, como me pude confundir, ehmm.. gracias, marco el tema como solucionado

Etiquetas: int, programa, sencillo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 05:43.