Hola ¿cómo están?,
En general tengo algunas dudas sobre las funciones nativas de c/c++ que se permiten usar en el curso. Asumiendo que no se permiten utilizar casi ninguna, para resolver el ejercicio realice lo siguiente.
#include <stdio.h>
int ocurrencias(char frase[100], int largo, char letra[1])
{
int ocurrencias = 0;
for (int i = 0; i < largo; i++)
{
if (frase[i] == *letra)
{
ocurrencias++;
}
}
return ocurrencias;
}
int largoDeCadena(char frase[100])
{
int largo = 0;
char *cptr = &frase[largo];
while (*cptr != false)
{
largo = largo + 1;
cptr = &frase[largo]; // puntero a la letra de esa posición
}
return largo - 1; // Le resto el espacio en blanco el cual es generado por el lenguaje de manera automática
}
int main()
{
char frase[100];
char letra[1];
printf("Ingresa la frase: ");
fgets(frase, 100, stdin);
printf("Ingresa la letra a buscar: ");
scanf("%c", letra);
int cantidad_ocurrencias = ocurrencias(frase, largoDeCadena(frase), letra);
printf("La cantidad de caracteres (de '%s') es: %d \n", frase, largoDeCadena(frase));
printf("La letra '%c' aparece : %d veces", *letra, cantidad_ocurrencias);
return 0;
}
Mi duda es la siguiente. Para poder leer de la entrada por teclado la frase (pudiendo tener varias palabras) tuve que usar fgets() de lo contrario se complicaba con scanf() para leer caracteres en blanco (quizás el usuario quiera saber los espacios en blanco).
¿Cuáles funciones nativas se permiten usar para resolver los ejercicios? ¿Hay algún listado?
Por otro lado, ¿Me podrán dar un poco de feedback sobre el código de arriba para optimizarlo un poco más?
Saludos,
Mauricio.