Dev - C++ - Contar las veces que se repite un caracter en un arreglo de palabras

 
Vista:
Imágen de perfil de Francisco
Val: 55
Ha aumentado 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Contar las veces que se repite un caracter en un arreglo de palabras

Publicado por Francisco (36 intervenciones) el 05/02/2018 17:30:59
Aquí subo el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<iostream>
using namespace std;
int main(){
    string arr[5];
    int c=0;
    int i=0;
    cout<<"ingrese palabras "<<endl;
    for(i=0;i<5;i++){
        cin >> arr[i];
    }
    for(i=0;i<5;i++){
        if(arr[i]=="a"){
            c=c+1;
        }
    }
    cout<<"el caracter a se repite " << c <<"veces en el arreglo "<<endl;
    return 0;
}

Lo se, esta mal, me imprime 0 veces cuando ingreso las palabras, quiero que me imprima la cantidad de veces que se repite el caracter 'a' cuando ingreso palabras.
Necesito que me digan donde esta el error. Por favor
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 84
Ha disminuido 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Contar las veces que se repite un caracter en un arreglo de palabras

Publicado por Yamil Bracho (41 intervenciones) el 05/02/2018 17:41:32
El problema es que estas comparando un string con un char en

if(arr[i]=="a"){

Seria algo como;

1
2
3
4
5
6
7
for(i=0;i<5;i++){
  for (int j=0; j < strlen(arr[i]; j++) {
	if(arr[i][j]=="a"){
		c++
	}
   }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 661
Bronce
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Contar las veces que se repite un caracter en un arreglo de palabras

Publicado por agustin (522 intervenciones) el 05/02/2018 22:18:19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#define MAX 5
using namespace std;
int main(){
    string arr[MAX];
    int c=0;
    cout<<"ingrese palabras "<<endl;
    for(int i=0;i<MAX;i++){
        cin >> arr[i];
    }
    for(int i=0;i<MAX;i++){
    	for(int j=0;j<arr[i].size();j++){
             if(arr[i][j]=='a'){
                c++;
             }
        }
    }
    cout<<"el caracter a se repite " << c <<" veces en el arreglo"<<endl;
    return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 338
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Contar las veces que se repite un caracter en un arreglo de palabras

Publicado por Martín (158 intervenciones) el 06/02/2018 00:07:21
Hola; supongo que ya tienes la ayuda que necesitabas, pero de todos modos creo que no está de más aclarar que la forma que tienes de pensar la solución tiene poco que ver con el C++. Por ejemplo:

- El C++ usa arrays de estilo C sólo de forma marginal, es la última opción a considerar, normalmente la peor. (Y tampoco está bien llamarlos "arreglos", que aunque las palabras se escriban de manera parecida, conviene saber que el castellano es un idioma, hace muchos años, no es una forma "latina" de hablar inglés)

- Las distintas funcionalidades de un programa se escriben en funciones.

- El estándar C++11 ya ha cumplido 7 años, que para un lenguaje de programación es mucho más que 4 años en la vida de un programador. (como con la edad de los perros, habría que multiplicar por 7), así que no hay excusas para no usarlo.

- Convendrás conmigo que no tiene sentido comenzar a estudiar una disciplina como se hacía hace 140 años. [ (2018 - 1998) * 7 ] = 140
Bueno, eso es lo que estás haciendo.

- Si pretendes tomar en serio tu estudio, compra un buen libro. No hay excusas. Si eres un estudiante latino medio, pues nada, suerte; pero avisa por favor, que nadie querrá perder el tiempo contigo.

Acá abajo pongo un ejemplo en un C++ algo más actual:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#include<iostream>
#include <array>
#include <string>
#include <algorithm>
 
constexpr size_t n = 5;  // dimensión del array,
                         // conocida en tiempo de compilación
 
size_t contarLetra(const std::array<std::string, n>& arr, char ch)
{
    size_t count = 0;
 
    for (const auto& i : arr) {                                              // recorre cada palabra en el array
        count += std::count_if(i.begin(), i.end(),                        // cuenta cada carácter ch en la palabra
                               [ch](const auto& c) { return c == ch; });  // expresión lambda usada como predicado
    }
 
    return count;
}
 
int main()
{
    std::array<std::string, n> arr;  // esto es un array de C++
 
    std::cout << "ingrese las " << n << " palabras\n";  // no usa endl, usa \n
 
    for (auto i = 0; i < n; ++i) {  // usa pre-incremento
        std::cout << "Palabra " << i + 1 << "? ";
        std::cin >> arr[i];
    }
 
    std::cout << "el caracter 'a' se repite " << contarLetra(arr, 'a') << " veces en el array\n";  // no es "arreglo" ¿o qué es lo que se arregla?
 
    return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Francisco
Val: 55
Ha aumentado 1 puesto en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Contar las veces que se repite un caracter en un arreglo de palabras

Publicado por Francisco (36 intervenciones) el 06/02/2018 02:32:02
Muchas gracias, muy amable.
Si, lo que pasa es que preguntaba cosas muy concretas que no figuraban en los libros que tengo. Y voy a tener en cuenta el estudio de esta disciplina. Lleva muchos años y hay que estar estudiando permanentemente porque un solo descuido y va en mal.
Gracias de todas formas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar