[C con Clase] Ordenar filas de matriz, referencia ultimo valor de la fila.

Jorge Vega Sanchez memmaker650 en gmail.com
Vie Sep 3 09:56:30 CEST 2010


Gracias lo probare esta tarde.

El 03/09/2010, a las 07:51, Steven Davidson escribió:

> Hola Jorge,
> 
> On 9/2/2010 11:35 AM, Jorge Vega Sanchez wrote:
> 
> [CORTE]
> 
>> 
>> Me surge una duda: en el algoritmo comparo posiciones pero para
>> intercambiar vectores no sé como hacerlo todo de golpe, es decir no
>> teniendo que ir pasnado posición a posicion.
>> 
> 
> No hay otra forma que ir elemento a elemento. Lo que puedes hacer es usar la función 'memcpy()' para no tener que escribir todo el código tú mismo, pero el programa va a copiar elemento a elemento.
> 
>> 
> 
> [CORTE]
> 
>> NOTA:
>> En mi algoritmo la fila 24 la usa como temporal para hacer el SWAP en
>> el algoritmo.
>> 
> 
> Podrías haber creado un array temporal dentro de 'BubbleSort()'. Por ejemplo,
> 
> int aux[NCOLS];
> ...
> memcpy( aux,    A[j],   NCOLS );
> memcpy( A[j],   A[j+1], NCOLS );
> memcpy( A[j+1], aux,    NCOLS );
> 
> [CORTE]
> 
>> void BubbleSort(int *A, int N) // Algoritmo MODIFICADO.
>> {
>> 	int i, j;
>> 	
>> 	for (i = N-1; i>  0; i--)
>> 	{
>> 		for (j = 0; j<  i; j++)
>> 		{
>> 			if (A[j][5]>  A[j+1][5])
>> 			{
>> 				strcpy(A[j],A[24]);
>> 				strcpy(A[j+1],A[j]);   --->  Aqui radica el problema
>> 				strcpy(A[24],A[j+1]);
> 
> Has mal interpretado los parámetros de 'strcpy()'. En cualquier caso, debería ser:
> 
> strcpy(  A[24], A[j] );
> strcpy(   A[j], A[j+1] );
> strcpy( A[j+1], A[24] );
> 
>> 			}
>> 		}
>> 	}
>> }	// FIN ALGORITMO MODIFICADO.
> 
> El problema es que usas 'strcpy()' cuando seguramente lo que quieres es 'memcpy()'. La función 'strcpy()' sirve para copiar cadenas de caracteres que terminan en un carácter nulo. Como usas un array de enteros con una cantidad fija de columnas, por lo que no deberías tener "caracteres nulos" y por ello 'strcpy()' no funcionará correctamente.
> 
> 
> Espero haber aclarado la duda.
> 
> Steven
> 
> 
> _______________________________________________
> 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





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