Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: nicolas04 en 26 Junio 2014, 07:30 am



Título: duda con arreglos bidimensionales
Publicado por: nicolas04 en 26 Junio 2014, 07:30 am
hola buenas tardes tengo este ejercicio y no se de que manera mejor encararlo

3. Realice una función que reciba un vector de palabras y otro vector con la ocurrencia de cada palabra y ordene el vector de
palabras por la cantidad de ocurrencias de cada una.
Prototipo void ordenar( char palabras[][TAM_PALABRAS], int * ocurrencias , int tamanio)


la manera en la que lo pense  fue hacer un metodo  de  ordenamiento de  de burbuja en las concurrencias y cada vez que  halle un valor el cual ordenar tambien cambie el lugar  en donde esta alojada la palabra en la matriz pero al momento de implementarlo me tope con varias dudas

como cuando intento cambiar  una palabra de una pocicion a la otra  utilizo  este segmento de codigo

void mystrcopy (char palabras [][])
{
int i = 0;
int j = 0;
char aux [TAM];
while(palabras !='\0')
 {
   
  aux= palabras[j];
  palabras[j] = palabras[j+1] ;
  palabras[j+1] =aux
  i++;
   j++
  }


  pal1 = '\0';




pero al momento de utilizar esa funcion en mi ordemaiento   de burbujas no sabria como implemaentarlo

void burbuja (int ocurrencia [])
{
int i= 0,j;
int aux = 0 ;
int k= 0;

for(j=0;j<TAM;j++)
{
for(i=0;i<TAM-j;i++)
{
if(ocurrencia >= ocurrencia [i+1])
    {

    aux = ocurrencia ;
     ocurrencia=ocurrencia [i+1];
     ocurrencia[i+1] = aux;

   
    }
}
}

gracias de antemano por la ayuda


Título: Re: duda con arreglos bidimensionales
Publicado por: Flakito81 en 26 Junio 2014, 21:23 pm
Tal como entiendo el problema tendrías un vector con palabras y otro vector del mismo tamaño que tendría un valor numerico y tendrías que ordenar el vector de palabras en funcion del vector numerico
¿Me equivoco?

La idea sería hacer un método de ordenación, por ejemplo la burbuja aunque no es el más eficiente. y cuando hagas el intercambio de valores numericos tmb realices el intercambio de las cadenas.

El código de intercambio sería algo tal que:
Código
  1.  
  2.      if (ocurrencia[d] > ocurrencia[d+1])
  3.      {
  4.       /** Ordenamos el vector de ocurrencias **/
  5.        swap       = ocurrencia[d];
  6.        array[d]   = ocurrencia[d+1];
  7.        ocurrencia[d+1] = swap;
  8.       /** Ordenamos el vector de cadenas **/
  9.       strcpy(aux, cadenas[d]);
  10.       strcpy(cadenas[d], cadenas[d + 1];
  11.       strcpy(cadena[d + 1], aux);
  12.      /** **/
  13.      }
  14.  
 
Darse cuenta que 'swap' es una variable auxiliar dell tipo numérico (int swap;). Y 'aux' es la variable auxiliar para guardar la palabra (char aux[SZ];).

Espero haber podido ayudar.

Suerte!