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

 

 


Tema destacado: Tutorial básico de Quickjs


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


Desconectado Desconectado

Mensajes: 638


Ver Perfil
ordenar reguistros
« en: 15 Enero 2011, 04:14 am »

buenas señores desearia poder termianr este programa necesito una idea de como poder eliminar un arreglo de estructuras  segun mi codigo
Código
  1. #include <cstdlib>
  2. #include <iostream>
  3.  
  4.  
  5. using namespace std;
  6.  
  7. void ingresar( int n ,   struct alumno [] );
  8. void mostrar (int n,struct alumno []);
  9. void burbuja(int    n,struct alumno x [50]);
  10.  
  11. struct alumno{    
  12. char nombre[35];
  13.  char apellido[50];
  14.  int codigo;
  15.  int edad;
  16.  int nota;
  17. };
  18.  
  19. int  main()
  20. {
  21.    int n;
  22.   struct  alumno reg[50];
  23.    cout<<"cuantos alumnos hay en la lista?"<<endl;
  24.    cin>>n;
  25.  
  26.    ingresar ( n, reg);
  27.    mostrar(n,reg);
  28.  
  29.  burbuja(n,reg);
  30.    system("PAUSE");
  31.    return 0;
  32.  
  33. }
  34.  
  35.  
  36. void mostrar( int n ,   struct alumno x [50] ){
  37.     int i;
  38.     cout<<"//***********************************//"<<endl;
  39.     cout<<"//***********************************//"<<endl;
  40.     for( i=0;i<n;i++){
  41.     cout<<"---------------------------------------"<<endl;
  42.            cout<<x[i].nombre<<endl;
  43.             cout<<x[i].apellido<<endl;
  44.             cout<<x[i].edad<<endl;
  45.             cout<<x[i].codigo<<endl;
  46.            cout<<x[i].nota<<endl;
  47.     cout<<"---------------------------------------"<<endl;
  48.             }
  49.     cout<<"//***********************************//"<<endl;
  50.     cout<<"//***********************************//"<<endl;        
  51. }
  52.  
  53. void ingresar(int n,struct alumno x [50]){
  54.     int i;
  55.     cout<<"//***********************************//"<<endl;
  56.     cout<<"//***********************************//"<<endl;
  57.     for( i=0;i<n;i++){
  58.     cout<<"---------------------------------------"<<endl;
  59.          cout<<"ingrese nombre: ";
  60.             cin>>x[i].nombre;
  61.          cout<<"ingrese apellido: ";
  62.            cin>>x[i].apellido;
  63.          cout<<"ingrese edad: ";
  64.             cin>>x[i].edad;
  65.          cout<<"ingrese codigo: ";
  66.             cin>>x[i].codigo;
  67.          cout<<"ingrese nota: ";
  68.             cin>>x[i].nota;
  69.     cout<<"---------------------------------------"<<endl;
  70.             }
  71.     cout<<"//***********************************//"<<endl;
  72.     cout<<"//***********************************//"<<endl;
  73. }
  74.  
  75.  
  76. void burbuja(int n,struct alumno x [50])
  77. {
  78. int temp, i, j,k;
  79. int arreglo[50];
  80.    for(k=0;k<n;k++)
  81.    {
  82.      arreglo[k]=x[k].edad   ;                  
  83.    }              
  84.  
  85. for (i = 0; i < n-1 ; i++)
  86.     {
  87. for (j = i + 1; j < n ; j++)
  88.          {
  89.   if (arreglo[i]> arreglo[j])
  90.                  {
  91. temp =arreglo[i];
  92. arreglo[i] = arreglo[j];
  93. arreglo[j]= temp;
  94.  
  95.  
  96.             }
  97.    }
  98.  }
  99. cout<<"//***********************************//"<<endl;
  100. cout<<"//***********************************//"<<endl;
  101.  for(int q=0;q<n;q++)
  102.  {
  103.  for(int w=0;w<n;w++)
  104.  {
  105.  
  106.   if(arreglo[q]==x[w].edad)
  107.   {cout<<endl;
  108.             cout<<x[w].nombre<<endl;
  109.             cout<<x[w].apellido<<endl;
  110.             cout<<x[w].edad<<endl;
  111.             cout<<x[w].codigo<<endl;
  112.             cout<<x[w].nota<<endl;      
  113.       }                      
  114.       }
  115.    }
  116.  
  117. }    
  118.  
  119.  
  120.  
  121.  
  122.  


« Última modificación: 15 Enero 2011, 05:04 am por mapers » En línea

Khronos14


Desconectado Desconectado

Mensajes: 443


A lie is a lie


Ver Perfil WWW
Re: ordenar reguistros
« Respuesta #1 en: 15 Enero 2011, 13:38 pm »

Hola mapers, estás usando un método de creación de listas un poco enrevesado. Te recomiendo que busques información sobre listas enlazadas o arrays dinámicos. Son 2 métodos bastante sencillos de crear listas, ambos se hacen con punteros.

Aquí te dejo una clase que hice para borrar y añadir strings:
http://foro.elhacker.net/programacion_cc/problema_con_arrays_dinamicos-t315393.0.html;msg1562040#msg1562040

Para tu problema, creo que lo más sencillo sería hacer esto. Por ejemplo: Tienes 12 alumnos en la lista y quieres eliminar el número 6, el algoritmo sería el siguiente. Harías un bucle que moviera el alumno número 7 a la posición del 6, la del 8 al 7, etc.. y al final reducirías el número de alumnos.

Saludos.


En línea

N0body

Desconectado Desconectado

Mensajes: 95


Ver Perfil
Re: ordenar reguistros
« Respuesta #2 en: 15 Enero 2011, 18:32 pm »

Si recién estás empezando con vectores (como puedo notarlo) no te recomiendo meterte ahora en listas enlazadas...
Mejor sigue el consejo del algoritmo sencillo que te describió Khronos14...

Este parece un clásico problema de escuela secundaria...
Algunas consideraciones:
-En tu función burbujas usas variables no declaradas (contadores como w)
-Yo había aprendido que el método burbuja era el que comparaba j con j+1... ahora veo que muchos ponen ésto como método burbuja, me gusta más el otro... es factible hacer más optimizaciones (en la wikipedia está explicado en pseudocódigo como yo digo, pero implementado en C de la manera que tu pones)
-Vos querés ordenar por edades y hacés esto:
Creas un nuevo arreglo de enteros donde copias las edades
Las ordenas
Buscas las edades del arreglo ordenado (en el orden en que aparecen) en el vector de estructuras y vas imprimiendo.

Por que no directamente ordenas el vector de estructuras
¿Sabías que podés igualara dos estructuras? Osea, hacer la siguiente asignación...
Código
  1. struct alumno a, b;
  2. //Acá hago un ingreso
  3. a=b;
  4.  
Así compararías x[ i].edad y x[j].edad e intercambiar x[ i] y x[j]...

Porque sino luego tienes que hacer la búsqueda, es un método muy poco óptimo...
Además de los problemas que aquerrea que tengas edades iguales... (en ese caso las mostraría muchas veces)
« Última modificación: 15 Enero 2011, 18:41 pm por N0body » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ordenar musica
Multimedia
wiz 0 1,345 Último mensaje 23 Abril 2006, 00:39 am
por wiz
ORDENAR FLEXGRID
Programación Visual Basic
V_INT_Y_2 0 1,327 Último mensaje 11 Mayo 2006, 00:46 am
por V_INT_Y_2
Ordenar 3 numeros
Programación Visual Basic
kontaminator 8 7,470 Último mensaje 24 Junio 2006, 01:05 am
por ReViJa
ordenar por heapsort?
Java
NERO69 1 8,424 Último mensaje 15 Octubre 2007, 18:48 pm
por NERO69
Ordenar registros
PHP
дٳŦ٭ 5 3,296 Último mensaje 24 Julio 2009, 20:16 pm
por дٳŦ٭
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines