es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Función de no impresión.

Por favor, necesito ayuda.
Estoy escribiendo un programa para contar e imprimir vocales y consonantes utilizando punteros y funciones. Mi código se compila correctamente, pero no muestra los resultados.
Muestra cualquiera de los siguientes mensajes: “Your text count: 0 vowels and 0 consonants” o “Segmentation fault”.
No puedo encontrar el problema.

“`c

#include <stdio.h>
#include <string.h>
#define SIZE 1000

void voyelle(char *word)
{
int i,n,cons=0,vowel=0;
n=strlen(word);

while(<em>word<n) {="" if((</em>word="">='a'&& <em>word<='z')||(</em>word>='A'&& <em>word<='Z'))
{
if(</em>word=='a'|| <em>word=='A'|| *word=='e'||</em>word=='E'||<em>word=='i'||</em>word=='I'||<em>word=='o'||</em>word=='O'||<em>word=='u'||</em>word=='U')
{
vowel++;
}
else
cons ++;
}
word++;
}
printf(" Your text count:%d vowels and %d consonnants",vowel,cons);
}
int main(void)
{
char text[SIZE];
printf("Input your text: ");
fgets(text,SIZE,stdin);

voyelle(text);

return 0;
}

“`</n)></string.h></stdio.h>

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Hay un par de errores en tu código que podrían estar causando el problema.

    En primer lugar, en la condición de tu bucle while, estás comparando un puntero (*word) y un entero (n). Esto puede causar un comportamiento inesperado ya que no son del mismo tipo. En su lugar, deberías desreferenciar el puntero y compararlo con el carácter nulo (‘\0’) para comprobar el final de la cadena.

    En segundo lugar, en tu declaración printf, hay un error tipográfico donde escribiste mal “consonants”.

    Aquí tienes el código corregido con comentarios:

    #include <stdio.h>
    #include <string.h>
    #define SIZE 1000
    
    void voyelle(char *word)
    {
        int i, n, cons = 0, vowel = 0;
        n = strlen(word);
    
        while (*word != '\0') // comprobar el final de la cadena
        {
            if ((*word >= 'a' && *word <= 'z') || (*word >= 'A' && *word <= 'Z'))
            {
                if (*word == 'a' || *word == 'A' || *word == 'e' || *word == 'E' || *word == 'i' || *word == 'I' || *word == 'o' || *word == 'O' || *word == 'u' || *word == 'U')
                {
                    vowel++;
                }
                else
                    cons++;
            }
    
            word++; // pasar al siguiente carácter
        }
    
        printf(" Tu texto tiene:%d vocales y %d consonantes", vowel, cons); // error tipográfico corregido
    }
    
    int main(void)
    {
        char text[SIZE];
        printf("Introduce tu texto: ");
        fgets(text, SIZE, stdin);
    
        voyelle(text);
    
        return 0;
    }
    

    Haz estos cambios y vuelve a probar el programa. Ahora debería contar e imprimir el número de vocales y consonantes en el texto de entrada. Si aún encuentras problemas, por favor proporciona el mensaje de error que estás recibiendo.</string.h></stdio.h>

Comments are closed.