Dev - C++ - NECESITO AYUDA!! Con respecto a un contador de una palabra en especifico!

 
Vista:
sin imagen de perfil

NECESITO AYUDA!! Con respecto a un contador de una palabra en especifico!

Publicado por RENZO (1 intervención) el 27/12/2018 22:49:12
Buen dia, necesito una ayuda, necesito hacer el conteo de una sola palabra en una oracion, y no puedo hacerlo, si alguien puede ayudarme con este problema le agradecería mucho, en fin, aquí esta mi programa:


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
#include<iostream>
#include<conio.h>
#include<string.h>
using namespace std;
 
void pediroracion();
	int contandoUno(char *);
	char oracion[30];
 
int main(){
	pediroracion();
	cout<<"\nEl numero de repeticiones de la palabra 'uno' es: "<<contandoUno(oracion)<<endl;
 
	getch();
	return 0;
}
void pediroracion(){
	cout<<"Ponga la oracion: \n";
	cin.getline(oracion,30,'\n');
 
}
int contandoUno(char *uno){
	int cont=0;
	while(*uno){
		switch(*uno){
			case 'uno': cont++;//aqui si pongo 'u' si cuenta... pedo si en la oracion hayotras palabras aparte de'uno' el conteo estaria mal.
		}
		uno++;
	}
	return cont;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
1
Responder
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++

NECESITO AYUDA!! Con respecto a un contador de una palabra en especifico!

Publicado por Martín (158 intervenciones) el 28/12/2018 00:07:20
Una forma de hacerlo (con un compilador actual), que podrás adaptar para compiladores más viejos:

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
36
37
38
#include <iostream>
#include <sstream>
#include <string>
#include <string_view>
 
std::string pedirOracion()
{
    std::string oracion{};
    std::cout << "Ponga la oracion: ";
    std::getline(std::cin, oracion);
    return oracion;
}
 
size_t contarPalabra(const std::string& oracion, std::string_view aContar)
{
    std::stringstream listaPalabras{ oracion };
    size_t cont{};
    std::string palabra;
 
    while (listaPalabras >> palabra) {
        if (palabra == aContar) {
            ++cont;
        }
    }
    return cont;
}
 
 
int main()
{
    using namespace std::string_view_literals;
    constexpr std::string_view aContar = "uno"sv;
 
    auto oracion = pedirOracion();
    std::cout << "El numero de repeticiones de la palabra '" << aContar << "' es: "
        << contarPalabra(oracion, aContar) << '\n';
 
}

Martín (el profe de C++)
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
Imágen de perfil de Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

NECESITO AYUDA!! Con respecto a un contador de una palabra en especifico!

Publicado por Alfil (1444 intervenciones) el 28/12/2018 09:34:26
Éste código es mejorable pero probablemente es lo que espera tu profesor.

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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include <iostream>
#include <cctype>
#include <cstring>
 
using std::cout;
using std::cin;
using std::endl;
 
const char Buscada[4] = "uno";
 
int ContarPalabra( const char v[] );
 
int main ()
{
  char oracion[30];
 
  cout << "Introduce una oracióm:\n";
  cin.getline( oracion, 30 );
 
  cout << "\nLa palabra " << Buscada << " se repite "
       << ContarPalabra( oracion ) << " veces." << endl;
 
 
  return 0;
}
 
int ContarPalabra( const char v[] )
{
    int n = 0, j;
 
    // descartar blancos finales
    j = strlen(v);
    while (j > 0 && v[j - 1] == ' ') {
        j--;
    }
 
    for (int i = 0; i < j; i++ ) {
        if ( i == 0 && v[i] == ' ' )
            continue;
        if ( i == 0 && j == 3) {
            if ( tolower(v[i]) == Buscada[0]&&
                    tolower(v[i+1]) == Buscada[1] &&
                    tolower(v[i+2]) == Buscada[2])
                n++;
 
 
         } else if ( i == 0 && j > 3)   {
            if ( tolower(v[i]) == Buscada[0]&&
                    tolower(v[i+1]) == Buscada[1] &&
                    tolower(v[i+2]) == Buscada[2] &&
                    ( v[i+3] == ' ' or ispunct(v[i+3]) ) )
                n++;
 
         } else if ( i > 0 && i < j-3)   {
            if ( ( v[i-1] == ' ' or ispunct(v[i-1]) ) &&
                    tolower(v[i]) == Buscada[0]&&
                    tolower(v[i+1]) == Buscada[1] &&
                    tolower(v[i+2]) == Buscada[2] &&
                    ( v[i+3] == ' ' or ispunct(v[i+3]) ) )
                n++;
 
        } else {
            if ( ( v[i-1] == ' ' or ispunct(v[i-1]) ) &&
                    tolower(v[i]) == Buscada[0]&&
                    tolower(v[i+1]) == Buscada[1] &&
                    tolower(v[i+2]) == Buscada[2] )
                n++;
 
        }
 
    }
 
    return n;
}
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
Imágen de perfil de Jean Pierre
Val: 149
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

NECESITO AYUDA!! Con respecto a un contador de una palabra en especifico!

Publicado por Jean Pierre (45 intervenciones) el 28/12/2018 23:23:58
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
#include <iostream>
using namespace std;
 
string palabra = "que", texto = "hola que hace que hace aqui que hace que";
 
size_t pos = texto.find(palabra);
int veces = 0;
 
void func()
{
    pos = texto.find(palabra);
 
    if(pos != string::npos){
        veces++;
        texto.erase(pos, 4);
        func();
    }else cout << "se repite " << veces;
}
 
int main() {
 
     func();
 
    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
1
Comentar
Imágen de perfil de Alfil
Val: 4.344
Oro
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

NECESITO AYUDA!! Con respecto a un contador de una palabra en especifico!

Publicado por Alfil (1444 intervenciones) el 29/12/2018 12:06:27
Esta muy bien tu código pero le veo un problema, a ver si lo puedes solventar, ante el texto “queso quebrado quemado” cuenta 3 palabras “que”, cuando palabras como tal no hay ninguna.
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
Imágen de perfil de Jean Pierre
Val: 149
Ha mantenido su posición en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

NECESITO AYUDA!! Con respecto a un contador de una palabra en especifico!

Publicado por Jean Pierre (45 intervenciones) el 29/12/2018 13:33:00
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
#include <iostream>
using namespace std;
 
string palabra = "que", texto = "que queso quebrado quemado que quebrado elque";
size_t pos;
int veces = 0;
 
void func()
{
    pos = texto.find(palabra);
 
    if(pos != string::npos){
        if(texto[pos+3] == ' '){
            veces++;
            texto.erase(pos, 4);
 
            func();
        }else{
            if(pos+3 == texto.length() && texto[pos-1] == ' ') veces++;
 
            texto.erase(pos, 3);
            func();
        }
    }else cout << (veces > 0 ? "se repite: " + to_string(veces) : "no se repite");
}
 
int main()
{
    func();
    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
1
Comentar