Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: eduardo17445 en 16 Abril 2013, 05:41 am



Título: m gustaria que m revisaran este programa a ver si voy bien
Publicado por: eduardo17445 en 16 Abril 2013, 05:41 am
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;
}
   


Título: Re: m gustaria que m revisaran este programa a ver si voy bien
Publicado por: satu en 16 Abril 2013, 14:10 pm
Buenas!!

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

Te dejo aquí la solución:
Código
  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. using namespace std;
  5.  
  6. int caracter(char *cadena, char c) {
  7.    int longitud = strlen(cadena), cont = 0;
  8.    for(int i = 0; i < longitud; i++) {
  9.        if(cadena[i] == c) {
  10.            cont++;
  11.        }
  12.    }
  13.    return cont;
  14. }
  15.  
  16. int main() {
  17.    char *cadena = new char[300];
  18.    cout << "escribe la cadena:" << endl;
  19.    cin.getline(cadena, 299);
  20.    cout << "Numero de veces que se repite la vocal \"a\": " << caracter(cadena, 'a') << endl;
  21.    cout << "Numero de veces que se repite la vocal \"e\": " << caracter(cadena, 'e') << endl;
  22.    cout << "Numero de veces que se repite la vocal \"i\": " << caracter(cadena, 'i') << endl;
  23.    cout << "Numero de veces que se repite la vocal \"o\": " << caracter(cadena, 'o') << endl;
  24.    cout << "Numero de veces que se repite la vocal \"u\": " << caracter(cadena, 'u') << endl;
  25.    cout << endl << "Pulsa Enter para salir.....";
  26.    cin.sync();
  27.    cin.get();
  28.    return 0;
  29. }
  30.  

Saludos


Título: Re: m gustaria que m revisaran este programa a ver si voy bien
Publicado por: mr.blood en 16 Abril 2013, 15:59 pm
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).

Código
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. void character(char *string, char *vector, int items);
  5.  
  6. int main()
  7. {
  8. char string[]="Esta es una prueba";
  9. char vector[]={'a',0,'e',0,'i',0,'o',0,'u',0};
  10. int i;
  11.  
  12. character(string, vector, 10);
  13.  
  14. for(i=0;i<10;i+=2)
  15. printf("%c -- %i\n", vector[i], vector[i+1]);
  16.  
  17. return 0;
  18. }
  19.  
  20. void character(char *string, char *vector, int items)
  21. {
  22. int len=strlen(string), i=0, j=0;
  23. for(i=0;i<len;i++)
  24. for(j=0;j<items;j+=2)
  25. if(string[i]==vector[j])
  26. vector[j+1]++;
  27. }
  28.  

Sa1uDoS


Título: Re: m gustaria que m revisaran este programa a ver si voy bien
Publicado por: satu en 16 Abril 2013, 22:55 pm
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
  1. int funcion(char *cadena, char caracter)

Saludos