[ Foro de C ]

Terminación frase

01-Nov-2024 21:27
Ismael Millán Pérez
0 Respuestas

Estoy reescribiendo los ejercicios de pseudocódigo en C y me he encontrado atascado con esto:
Debo hacer un ejercicio que:
Dada una frase por el usuario, realice un algoritmo que me diga cuantas palabras terminan con la misma letra que la primera palabra.
En pseudocódigo tengo algo como esto:
algoritmo
   var
       c, cont, cant, cult
   fvar
   escribir("Introduce una frase");
   leer(c);
   cont = 0;
   cant = c;
   mientras (c!='.') hacer;
       leer(c);
       mientras (c != ' ') y (c != '.') hacer;
           cult = c;
           leer(c);
       fmientras
       si (cant == cult) entonces;
           cont = cont + 1;
       fsi
       si (c != '.') entonces;
           leer(c);
       fsi
   fmientras
   escribir("Acaban con la misma letra ", cont, " palabras");
falgoritmo

A la hora de escribir ese programa en C tengo esta implementación:
#include <stdio.h>

int main() {
   char c, cant, cult;
   int cont = 0;

   printf("Introduce una frase: \n");
   scanf("%c", &c);
   cant = c;

   while (c != '.') {
       while (c != ' ' && c != '.') {
           cult = c;
           scanf("%c", &c);
       }
       if (cant == cult) {
           cont++;
       }
       if (c != '.') {
           scanf("%c", &c);
       }
   }
   printf("Acaban con la misma letra que la primera palabra: %d palabras.\n", cont);

   return 0;
}

El problema que surge de este código es que a pesar de introducir una frase con palabras que terminan con igual letra que la primera palabra, siempre está en 0.
¿Qué está sucediendo? ¿Es algún error de mi pseudocódigo?

#include <stdio.h>
#include <string.h>

int main()
{
char c, cant = ' ';
int cont = 0;

printf("Introduce una frase \n");
   while ((c = getchar()) != '.') {
if (cant == 's' && (c == '.' || c == ' ')) {
cont++;
}
cant = c;
   }

printf("Acaban con s %d palabras.\n", cont);

return 0;
}
Tengo este código de un ejercicio anterior que cuenta las palabras que acaban en s, y que pienso que puede ser clave para resolver este problema. Muchas gracias por leerme :)




Si ya eres usuario del sistema, puedes contestar desde tu cuenta y así ganar prestigio.

Si sólo eres un visitante, puedes optar por...