👤

Scrieți un program C/C++ care citește de la tastatură două numere naturale, n și k, (n∈[2,20], k∈[1,n]), și construiește în memorie un tablou unidimensional cu n elemente, având proprietățile: • al k-lea element are valoarea n; • începând cu al k-lea element, spre stânga, elementele formează un șir strict descrescător de numere consecutive, iar începând cu al k-lea element, spre dreapta, elementele formează tot un șir strict descrescător de numere consecutive. Programul afișează pe ecran tabloul construit, cu elementele separate prin câte un spațiu. Exemplu: dacă n=10 și k=3 se afișează pe ecran tabloul 8 9 10 9 8 7 6 5 4 3

Răspuns :

Răspuns:

Desigur! Iată un program C++ care îndeplinește cerințele tale:

```cpp

#include <iostream>

#include <vector>

using namespace std;

int main() {

int n, k;

cout << "Introduceti doua numere naturale, n si k: ";

cin >> n >> k;

// Verificarea intervalului pentru n si k

if (n < 2 || n > 20 || k < 1 || k > n) {

cout << "Valorile introduse nu sunt in intervalele permise." << endl;

return 1;

}

// Construirea tabloului unidimensional

vector<int> tablou(n);

// Setarea valorii pentru al k-lea element

tablou[k-1] = n;

// Completarea elementelor spre stânga de la k-1

for (int i = k-2; i >= 0; --i) {

tablou[i] = tablou[i+1] - 1;

}

// Completarea elementelor spre dreapta de la k-1

for (int i = k; i < n; ++i) {

tablou[i] = tablou[i-1] - 1;

}

// Afișarea tabloului construit

for (int i = 0; i < n; ++i) {

cout << tablou[i] << " ";

}

cout << endl;

return 0;

}

```

### Explicații:

1. **Citirea numerelor n și k**:

```cpp

cin >> n >> k;

```

2. **Verificarea intervalelor**:

- Programul verifică dacă n și k se încadrează în intervalele specificate, iar dacă nu, afișează un mesaj de eroare și se oprește.

3. **Construirea tabloului**:

- Se creează un vector `tablou` cu n elemente.

- Al k-lea element (indexul k-1) este setat la n.

- Elemente din stânga al k-lea element sunt setate într-un șir strict descrescător.

- Elemente din dreapta al k-lea element sunt setate într-un șir strict descrescător.

4. **Afișarea tabloului**:

- Elemente din tablou sunt afișate cu un spațiu între ele.

Acest program ar trebui să rezolve problema specificată și să genereze tabloul corect pentru valorile date de n și k. De exemplu, pentru n=10 și k=3, outputul va fi `8 9 10 9 8 7 6 5 4 3`.