[C con Clase] Programa con Estructuras con Error

=?utf-8?B?TGVvbmVsIEZsb3LtbiBTZWxsZXM=?= leonel06033 en cfg.jovenclub.cu
Jue Sep 4 18:33:27 CEST 2008


hola amigo:

te adjunto el programa con todo resulto, espero te sirva, ahora te
hablare de el un poquito.

mira el error no lo tenias donde decias, lo que pasaba es que
estabas entrando los datos, limpias la pantalla, despues mandas a
imprimir los datos en el orden en que los entrastes es decir
desordenados y despues limpias la pantalla es decir, no le das
tiempo a el usuario a ver la tabla desordenada, y despues mandas a
ordenar la tabla y la imprimes, el error estaba en la ordenación, el
código que te mando, te arregle algunas cositas y hice a mi modo el
metodo de ordenamiento de burbuja, otra cosa, en el inicio de tu
programa decias que ibas a ordenar la lista por edad cosa que no
hacias, lo estabas ordenando por nombre, yo lo arregle, de todas
maneras si lo vas a dejar como estaba solo hace los cambio
pertinentes, otra cosa, fijate en la funcion entrada que le baje le
cantidad de datos a recibir a 3, solo para poder depurar el programa
mas rápido, si se lo vas a aumentar canbiale los numeros 3 por el
nuevo valor, bueno tu sabes.

Otra cosa, tu programa esta muy rigido, claro que lo que te voy a
decir es solo una sugerencia, para que te vayas adaptando, tu
programa utiliza variables globales, no es que lo critique, pero
algunos programadores dicen que viola los principios de minimo
acceso, hay algunos casos que tienes que utilizarla claro, pero
mientras puedas evitarlo, mejor, pudieras haber creado las varibles
dentro de main() es decir locales (auto), y haberselas pasado a las
funciones, en el caso del arreglo, los arreglos se pasan a las
funciones por referencia, es decir un arreglo es un apuntador al
primer elemento de la lista, y en el caso de la variables temporal,
se la uibeces pasado por referencia tambien, utilizando apuntadores
y ya, otra cosa, tu programa, mi consejo, pudieras haberlo hecho
mas, una sugerencia de reutilización de código, o de rendimiento o
de ingieneria de soft, es decir, le ubieces dado la opción de
conocer el limite de la lista de datos a entrar, o ubieces utilizado
un bucle o ciclo con centinela y a la ves un contador que fuera
contando la cantidad de datos entrados, y luego se lo pasas a las
funciones de ordenamiento y impresion, esto con el objetivo de poder
trabajr con una lista grande o pequeña, es decir con cualquier
extencion de lista.

bueno, esto solo son mis modescos consejos, te puedo decir que no
soy experto, pero le se alguito, asi que espera las criticas de los
demas a ver que dicen, solo me limite a hacerle pequeños arreglitos
a tu programa, nada más.

bueno espero te sirva, y aqui estamos para cualquier duda.
saludos, el archivo te va adjunto, sino te llega escribeme a mi
correo directo. a utilice c++builder 6.




Consejo DavidSi no entiendes escribeme...
> Me pueden ayudar? , lo he revisado varias veces pero no encentro
> exactamente el error, creo que en que trate de rectificarlo provoque
> lo contrario
>
> http://listas.conclase.net/iconos/0101-sadsmile.gif
>
>
> //******************************************************************
> //Programa con Estructuras que muestra nombre y edad de 10 personas
> //y los ordena por edad
>
> #include<stdlib.h>
> #include<stdio.h>
> #include<conio.h>
> #include<string.h>
>
>
>
> struct tipodat
> {
> 	char nombre[30];
> 	int edad;
> }estructura[30],temp;
>
> void captura(void);
> void imprime(void);
> void ordena(void);
>
> void main(void)
> 	{
> 	clrscr();
> 	captura();
> 	clrscr();
> 	imprime();
> 	clrscr();
> 	ordena();
> 	imprime();
> 	}
> void captura(void)
> 	{
> 		int i=0;
> 		for(i=0;i<10;i++)
> 		{
> 			printf("NOMBRE:");flushall();gets(estructura[i].nombre);
> 			printf("EDAD:");scanf("%d",&estructura[i].edad);
> 		}
> 	}
>
>
>
> void imprime(void)
> 	{
> 		int i;
> 		gotoxy(2,2);cprintf("N			NOMBRE			EDAD");
> 		gotoxy(2,3);cprintf("-----------------------------------------");
> 		for(i=0;i<10;i++)
> 		{
> 			gotoxy(2,4+i);
> 			cprintf("%d  		%s		%d",i+1,estructura[i].nombre);
>                //por aqui anda
> 			gotoxy(50,4+i);                       //el problema
> 			cprintf("%d",i+1,estructura[i].edad);
> 		}
> 		getch();
> 	}
>
> void ordena(void)
> 	{
> 		int i,j,x;
> 		for(i=0;i<10-1;i++)
> 		{
> 			for(j=i+1;j<10;j++)
> 			{
> 				x=strcmpi(estructura[i].nombre,estructura[j].nombre);
> 				if(x>0)
> 				{
> 					temp=estructura[i];
> 					estructura[i]=estructura[j];
> 					estructura[j]=temp;
> 				}
> 			}
> 		}
> 	}
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>


-- 
Datos Personales:
------------------------------------------------
    Provincia: Cienfuegos.
    Municipio: Cumanayagua
         Tel�: 7496
Id. Jabber Jc: leonel06033 en jabber.cfg.jovenclub.cu
        Apodo: Erf
--------------------------------------------------
  "Sois lo que haceis de forma repetida. La excelencia no es un
hecho aislado, es un h�bito".
                  Arist�teles.
--------------------------------------------------
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: Unit1.c
Type: application/octet-stream
Size: 4060 bytes
Desc: no disponible
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20080904/c80bad8b/attachment.obj>


Más información sobre la lista de distribución Cconclase