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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ordenamiento burbuja
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ordenamiento burbuja  (Leído 5,412 veces)
jravelar

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Ordenamiento burbuja
« en: 24 Abril 2010, 23:23 pm »

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


En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Ordenamiento burbuja
« Respuesta #1 en: 24 Abril 2010, 23:26 pm »

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"
?


En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: Ordenamiento burbuja
« Respuesta #2 en: 25 Abril 2010, 01:47 am »

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]
En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
jravelar

Desconectado Desconectado

Mensajes: 12


Ver Perfil
Re: Ordenamiento burbuja
« Respuesta #3 en: 25 Abril 2010, 23:35 pm »

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
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #define  M 10
  4. int main(int argc, char *argv[])
  5. {
  6.  int n, i, j, temp;
  7.  float  calif[M], prom=0;
  8.  printf ("Cuantas materias tomaste en el semestre:");
  9.  scanf ("%d", &n);
  10.  for(i=0; i<n; i++){
  11.  {      printf("Dame tu calificacion:");
  12.           scanf("%f", &calif[i]);
  13.           prom=prom + calif[i];
  14.           }
  15.           for (j=i; j<n; j++)
  16.               {if (calif[i]>calif[j])
  17.               temp=calif[i];
  18.               calif[i]=calif[j];
  19.               calif[j]=temp;
  20.               }}
  21.  
  22.  printf("\n\nTu calificacion mas alta es: %i", calif[i]);
  23.  
  24.  calif[i] = prom/n;
  25.  printf("\n\n\nTu promedio es:  %.02f\n\n", calif[n]);
  26.  system("PAUSE");
  27.  return 0;
  28. }

En línea

biribau

Desconectado Desconectado

Mensajes: 181


Ver Perfil
Re: Ordenamiento burbuja
« Respuesta #4 en: 25 Abril 2010, 23:45 pm »

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.
En línea

Tha_Traker

Desconectado Desconectado

Mensajes: 28



Ver Perfil
Re: Ordenamiento burbuja
« Respuesta #5 en: 29 Abril 2010, 17:13 pm »

Yo te recomendarías dos cosas para empezar: tabula y pon comentarios. Porque el código tal cual esta es incomprensible.
Antes de preguntas, por qué no usas el debuger, aprenderas más que si te resuelven otros las dudas simples.
En todo caso como dice biribau no te hace falta ordenar y en este caso no deberías ordenador es totalmente ilógico y sobrecargas el programa para nada.

Lo que tienes que hacer es coger un papel y plantearte el problema. Necesitas saber cual es la nota maxima. Pues como te ha dicho biribau :
Citar
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.


Después de insertar los datos en el vector con el primer for. Haz otro for igual y dentro pregunta si el dato que esta en MAX es mejor que el del vector, si es el caso cambia, sino pues que siga.
NOTA:No hace falta un mínimo para eso, tan solo inicialo con el primer valor del vector.



Una burbuja en speudocódigo

Citar
COMIENZO Burbuja

Entorno:

 p,n,i son enteros
 vector[n] es alfanumerico{vector}
Algoritmo:
 
 para
p<-1 a n-1 hacer {en c seria i<-0}
   para i<-1 a n-1 hacer
     si vector>vector[i+1]
        entonces
        aux<-v
        vector<-vector[i+1]
        vector[i+1]<-aux
    fin_si
   fin_para
 fin_para

FIN_BURBUJA

Esto es la estructura de una burbuja.


Un saludo
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines