[ Foro de C ]
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 :)