Por favor, necesito ayuda para ejercicio en C

Por favor, necesito ayuda para este ejercicio en lenguaje C. No logro hacerlo. Es de primero de carrera, espero que no sea muy difícil para usted.
Hacer un programa C que, dada una frase acabada en punto, se reescriba ordenando la palabras de menor a mayor longitud e indique la posición de cada palabra dentro de la frase original.
Ejemplo: SECUENCIA: Hola muy buenos días.
RESULTADO: muy 2 Hola 1 días 4 buenos 3
Indicaciones:
1- Las palabras de igual longitud deben aparecer según el orden de la frase original.
2- La frase tendrá como máximo 100 palabras.
3- Las palabras tendrán como máxima 20 caracteres.
4- Pueden haber espacios antes de la primera palabra, entre la ultima y el punto, y dos palabras pueden estar separadas por uno o más espacios.
Condiciones:
Tiene que ser con programa C.
Tendrá que compilar y ejecutar.
Es obligatorio hacer uso de diseño descendente, que es acciones y funciones.
Muchísimas gracias!

1 Respuesta

Respuesta
1
#include <stdio.h>
#include <string.h>
typedef char palabra[20];
typedef palabra frase[100];
void buscaPalabras(char *str, frase laFrase)
{
  char *pch;
  int numeroDePalabra = 0;
  pch = strtok (str," ,.-");
  while (pch != NULL)
  {
    memcpy (laFrase[numeroDePalabra],pch,strlen(pch)+1);
    numeroDePalabra++;
    pch = strtok (NULL, " ,.-");
  }
}
void ordenaPalabras(frase laFrase)
{
int i,j;
//para cada longitud posible
for (i=1; i <= 20; i++)
{
//PAra cada una de la palabras
for (j=0; j < 100; j++)
{
//si la longitud es igual a i
if (strlen(laFrase[j]) == i)
printf("%s\n", laFrase[j]);
}
}
}
void limpiaBuffer(frase laFrase)
{
int j;
for (j=0; j < 100; j++)
memset(laFrase[j],'\0', 20);
}
int main ()
{
frase laFrase;
char string[] = "Ho hola holla holla holala";
limpiaBuffer(laFrase);
buscaPalabras(string, laFrase);
ordenaPalabras(laFrase);
return 0;
 }

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas