Foro de elhacker.net

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"
Código:
#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...

Código:
for(int i = 0; 100 ; i++) {

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

Código:
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

Código
  1. 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?
Código:
#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;
}