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

Problema Arreglos

Estas en el tema de Problema Arreglos en el foro de C/C++ en Foros del Web. Saludos, Tengo el siguiente programa, el cual pide una lista de calificaciones, las ordena, y luego muestra la lista, el promedio, las que aprobaron y ...
  #1 (permalink)  
Antiguo 02/06/2011, 16:40
 
Fecha de Ingreso: enero-2011
Mensajes: 33
Antigüedad: 13 años, 3 meses
Puntos: 0
Problema Arreglos

Saludos, Tengo el siguiente programa, el cual pide una lista de calificaciones, las ordena, y luego muestra la lista, el promedio, las que aprobaron y las mayores/menores el promedio


Código C++:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define p printf
  4. #define s scanf
  5.  
  6. void reordenar(int n, int x[]){
  7.      int exp,i,temp;
  8.      
  9.      for(exp=0 ; exp < (n-1) ; exp++){
  10.                for(i=exp+1 ; i<n ; i++)
  11.                if(x[i]>x[exp]){
  12.                                temp=x[exp];
  13.                                x[exp]=x[i];
  14.                                x[i]=temp;}}}
  15.                                
  16. void reordenarmenor(int n, int x[]){
  17.      int exp,i,temp;
  18.      
  19.      for(exp=0 ; exp < (n-1) ; exp++){
  20.                for(i=exp+1 ; i<n ; i++)
  21.                if(x[i]<x[exp]){
  22.                                temp=x[exp];
  23.                                x[exp]=x[i];
  24.                                x[i]=temp;}}}
  25.                                
  26.      main(){
  27.             int x[100], aprobadas[100]={0};
  28.             int mayorp[50]={0};
  29.             int menorp[50]={0};
  30.             int i,suma, n;
  31.             int mayor=300, menor=-300;
  32.             double promedio;
  33.            
  34.             p("Cuantos Alumnos hay en la seccion: \n");
  35.             s("%d", &n);
  36.            
  37.             for(i=0 ; i<n ; i++){
  38.                     p("Introduzca Nota n%d \n", i+1);
  39.                     s("%d", &x[i]);
  40.                     suma+=x[i];}
  41.                     reordenar(n,x);
  42.                     promedio=suma/n;
  43.                     for(i=0 ; i<n ; i++){
  44.                             if((x[i]>=50)|| (x[i]>=10)){
  45.                             aprobadas[i]=x[i];}
  46.                             if(x[i]<mayor){
  47.                             mayor=x[i];}
  48.                             if(x[i]>menor){
  49.                             menor=x[i];}
  50.                             if(x[i] < promedio){
  51.                             menorp[i]=x[i];}
  52.                             if(x[i] > promedio){
  53.                             mayorp[i]=x[i];}}
  54.                     p("\nEl promedio es de: %.2f\n\n", promedio);
  55.                     p("---Notas de mayor a menor---\n");
  56.                     for(i=0 ; i<n ; i++){
  57.                     p("%d\n", x[i]);}
  58.                    
  59.                     p("\nLa mayor nota fue %d\nLa menor nota fue %d\n", menor, mayor);
  60.                     reordenar(n,aprobadas);
  61.                     reordenarmenor(n,menorp);
  62.                     reordenarmenor(n,mayorp);
  63.                     p("---Lista de aprobados---\n");
  64.                     for(i=0 ; i<n ; i++){
  65.                     p("%d\n", aprobadas[i]);}
  66.                     p("\n---Mayores al promedio---\n");
  67.                     for(i=0 ; i<n ; i++){
  68.                             p("%d\n", mayorp[i]);}
  69.                       p("\n---Menores al promedio---\n");
  70.                     for(i=0 ; i<n ; i++){
  71.                             p("%d\n", menorp[i]);}
  72.                    
  73.                     s("%d");
  74.            
  75.            
  76.            
  77.             }
El problema es con el promedio da valores erroneos y x ello no se toman las que son mayores y menores al promedio.
Saludos!
  #2 (permalink)  
Antiguo 02/06/2011, 18:11
 
Fecha de Ingreso: enero-2011
Mensajes: 33
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Problema Arreglos

Ya solucione el problema, Las variables mayorp y menorp Habia que darles 100 indices

Código C:
Ver original
  1. int mayorp[100]={0};
  2. int menorp[100]={0};
  #3 (permalink)  
Antiguo 03/06/2011, 10:57
 
Fecha de Ingreso: abril-2011
Mensajes: 224
Antigüedad: 13 años
Puntos: 8
Respuesta: Problema Arreglos

Sólo un consejo... a la otra haz un poco más legible tu código...

Saludos!

Etiquetas: arreglos
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




La zona horaria es GMT -6. Ahora son las 15:52.