Ordenamiento burbuja

(1/2) > >>

jravelar:
Hola tengo un arreglo en dev c que me pide calificaciones y me entrega el promedio, me han pedido que lo mejore imprimienole además del promedio la calificacion mas alta del alumno, se debe tomar en cuenta que el maximo de calificaciones por semestre es 10; estuve buscando y encontre algo que es ordenamiento burbuja, pero no supe adaptarlo a mi programa. por si alguien me puede ayudar con el codigo a imprimir la calificacion mas alta porfavor!


este es el codigo Citar

#include <stdio.h>
#include <stdlib.h>
#define  M 10
int main(int argc, char *argv[])
{
  int n, i;
  float  calif[M], prom=0;
  printf ("Cuantas materias tomaste en el semestre:");
  scanf ("%d", &n);
  for(i=0; i<n; i++)
  {        printf("Dame tu calificacion:");
           scanf("%f", &calif);
           prom=prom + calif;
           }
  calif = prom/n;
  printf("\nTus calificaciones son:\n");
  for(i=0; i<n; i++)
  printf("\n%.02f", calif );
  printf("\n\n\nTu promedio es:  %.02f\n\n\n\n", calif[n]);
 
  system("PAUSE");   
  return 0;
}


Agradezco de antemano

leogtz:
Pero si no te han pedido implementar una ordenación, ¿por qué quieres usar la burbuja ahí?

Además está mal redactado lo que quieres, vuelvelo a leer, verás que se entiende poco.

¿
"me han pedido que lo mejore imprimienole además del promedio la calificacion mas alta del alumno"
?

Littlehorse:
Tomas un valor como ejemplo y mientras recorres el arreglo -u donde sea que recibas las calificaciones- vas comparando con ese ejemplo, si es mayor reemplazas y si no no. Para cuando termines tendrás la calificación mas alta en donde tenias el ejemplo.

En el caso que ordenes el arreglo, la calificación mas alta estará obviamente en los extremos, dependiendo de como ordenes el arreglo (en forma ascendente o descendente)

Saludos

PD: En el foro hay ejemplos con códigos de lo que quieres hacer, y la etiqueta para los códigos es [code=c]código[/code]

jravelar:
Corrijo
El problema es
1-Pedir numero de materias
2-Obtener promedio
3-Imprimir la calificacion mas alta

Esto es lo que tengo, ya me imprime el promedio; aunque siempre me imprime 0 como si fuera la calificacion mas alta.
Segun yo utilizo el ordenamiento para imprimir la que quede "hasta al final" e imprimirla.
Por si me ayudan otra vez, jeje

Código
#include <stdio.h>
#include <stdlib.h>
#define  M 10
int main(int argc, char *argv[])
{
 int n, i, j, temp;
 float  calif[M], prom=0;
 printf ("Cuantas materias tomaste en el semestre:");
 scanf ("%d", &n);
 for(i=0; i<n; i++){
 {      printf("Dame tu calificacion:");
          scanf("%f", &calif[i]);
          prom=prom + calif[i];
          }
          for (j=i; j<n; j++)
              {if (calif[i]>calif[j])
              temp=calif[i];
              calif[i]=calif[j];
              calif[j]=temp;
              }}
 
 printf("\n\nTu calificacion mas alta es: %i", calif[i]);
 
 calif[i] = prom/n;
 printf("\n\n\nTu promedio es:  %.02f\n\n", calif[n]);
 system("PAUSE");
 return 0;
}

biribau:
1 - te faltan unas llaves en el "ordenamiento"
2 - eso no es la burbuja
3 - ordenacion por insercion es mucho más fácil y natural en la forma en que te vienen los datos(de uno en uno) y que supongo que es lo que pretendías(malamente, porque recorres la parte sin inicializar del array, fíjate)
4 - no te hace falta ordenarlo, es el problema de la k-seleccion cuando k=0, mira sólo tienes que llevar otra variable temporal con el máximo, cada vez que te entreguen un numero mayor actualizas el máximo, ya está, porque si algo es mayor que el máximo es que es el máximo. Problema: necesitas un numero mínimo(para inicializar máximo), esto a veces puede suponer un problema, a veces se coge -infinito o MIN_INT, en tu caso ya sabes cual es el mínimo posible, 0.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente