SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: luis94 en Jueves 2 de Diciembre de 2010, 04:21

Título: problema con un codigo de ordenamiento
Publicado por: luis94 en Jueves 2 de Diciembre de 2010, 04:21
necesito ayuda con este codigo que me tiene que ordenar unas rfc capturadas segun unas edades capturadas,ya m ordena las edades pero las rfc me las deja igual que cuando las capturo...por favor ayudenme es para mañana el codigo y vale el 75% de mi calificacion..gracias de antemano
este es el codigo:
#include "stdafx.h"
#include <iostream>  
using namespace System;
using namespace std;
struct maestro
{
   char rfc[10];
   int ed;
};
void ordenar(struct maestro[]);

void main()
{
   maestro m[5];
   for(int x=0;x<5;x++)
   {
      cout<<"Captura RFC y la Edad del maestron";
      cin>>m
      cout<<"Los datos capturados sonn"<<m
      cout<<"n";
   }
   ordenar(m);
   cin.ignore();
   cin.ignore();
}
void ordenar(struct maestro m[5])
{
   int x;
   int y;
   int teme;
   for(x=0;x<5;x++)
   {
      for(y=0;y<4;y++)
      {
         if(m[y].ed<=m[y+1].ed)
         {
            teme=m[y].ed;
            m[y].ed=m[y+1].ed;
            m[y+1].ed=teme;
          }
      }
   }
   cout<<"Las edades con RFC ordenadas sonn";
   for(x=0;x<5;x++)
   {
      cout<<m
   }
}
Título: Re: problema con un codigo de ordenamiento
Publicado por: m0skit0 en Jueves 2 de Diciembre de 2010, 09:40
Por favor, utiliza las etiquetas de código para postear código.

Saludos.
Título: Re: problema con un codigo de ordenamiento
Publicado por: ProfesorX en Jueves 2 de Diciembre de 2010, 19:48
Tu logica esta bien, solo tienes un pequeño error.

En la ordenacion cuando intercambias los valores, solo estas intercambiando la edad, cuando en realidad debes intercambair  toda la estructura, para que quede bien.

La modificacion quedaria asi:

Código: C++
  1.  
  2. void ordenar(struct maestro m[5])
  3. {
  4.     int x;
  5.     int y;
  6.     // Toda la estructura, no solo la edad
  7.     struct maestro teme;
  8.     for(x=0;x<5;x++)
  9.     {
  10.         for(y=0;y<4;y++)
  11.         {
  12.             // Esto si esta bien, ya que estas ordenando por edad
  13.             if(m[y].ed<=m[y+1].ed)
  14.             {
  15.                 // Toda la estuctura, no solo la edad
  16.                 teme=m[y];
  17.                 m[y]=m[y+1];
  18.                 m[y+1]=teme;
  19.             }
  20.         }
  21.     }
  22.     cout<<"Las edades con RFC ordenadas sonn";
  23.     for(x=0;x<5;x++)
  24.     {
  25.         cout<<m[x].ed<<"t"<<m[x].rfc;
  26.     }
  27. }
  28.  
  29.  

Saludos :)