m gustaria que m revisaran este programa a ver si voy bien

Iniciado por eduardo17445, 16 Abril 2013, 05:41 AM

0 Miembros y 1 Visitante están viendo este tema.

eduardo17445

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;
}
   

satu

Buenas!!

Repasa bien tu código porque tienes cosas muy raras.

Te dejo aquí la solución:
Código (cpp) [Seleccionar]

#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
Breakbeat como forma de vida

mr.blood

#2
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

satu

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.

Código (cpp) [Seleccionar]
int funcion(char *cadena, char caracter)

Saludos
Breakbeat como forma de vida