👤

va rog
Scrieţi un program C/C++, care citeşte de la tastatură un număr natural n (n≤1000) şi
afişează pe ecran, separaţi prin câte un spaţiu, primii n termeni ai şirului:
1, 2,1, 3,2,1, 4,3,2,1, ...
construit astfel: prima grupă este formată din numărul 1, a doua grupă este formată din
numerele 2 şi 1, etc. Grupa a k-a, este formată din numerele k, k-1,..., 1.
Exemplu: pentru n=8 se vor afişa valorile 1 2 1 3 2 1 4 3.
multumesc


Răspuns :

Răspuns:

#include <iostream>

using namespace std;

int n, num, g, s;

int main()

{

   cout << "n= "; cin >> n;

   cout << "sirul creat cu n termeni: " << endl;

   g=1; s=0;

   while (s+g<n)

   {

       for (num=g; num>0; --num)

           cout << num << " ";

       s=s+g; ++g;

   }

   int dif=n-s;

   num=g;

   for (int i=1; i<=dif; ++i)

       cout << num-- << " ";

   return 0;

}

Explicație:

conform enunţului şirul e foemat din grupuri:

(1)(21)(321)(4321)(54321)...

variabila n reprezintă nr. de termeni ai şirului, dacă n=10, atunci avem toţi termenii din patru grupe (1+2+3+4=10, în primul grup este 1 număr, în al doilea 2 numere, în al treilea 3 numere şi în al patrulea 4 numere)

Folosesc variabila s care face suma sirului Gauss şi variabila g ce reprezintă grupul

variabila num e de lucru. În caz că s+g e mai mare ca n atunci folosesc variabila dif pentru a vedea câţi termeni din următorul grup au rămas de afişat.

Vă mulțumim pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile prezentate v-au fost utile. Dacă aveți întrebări suplimentare sau nevoie de ajutor, vă rugăm să ne contactați cu încredere. Așteptăm cu drag să reveniți și nu uitați să ne salvați în lista dumneavoastră de favorite!


En Studentsy: Alte intrebari