Publicidad

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.

Los primeros N términos de la siguiente serie : 1,2,2,3,3,3,4,4,4,4,5,5,5,5,5 - Programación - serie númerica - ilustración (Ney)

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

Publicidad

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){
      //combertir 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 dejalo en los comentarios, para que pueda rectificar el ejercicio.

Publicidad