Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: fernando1122 en 15 Octubre 2017, 23:45 PM

Título: Encontrar cuantas veces se repite una letra en una cadena en C
Publicado por: fernando1122 en 15 Octubre 2017, 23:45 PM
Hola, soy nuevo programando y necesito hacer un programa que muestre las veces que una letra se repite en una cadena. Lenguaje C
Gracias :-(
Título: Re: Encontrar cuantas veces se repite una letra en una cadena en C
Publicado por: engel lex en 15 Octubre 2017, 23:53 PM
hola! se resuelen dudas, no se entregan codigos listos

el tema fue movido a su respectivo subforo

en general, un cliclo que recorra la cadena y una variable para contar, basta
Título: Re: Encontrar cuantas veces se repite una letra en una cadena en C
Publicado por: fernando1122 en 16 Octubre 2017, 01:38 AM
cuando ejecuto me aparece "segmentation fault"
#include <stdio.h>

int find(char *cadena, char letra_a_contar)
{
    int acc = 0;
    for(int i = 0; 100 ; i++) {
        if (cadena[i+1] == letra_a_contar) {
            acc = acc+1;
        }
    }
    return acc;
}
int main()
{
    char *cad = NULL;
    char letra_a_buscar = 0;
    int res = 0;
    printf("Escribe la cadena:");
    scanf("%s", cad);
    printf("Escribe la letra que quieres contar:");
    scanf("%c", & letra_a_buscar);
    res = find(cad, letra_a_buscar);
    printf("%i", res);
    return 0;
}
Título: Re: Encontrar cuantas veces se repite una letra en una cadena en C
Publicado por: engel lex en 16 Octubre 2017, 01:44 AM
tienes errores...

for(int i = 0; 100 ; i++) {

el segundo argumento simplemente pusiste 100.... eso debe ser i<100 (si no, esto será un ciclo infinito)

char *cad = NULL;

declaraste el puntero cad, pero nunca le alojaste memoria para almacenar, esto es lo que te da el segmentation fault... estás intentando escribir en la posición de memoria NULL
Título: Re: Encontrar cuantas veces se repite una letra en una cadena en C
Publicado por: fernando1122 en 16 Octubre 2017, 01:48 AM
entonces en lugar de NULL que me recomiendas poner?
el programa donde estoy trabajando ( cloud 9 ) me recomendo NULL
Título: Re: Encontrar cuantas veces se repite una letra en una cadena en C
Publicado por: engel lex en 16 Octubre 2017, 01:57 AM
Claro la recomendación es null, pero debes apartar luego el espacio... si quieres reservar el espacio inicialmente

char cad[100];

recuerda que de 100, puedes usar 99 ya que por lo general siempre al final del texto va \0 que es el caracter de fin de texto
Título: Re: Encontrar cuantas veces se repite una letra en una cadena en C
Publicado por: fernando1122 en 16 Octubre 2017, 03:04 AM
he cambiado mi programa y ahora si me pide la cadena, el tamaño, y la letra que quiero contar pero me arroja como resultado 0
¿alguna sugerencia?
#include <stdio.h>

int find(char *cadena, char letra_a_contar, int size)
{
   int acc = 0;
   for(int i = 0; i < size ; i++) {
       if (cadena[i] == letra_a_contar) {
           acc = acc+1;
       }
   }
   return acc;
}
int main()
{
   char cad[9];
   int size;
   int letra_a_buscar;
   int res = 0;
   printf("Escribe la cadena:");
   scanf("%s", cad);
   printf("dame el tamaño de tu cadena:");
   scanf("%i",&size);
   printf("Escribe la letra que quieres contar:");
   scanf("%i",&letra_a_buscar);
   res = find(cad, letra_a_buscar, size);
   printf("%i", res);
   return 0;
}



Título: Re: Encontrar cuantas veces se repite una letra en una cadena en C
Publicado por: fernando1122 en 16 Octubre 2017, 03:33 AM
¿como se puede guardar una letra en una variable?
Título: Re: Encontrar cuantas veces se repite una letra en una cadena en C
Publicado por: polako en 12 Noviembre 2019, 15:24 PM
Como querias guardar una letra era "%s" no "%i"


#include <stdio.h>

int find(char *cadena, char letra_a_contar, int size)
{
    int acc = 0;
    for(int i = 0; i < size ; i++) {
        if (cadena == letra_a_contar) {
            acc = acc+1;
        }
    }
    return acc;
}
int main()
{
    char cad[9];
    int size;
    int letra_a_buscar;
    int res = 0;
    printf("Escribe la frase:");
    scanf("%s",&cad);
    printf("Cuantas letras tiene la frase:");
    scanf("%i",&size);
    printf("Escribe la letra que quieres contar:");
    scanf("%s",&letra_a_buscar);
    res = find(cad, letra_a_buscar, size);
    printf("%i", res);
    return 0;
}