Realiza una función que, dada una cadena de caracteres y un carácter, devuelva el número de apariciones de dicho carácter en la cadena. Realiza un programa que lea una cadena de caracteres por teclado y escriba por pantalla el número de apariciones en la cadena de cada una de las vocales haciendo uso de la función definida.
//yo hice algo haci en dev c++
#include <iostream>
#include <conio.h>
using namespace std;
int caracter(int a,int b,int c,int d,int e, int f)
{
char v[5];
a=a;
return a;
}
int main()
{
int a,b,c,d,e,f;
int op;
cout<<"";
cin>>op;
for(int=0;int<=5;int++)
{
cout<<"ingrese el primer caracter"<<endl;
cin>>a;
cout<<"ingrese el segundo caracter"<<endl;
cin>>b;
cout<<"ingrese el segundo caracter"<<endl;
cin>>c;
cout<<"ingrese el segundo caracter"<<endl;
cin>>d;
cout<<"ingrese el segundo caracter"<<endl;
cin>>e;
}
cout<<"mostrar"<<caracter(a,b,c,d,e,f)<<endl;
system ("pause");
return 0;
}
Buenas!!
Repasa bien tu código porque tienes cosas muy raras.
Te dejo aquí la solución:
#include <iostream>
#include <cstring>
using namespace std;
int caracter(char *cadena, char c) {
int longitud = strlen(cadena), cont = 0;
for(int i = 0; i < longitud; i++) {
if(cadena[i] == c) {
cont++;
}
}
return cont;
}
int main() {
char *cadena = new char[300];
cout << "escribe la cadena:" << endl;
cin.getline(cadena, 299);
cout << "Numero de veces que se repite la vocal \"a\": " << caracter(cadena, 'a') << endl;
cout << "Numero de veces que se repite la vocal \"e\": " << caracter(cadena, 'e') << endl;
cout << "Numero de veces que se repite la vocal \"i\": " << caracter(cadena, 'i') << endl;
cout << "Numero de veces que se repite la vocal \"o\": " << caracter(cadena, 'o') << endl;
cout << "Numero de veces que se repite la vocal \"u\": " << caracter(cadena, 'u') << endl;
cout << endl << "Pulsa Enter para salir.....";
cin.sync();
cin.get();
return 0;
}
Saludos
Para no tener que recorrer la cadena tantas veces como letras busques, otro modo mas "eficiente" (al menos con cadenas largas y para buscar pocos caracteres).
No se C++ asi que lo hice en C, no creo que te cueste portarlo ;).
En items pasas el numero de elementos de vector, en este caso 10 (cada vocal y el numero de repeticiones).
#include <stdio.h>
#include <string.h>
void character(char *string, char *vector, int items);
int main()
{
char string[]="Esta es una prueba";
char vector[]={'a',0,'e',0,'i',0,'o',0,'u',0};
int i;
character(string, vector, 10);
for(i=0;i<10;i+=2)
printf("%c -- %i\n", vector[i], vector[i+1]);
return 0;
}
void character(char *string, char *vector, int items)
{
int len=strlen(string), i=0, j=0;
for(i=0;i<len;i++)
for(j=0;j<items;j+=2)
if(string[i]==vector[j])
vector[j+1]++;
}
Sa1uDoS
Buenas!!
Pero eso no cumple con el enunciado:
Citar
Realiza una función que, dada una cadena de caracteres y un carácter, devuelva el número de apariciones de dicho carácter en la cadena.
int funcion(char *cadena, char caracter)
Saludos