Problema:
Generar y mostrar los primeros N términos de la siguiente serie : 1,2,2,3,3,3,4,4,4,4,5,5,5,5,5.
Solución:
N es la cantidad de términos que va a generar, independientemente de que cada termino sera repetido cuantas veces sea su valor.
Entonces :
Si N es igual a 1 Mostraremos 1
Si N es igual a 2 Mostraremos 1,2
Si N es igual a 3 Mostraremos 1,2,2
Si N es igual a 4 Mostraremos 1,2,2,3
Si N es igual a 5 Mostraremos 1,2,2,3,3 y así sucesivamente.
Para generar la repetición de los términos utilizaremos 2 variables n1 y n2, donde ambas comienzan valiendo 1, luego mientras una disminuye hasta volverse 0 la otra puede mostrar su valor porque n1 aun no es igual a 0; pero cuando llega a valer 0, n2 incrementa en 1 y n1 toma el valor de n2.
Ejemplo:
n1=1
n2=1
Si n1 no es igual a cero mostramos n2=1
n1=n1-1
n1=0
n1 igual a cero entonces:
n2=n2+1
n2=1+1
n2=2
n1=n2
n1=2
Si n1 no es igual a cero mostramos n2=2
n1=n1-1
n1=2-1
n1=1
Si n1 no es igual a 0 mostramos n2=2
n1=n1-1
n1=1-1
n1=0
n1 igual a cero entonces:
n2=n2+1
n2=2+1
n2=3
n1=n2
n1=3…. etc.
Puede que la explicación no hay quedado clara, así que les dejo el Pseudocódigo y más abajo el código completo escrito en c++.
Pseudocódigo de la serie:
- n es el valor ingresado por el usuario.
- serie es una variable de tipo string donde concatenaremos todos los términos.
- n1 variable que nos indica cuantas veces se repetirá n2.
- n2 es la variable que inicialmente contendrá un termino antes de ser concatenado.
pedir -> n serie = ""; n1=1; n2=1; while(n1<=n){ while(n1>0){ //convertir n2 a string serie = serie+n2+","; n1=n1-1; } n2=n2+1; n1=n2; n=n-1; } mostrar -> serie;
Serie escrita en c++:
#include <iostream> #include <string> using namespace std; int main(){ int n,n1,n2; string serie =""; cout<< "por favor ingrese un número: "; cin>>n; n1=1; n2=1; while(n1<=n){ while(n1>0){ serie = serie+to_string(n2)+","; n1=n1-1; } n2=n2+1; n1=n2; n=n-1; } cout<< serie; cout <<"\n"<<endl; return 0; }
Si encuentras algún error por favor déjalo en los comentarios, para que pueda rectificar el ejercicio.