ayuda / algoritmo para calcular el numero de veces que una cifra se repite

Iniciado por emanuek, 25 Mayo 2017, 22:38 PM

0 Miembros y 1 Visitante están viendo este tema.

emanuek

quisiera que me ayuden en este problema... ahi el link

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

gracias

Serapis

No se hacen tareas, se orienta...
¿Dónde está el código de lo que llevas hecho?, para que vemos donde te pierdes...

emanuek

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;
   }
}

emanuek

Cita de: NEBIRE 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...


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

MAFUS

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.

emanuek

Cita de: 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.

el problema es como puedo contar esos caracteres

Serapis

Es muy sencillo...verás..

Si tienes que contar 'bicis', usas un contador:
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:


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...

emanuek

Cita de: NEBIRE en 25 Mayo 2017, 23:19 PM
Es muy sencillo...verás..

Si tienes que contar 'bicis', usas un contador:
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:


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,

Serapis

Te lo he puesto en pseudocodigo...

bucle Mientras ---> es el bucle While

emanuek

#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?