Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: emanuek en 25 Mayo 2017, 22:38 pm



Título: ayuda / algoritmo para calcular el numero de veces que una cifra se repite
Publicado por: emanuek en 25 Mayo 2017, 22:38 pm
quisiera que me ayuden en este problema... ahi el link

http://www.imagebam.com/image/a4ecdb550354324

gracias


Título: Re: ayuda / algoritmo para calcular el numero de veces que una cifra se repite
Publicado por: Serapis en 25 Mayo 2017, 22:56 pm
No se hacen tareas, se orienta...
¿Dónde está el código de lo que llevas hecho?, para que vemos donde te pierdes...


Título: Re: ayuda / algoritmo para calcular el numero de veces que una cifra se repite
Publicado por: emanuek en 25 Mayo 2017, 23:02 pm
no es tarea amigo, es un examen que tuve, aqui esta una parte

#include<iostream>
using namespace std;
main()
{
    int a,i;
    cin>>n;
    for(int i=0;i<=10;i++)
    {
        cout<<i<<" se repite "<<a<<" veces"<<endl;
    }
}


Título: Re: ayuda / algoritmo para calcular el numero de veces que una cifra se repite
Publicado por: emanuek en 25 Mayo 2017, 23:04 pm
No se hacen tareas, se orienta...
¿Dónde está el código de lo que llevas hecho?, para que vemos donde te pierdes...


lo que no se es como determinar las repeticiones de las cifras


Título: Re: ayuda / algoritmo para calcular el numero de veces que una cifra se repite
Publicado por: MAFUS en 25 Mayo 2017, 23:07 pm
Bueno, el enunciado no dice que internamente se deba tratar como un entero. Así que solo debes asegurarte de que todos los caracteres sean números y contarlos.


Título: Re: ayuda / algoritmo para calcular el numero de veces que una cifra se repite
Publicado por: emanuek en 25 Mayo 2017, 23:10 pm
Bueno, el enunciado no dice que internamente se deba tratar como un entero. Así que solo debes asegurarte de que todos los caracteres sean números y contarlos.

el problema es como puedo contar esos caracteres


Título: Re: ayuda / algoritmo para calcular el numero de veces que una cifra se repite
Publicado por: Serapis en 25 Mayo 2017, 23:19 pm
Es muy sencillo...verás..

Si tienes que contar 'bicis', usas un contador:
Código:
Entero NumBicis
que incrementas cada vez que cuentas una...

Pero y si necesitas llevar la cuenta de varias cosas distintas?... usas un array como contador...
En tu caso si quieres contar cifras (o caracteres, que es lo mismo, solo cambia el enfoque).
Creas un array de 10 elementos, en el índice 0, llevas la cuenta de aparición de cada cifra 0, en el índice 1, la cuenta de aparición de la cifra 1, etc...

Luego, la función, si operas desde un valor numérico, sería tan simple como esto:

Código:
Function ContarPresenciaDecifras(entero Valor)
    Crear array de 10 elementos
    Bucle mientras Valor mayor o igual que 0
       cifra  = (valor mod 10)
       Array(cifra) +=1
       valor = (valor \ 10) // una división entera, no necesitamos decimales
       Si valor es menor que 10 luego  //cuando solo queda una cifra...
          Array(valor) +=1
          Valor = -1 //fuerza la salida del bucle
       Fin si
    Fin bucle

   // falta presentar los datos, para ello:
    // 1 - puedes devolver el array desde la función, (mejor si no la función es mejor cambiarla de nombre)
   // 2 - Puedes presentarlos desde aquí, no es lo mejor para un código elegante, si para algo sencillo.
Fin funcion

Si operas con una cadena de texto, la obtención de las cifras varía ligeramente, pero la cuenta es casi idéntica.

Espero que para la presentación de los datos puedas manejarte solo...

p.d.: OJO: En la función que te pongo, si el valor recibido es 0, se contará dos veces... queda a tu criterio como solucionarlo...


Título: Re: ayuda / algoritmo para calcular el numero de veces que una cifra se repite
Publicado por: emanuek en 25 Mayo 2017, 23:24 pm
Es muy sencillo...verás..

