Introducción:
Otro ejercicio de programación, la verdad es que este tipo de ejercicios se me dificultan más, ya que es complicado explicarlo para mi, aun así intentare hacerlo.
Problema:
Generar y mostrar los primeros N términos de la siguiente serie: 1,1,2,1,2,3,1,2,3,4,1,2,34,5,1
Solución:
Primera parte:
Podemos definir la cantidad de términos que retornaría, si N tomara el valor de:
N=7
Retorna: 1,1,2,1,2,3,1
N=13
Retorna: 1,1,2,1,2,3,1,2,3,4,1,2,3
N=4
Retorna: 1,1,2,1
N=8
Retorna: 1,1,2,1,2,3,1,2
Bueno, ya tenemos claro que cantidad de términos retornaran en algunos casos. Ahora podemos enfocarnos en la secuencia de la serie.
Segunda parte:
Como podemos observar, la se secuencia inicialmente tiene como valor máximo a uno, la siguiente vez su valor máximo es dos por ende va del uno al dos, la tercera vez el valor máximo es tres y va incrementando del uno al tres; pero no es su valor máximo el que determina hasta que número va a retornar ya que el incremento de la serie puede cortarse de manera abrupta en el momento en que N sea igual a cero.
Explicando esto de otra manera podemos suponer que N=3 entonces la serie se comportaría así:
Primera tanda:
N=3
max=1
i=1
N es mayor que 0 —>si
Mostrar i
i incrementa en 1 y ahora vale 2
i es mayor que max —>si
entonces i vale 1 y max incrementa en 1 y vale 2
N decrementa en 1 y vale 2
Segunda tanda:
N=2
max=2
i=1
N es mayor que 0 —>si
Mostrar i
i incrementa en 1 y ahora vale 2
i es mayor que max —>no
N decrementa en 1 y vale 1
Tercera tanda:
N=1
max=2
i=2
N es mayor que 0 —>si
Mostrar i
i incrementa en 1 y ahora vale 3
i es mayor que max —>si
entonces i vale 1 y max incrementa en 1 y vale 3
N decrementa en 1 y vale 0
Cuarta Tanda:
N=0
max=3
i=1
N es mayor que 0 —>no
entonces se cierra el proceso y termina.
Otra manera de poder mostrarles el proceso es en pseudocódigo.
Donde:
- N es la cantidad de términos a mostrar.
- i es la variable que va incrementando y reinicia su valor.
- max indica el limite del incremento de i.
variables inicializadas N->Valor dado por el usuario max=1 i=1 while(N>0){ Mostrar i i=i+1; if(i>max){ i=1; max=max+1; } N=N-1; } return 0; }
Para ver que el código funciona aquí se los dejo escrito en c++, con la variante de que en lugar de mostrar directamente el termino una vez generado, lo concatena en otra variable para verlo de forma más ordenada y en fila.
Las variables serán las mismas que en el pseudocódigo código.
#include <iostream> #include <string> using namespace std; int main(){ int N,i,max; string serie =""; cout<< "por favor ingrese un número: "; cin>>N; i=1; max=1; while(N>0){ serie=serie+to_string(i)+","; i=i+1; if(i>max){ i=1; max=max+1; } N=N-1; } cout<< serie; cout <<"\n"<<endl; return 0; }
Si encuentras algún error por favor dejalo en los comentarios, para que pueda rectificar el ejercicio.