
Contar el número de pasos de un bucle en C++
Publicado por Carles (2 intervenciones) el 18/10/2017 21:05:40
Hola, me piden un problema en C++ que me cuente el número de pasos hechos en un bucle.
Os dejo el enunciado:
Sea n cualquier natural estrictamente positivo. Considerad el siguiente proceso: Si n es par, divididlo por dos. De lo contrario, multiplicad n por 3 y sumadle 1. Cuando llegue a 1, que pare. Por ejemplo, comenzando en 3, se obtiene la secuencia: 3, 10, 5, 16, 8, 4, 2, 1. En este problema no os pedirá una demostración, sólo que se haga un programa que escriba cuantos pasos tarda en llegar a 1 cada n dada
Salida: Para cada n, escribid cuántos pasos se tarda en llegar a 1. Suponed que este número está bien definido, es decir, que la conjetura del enunciado es cierta.
Yo he hecho este programa, que funciona por lo que se refiere al proceso, pero lo que no tengo claro es CÓMO PUEDO CONTAR LOS PASOS QUE HA HECHO EL BUCLE. Es decir, en el caso de 3, que es el ejemplo, ponen que se han hecho 7 pasos. (es decir, todos los números que hay menos el uno). Os agradecería si me pudiérais explicar un poco cómo hacerlo. Gracias !!! Ah, las cout << n << endl; sobran, no hay que ponerlas pero yo las he puesto por probar si iba la serie
#include <iostream>
using namespace std;
int main() {
int n;
while (cin >> n) {
while (n != 1) {
if (n%2 == 0) {
n = n/2;
cout << n << endl;
}
else {
n = 3*n+1;
cout << n << endl;
}
}
}
}
Os dejo el enunciado:
Sea n cualquier natural estrictamente positivo. Considerad el siguiente proceso: Si n es par, divididlo por dos. De lo contrario, multiplicad n por 3 y sumadle 1. Cuando llegue a 1, que pare. Por ejemplo, comenzando en 3, se obtiene la secuencia: 3, 10, 5, 16, 8, 4, 2, 1. En este problema no os pedirá una demostración, sólo que se haga un programa que escriba cuantos pasos tarda en llegar a 1 cada n dada
Salida: Para cada n, escribid cuántos pasos se tarda en llegar a 1. Suponed que este número está bien definido, es decir, que la conjetura del enunciado es cierta.
Yo he hecho este programa, que funciona por lo que se refiere al proceso, pero lo que no tengo claro es CÓMO PUEDO CONTAR LOS PASOS QUE HA HECHO EL BUCLE. Es decir, en el caso de 3, que es el ejemplo, ponen que se han hecho 7 pasos. (es decir, todos los números que hay menos el uno). Os agradecería si me pudiérais explicar un poco cómo hacerlo. Gracias !!! Ah, las cout << n << endl; sobran, no hay que ponerlas pero yo las he puesto por probar si iba la serie
#include <iostream>
using namespace std;
int main() {
int n;
while (cin >> n) {
while (n != 1) {
if (n%2 == 0) {
n = n/2;
cout << n << endl;
}
else {
n = 3*n+1;
cout << n << endl;
}
}
}
}
Valora esta pregunta


0