¿Cómo contar la cantidad de caracteres específicos en una string de C?

publicado por: Anonymous

Tengo una actividad en la que tengo que crear una función para que cuente la cantidad de “a” y “A” que hay dentro de una string. Lo que hice fue que se lea la string con un gets en la función main y después pasarla como parámetro a la funcion del ejercicio. Una vez en la función, recorro el array de caracteres (la string) con un for. Para contar las letras a comparo caracter por caracter con otras variables usando un if y en caso de la condicion sea verdadera aumenta una variable por 1. Si se llega al caracter nulo se usa un break para salir del for. El problema es que el programa no toma ninguna letra como una A o a y sale de for dando de salida Hay 0 As en la oracion.
Código:

#include<stdio.h>
int aa(char arr[], int num){
 int i;
 int b=0;
 int a='a';
 int a1='A';
 for(i=0;i<num;i++){/*El problema esta en este for*/
 if(arr[i]==((a)||(a1))){
 b++;}/*El programa no cuenta ningun caracter como a o A*/
 else if(arr[i]==''){
 break;}}/*Y directamente sale de la funcion*/
 printf("Hay %d As en la oracion.n",b);}


main(){
 int i;
 char string1[64];
 printf("Poner una oracion:n");
 gets(string1);
 aa(string1,64);
 return 759;}

edit: Listo ya esta solucionado, gracias 😀

solución

Tu problema está aquí:

if( arr[i] == ( ( a ) || ( a1 ) ) ) {

Eso equivale a

compara el valor de arr[i] con el resultado de realizar un or lógico entre a y a1

Lo que tú quieres hacer es:

if( ( arr[i] == a ) || ( arr[i] == a1 ) ) {
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *