Ayuda, no se tardan ni 10 min. Me urge!!!
necesito un programa donde se le introduzca texto y como resultado me diga cuantas letras y numeros contiene.
ejemplo:
A=14 0=3
B=4 1=2
. .
. .
. .
Z=0 9=1
espero me pueda alguien ayudar, el programa es para un amigo que esta estudiando mantenimiento industrial, pero le dieron la materia de programacion como de relleno y a el no le gusta nada de esto. yo se lo hiba a hacer pero por mas que me esfuerzo no creo aprender en una semana, ya estube leyendo un libro de C++ y si ya tengo la idea, pero aun tengo muchas dudas, espero comprendan, de antemano muchas gracias. MIL Gracias a Mirmidon por la ayuda pero me imagino que habra una forma mas corta.
ejemplo:
A=14 0=3
B=4 1=2
. .
. .
. .
Z=0 9=1
espero me pueda alguien ayudar, el programa es para un amigo que esta estudiando mantenimiento industrial, pero le dieron la materia de programacion como de relleno y a el no le gusta nada de esto. yo se lo hiba a hacer pero por mas que me esfuerzo no creo aprender en una semana, ya estube leyendo un libro de C++ y si ya tengo la idea, pero aun tengo muchas dudas, espero comprendan, de antemano muchas gracias. MIL Gracias a Mirmidon por la ayuda pero me imagino que habra una forma mas corta.
Hay otras soluciones, por supuesto. Pero más que decir que son más cortas se diría que son más elegantes. Pero se necesitan muchos más conceptos de programación. Y si no teneis mucha idea de este tema, yo os recomendaría la solución que ya os han dado.
Yo te voy a comentar como hacerlo con listas enlazadas.
class datos
{
char caracter ;
int cont;
}
class lista
{
datos un_dato;
lista *sig;
}
lista *ppio;
void insertar(lista **ppio, char caracter)
{
int insertar = 1;
lista *actual;
lista *ant;
lista elemen;
actual = *ppio;
ant = NULL;
elemen.un_dato.cont = 1;
elemen.sig = NULL;
while (actual)
{
if (actual->un_dato.caracter == caracter)
{
actual->un_dato.cont++;
insertar = 0;
}
} //while
if (insertar)
{
elemen->sig = actual;
if (!ant)
{
*ppio = elemen;
}
else
{
ant->sig=elemen;
}
} //if
} //insertar
void borrar(lista **ppio)
{
lista *actual;
lista *ant;
actual=*ppio;
ant = NULL;
while (actual)
{
ant=actual;
actual=actual->sig;
delete ant;
}
ppio = NULL;
return;
}
- Tienes que leer la cadena
- haz un bucle para recorrer la cadena y llamar a insertar con cada carácter de dicha cadena.
- Tienes que crearte otra función que recorra la lista y saque los datos. A esta función la llamas al término del bucle anterior.
- Antes de terminar el programa debes llamar a borrar() para liberar memoria.
comprobarás que aunque más bonito es bastante más complicado.
Yo te voy a comentar como hacerlo con listas enlazadas.
class datos
{
char caracter ;
int cont;
}
class lista
{
datos un_dato;
lista *sig;
}
lista *ppio;
void insertar(lista **ppio, char caracter)
{
int insertar = 1;
lista *actual;
lista *ant;
lista elemen;
actual = *ppio;
ant = NULL;
elemen.un_dato.cont = 1;
elemen.sig = NULL;
while (actual)
{
if (actual->un_dato.caracter == caracter)
{
actual->un_dato.cont++;
insertar = 0;
}
} //while
if (insertar)
{
elemen->sig = actual;
if (!ant)
{
*ppio = elemen;
}
else
{
ant->sig=elemen;
}
} //if
} //insertar
void borrar(lista **ppio)
{
lista *actual;
lista *ant;
actual=*ppio;
ant = NULL;
while (actual)
{
ant=actual;
actual=actual->sig;
delete ant;
}
ppio = NULL;
return;
}
- Tienes que leer la cadena
- haz un bucle para recorrer la cadena y llamar a insertar con cada carácter de dicha cadena.
- Tienes que crearte otra función que recorra la lista y saque los datos. A esta función la llamas al término del bucle anterior.
- Antes de terminar el programa debes llamar a borrar() para liberar memoria.
comprobarás que aunque más bonito es bastante más complicado.
