Publicidad

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,1primeros N términos de la siguiente serie: 1,1,2,1,2,3,1,2,3,4,1,2,34,5,1 - Programación basica - Series númericas - ilustración (Ney)

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í:

Publicidad

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.

Publicidad