contar letras de un texto

Iniciado por ALONSOQ, 2 Julio 2012, 12:27 PM

0 Miembros y 3 Visitantes están viendo este tema.

ALONSOQ

Gracias a los dos,

Pero el problema no es ese exactamente, pues el programa ha de contar todas y cada una de las letras. Ejemplo salida, para la palabra foro; f:1;   o:2;  r:1

un saludo

DickGumshoe

¿Has probado con esto que dije?

Citar
A mí se me ocurre lo siguiente:

Podrías crear una cadena auxiliar, en la que copiaras el contenido de la cadena de caracteres que quieres contar el número de veces que aparece cada letra.

Con un bucle for anidado, vas comprobando el primer carácter con todos los demás de la cadena, y en caso de coincidir, aumentas el el contador de dicha letra en uno. Además, si coinciden, sustituyes en la cadena auxiliar dicho carácter por un espacio, para que cuando el bucle for llegue a dicho carácter no tengas que contar letras.

Espero haberme expresado bien...

Saludos.

Sino, te lo intento explicar mejor.

Saludos.

0xDani

Yo creo que con lo que te hemos dejado, te puedes hacer el resto del codigo.

Saludos.
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

ALONSOQ

Lo he modificado tratando de escribir según me indicas. Lo siento pero a pesar de que intento pasarlo al lenguaje del ordenador lo más que consigo es lo que he modificado

un saludo

0xDani

conio.h sobra, ya te lo he dicho. Y podrias crear una matriz con todas las letras del abecedario y luego ir comparando, o algo asi. Yo creo que con lo que te hemos dado no es muy dificil hacer el resto.

Saludos.
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

DickGumshoe

Inténtalo, y te ayudamos a partir de lo que pongas  :)

BlackZeroX


Código (cpp) [Seleccionar]


#include <iostream>
#include <algorithm>
#include <map>
#include <string>

using std::cout;
using std::endl;
using std::cin;
using std::string;
using std::map;
using std::sort;

int main() {     // ==============
    string cadena;
    map<char, size_t> contador;
    register map<char, size_t>::iterator it;

    cout << "ingresa el texto: ";
    cin >> cadena;
    cout << endl;
    cout << "Longitud: " << cadena.length() << endl;

    for (register size_t i = 0; i < cadena.length(); i++) {
        contador[cadena[i]]++;
    }

    cout << "Caracter.\tRepeticiones." << endl;
    for (it = contador.begin(); it != contador.end(); ++it) {
         cout << (*it).first << "\t" << (*it).second << endl;
    }

    con.get();  //  Pausamos
   
    return 0;
}



Dulces Lunas!¡.
The Dark Shadow is my passion.

Flamer

hola ALONSOQ tengo años que no manejo c++, yo puro vb6 y no lo tengo instalado el c++ en mi pc pero tedejo este codigo aver si tesirve me base en el codigo que pusiero los demas compañeros:

char Caracter;
char Cadena[256];
int contador=0;

printf("Introduce la cadena...")
gets(Cadena);

int Cadena_largo=strlen(cadena);

for(int x=0;x<Cadena_largo;x++)
{
   Caracter=Cadena[x];
   for(int y=0;y<Cadena_largo;y++)
   {
       if (Cadena[y]==Caracter)
       {
          Contador++;
       }
   }
  printf("La Letra ",Caracter," Se Repitio ",Contador," veces...");
  Contador=0;
}
return 0;


corrijanme si estoy mal llaque no esta compilado.
y si es eso lo que quieres

saludos flamer

SXF

Hay va otrp  supercensillo de entender :P.Para que te hagas una idea.

#include <string.h>
#include <ctype.h>
#include <stdio.h>

int main(){
char cadena[30];
char letra[30];
int count=0;
strcpy(cadena,"hola mundo");
strcpy(letra,"hola");
for(int j=0; j<4; j++){
  if(cadena[j]==letra[j])count++;
}
printf("La letra aparece %d veces", count);
scanf("%d");
return 0;
}


ALONSOQ

Cita de: BlackZeroX (Astaroth) en  2 Julio 2012, 21:17 PM
Código (cpp) [Seleccionar]


#include <iostream>
#include <algorithm>
#include <map>
#include <string>

using std::cout;
using std::endl;
using std::cin;
using std::string;
using std::map;
using std::sort;

int main() {     // ==============
    string cadena;
    map<char, size_t> contador;
    register map<char, size_t>::iterator it;

    cout << "ingresa el texto: ";
    cin >> cadena;
    cout << endl;
    cout << "Longitud: " << cadena.length() << endl;

    for (register size_t i = 0; i < cadena.length(); i++) {
        contador[cadena[i]]++;
    }

    cout << "Caracter.\tRepeticiones." << endl;
    for (it = contador.begin(); it != contador.end(); ++it) {
         cout << (*it).first << "\t" << (*it).second << endl;
    }

    con.get();  //  Pausamos
   
    return 0;
}



Dulces Lunas!¡.

BlackceroX,

Podrías ponerlo en C; no entiendo nada. Modifico lo que he estado haciendo ( lo cambio en el primer mensaje a ver que te parece)

mil gracias