quisiera que me ayuden en este problema... ahi el link
http://www.imagebam.com/image/a4ecdb550354324
gracias
No se hacen tareas, se orienta...
¿Dónde está el código de lo que llevas hecho?, para que vemos donde te pierdes...
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;
}
}
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
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.
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
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...
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,
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?
Cita de: NEBIRE en 25 Mayo 2017, 23:28 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?
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).