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
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:
if (ocurrencia[d] > ocurrencia[d+1])
{
/** Ordenamos el vector de ocurrencias **/
swap = ocurrencia[d];
array[d] = ocurrencia[d+1];
ocurrencia[d+1] = swap;
/** Ordenamos el vector de cadenas **/
strcpy(aux, cadenas[d]);
strcpy(cadenas[d], cadenas[d + 1];
strcpy(cadena[d + 1], aux);
/** **/
}
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!