Programación General > C/C++
problema con un codigo de ordenamiento
(1/1)
luis94:
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[x].rfc>>m[x].ed;
cout<<"Los datos capturados sonn"<<m[x].rfc<<"t"<<m[x].ed;
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[x].ed<<"t"<<m[x].rfc;
}
}
m0skit0:
Por favor, utiliza las etiquetas de código para postear código.
Saludos.
ProfesorX:
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++ --- void ordenar(struct maestro m[5]){ int x; int y; // Toda la estructura, no solo la edad struct maestro teme; for(x=0;x<5;x++) { for(y=0;y<4;y++) { // Esto si esta bien, ya que estas ordenando por edad if(m[y].ed<=m[y+1].ed) { // Toda la estuctura, no solo la edad teme=m[y]; m[y]=m[y+1]; m[y+1]=teme; } } } cout<<"Las edades con RFC ordenadas sonn"; for(x=0;x<5;x++) { cout<<m[x].ed<<"t"<<m[x].rfc; }}
Saludos :)
Navegación
Ir a la versión completa