Si tienes que contar 'bicis', usas un contador:
Código:
Entero NumBicis
que incrementas cada vez que cuentas una...

Pero y si necesitas llevar la cuenta de varias cosas distintas?... usas un array como contador...
En tu caso si quieres contar cifras (o caracteres, que es lo mismo, solo cambia el enfoque).
Creas un array de 10 elementos, en el índice 0, llevas la cuenta de aparición de cada cifra 0, en el índice 1, la cuenta de aparición de la cifra 1, etc...

Luego, la función, si operas desde un valor numérico, sería tan simple como esto:

Código:
Function ContarPresenciaDecifras(entero Valor)
    Crear array de 10 elementos
    Bucle mientras Valor > 0
       cifra  = (valor mod 10)
       Array(cifra) +=1
       valor = (valor \ 10) // una división entera, no necesitamos decimales
       Si valor es menor que 10 luego  //cuando solo queda una cifra...
          Array(valor) +=1
          Valor = -1 //fuerza la salida del bucle
       Fin si
    Fin bucle
Fin funcion

Si operas con una cadena de texto, la obtención de las cifras varía ligeramente, pero la cuenta es casi idéntica.

Espero que para la presentación de los datos puedas manejarte solo...

gracias por la respuesta, pero ahora solo conozco un poco de while, y for , me gustaria hacer el programa con estas sentencias,


Título: Re: ayuda / algoritmo para calcular el numero de veces que una cifra se repite
Publicado por: Serapis en 25 Mayo 2017, 23:28 pm
Te lo he puesto en pseudocodigo...

bucle Mientras ---> es el bucle While


Título: Re: ayuda / algoritmo para calcular el numero de veces que una cifra se repite
Publicado por: emanuek en 25 Mayo 2017, 23:36 pm
#include<iostream>
using namespace std;
main()
{
    int valor,cifra;
    cin>>valor;
    while(valor>0)
    {cifra=valor/10;
    cifra=cifra+1;
    valor=valor/10;
    if(valor<10)
    {valor=valor+1
        valor=-1;}

    }
}

y luego?


Título: Re: ayuda / algoritmo para calcular el numero de veces que una cifra se repite
Publicado por: emanuek en 25 Mayo 2017, 23:44 pm
Te lo he puesto en pseudocodigo...

bucle Mientras ---> es el bucle While
#include<iostream>
using namespace std;
main()
{
    int valor,cifra;
    cin>>valor;
    while(valor>0)
    {cifra=valor/10;
    cifra=cifra+1;
    valor=valor/10;
    if(valor<10)
    {valor=valor+1
        valor=-1;}

    }
}
 y luego?


Título: Re: ayuda / algoritmo para calcular el numero de veces que una cifra se repite
Publicado por: Serapis en 25 Mayo 2017, 23:49 pm
No, tu implementación del código, no es correcta...
- Dónde está el array?.
- Dónde está la línea: Cifra = (valor módulo 10) ... 'C' tiene un operador llamado módulo, no lo conoces????.
- Dónde ves que incremente 'cifra'?
..lo que se incrementa es el enésimo indice (cuyo valor se recoge en 'cifra') en el array. MiArray(x) +=1 ...dónde x, es el índice, al mismo tiempo que la cifra recién hallada, por eso sirve de índice: MiArray(cifra) +=1
El mismo error lo vuelves a cometer dentro del condicional: valor=valor+1
Si no entiendes lo que está sucediendo, no serás capaz de 'traducirlo' a código...

Además, debes decidir si el array lo devuelves en la función. Bueno, viendo las complicaciones que tienes, mejor no, haz la presentación bajo el primer bucle.

La presentación será recorrer el mismo array y exponer el valor que contiene en cada índice. Pero de verdad, si esto tan simple no alcanzas a hacerlo tu mismo...  :silbar:

...por último, te señalaba (edité el mensaje más arriba), que si el valor del que se quieren contar sus cifras fuera 0, esta cifra, se contaría dos veces y que dejaba a tu ingenio solventar ese pequeño detalle (sugerencia: que tal con un if, antes del bucle while).