👤

Valoare Apropiata
Rezolvare in C++ cu if,else, while, for va rog, dau coroana
Pasiunea lui Cosmin pentru jocuri video l-a determinat să se apuce de programare, pentru a putea crea și el jocuri pentru alți oameni. După ce a lansat câteva aplicații simple pe Play Store, a construit un joc multiplayer.

Dinamica jocului e următoarea:

Fiecare jucător primește la început un cartonaș cu un șir de n numere naturale
Pentru a câștiga, jucătorul trebuie să identifice corect PERECHEA fiecărui număr din șirul de pe cartonașul său de joc.
O pereche a unei valori x din șirul de pe un cartonaș este un număr y care face parte din același șir și are următoarea proprietate:

dacă x se află pe poziție pară, y e minimul dintre numerele mai mari decât x care se găsesc în stânga lui x în șir
dacă x se află pe poziție impară, y e minimul dintre numerele mai mari decât x care se găsesc în dreapta lui x în șir
Date de intrare
Pe prima linie se va găsi un număr natural n, reprezentând numărul total de valori de pe un cartonaș, iar pe următoarea linie un șir de n numere naturale, reprezentând elementele șirului de numere de pe acel cartonaș.

Date de ieșire
Programul va afișa pe ecran un șir de n numere, reprezentând șirul de perechi corespunzătoare fiecărui element x din șir. Dacă există un număr x care nu are o astfel de pereche în șir, se va afișa valoarea -1 în locul perechii sale.

Restricții și precizări
0 < n ≤ 100
0 ≤ x ≤ 1 000


Răspuns :

#include <iostream>

using namespace std;

int main() {

int n;

int v[101];

//Citire vector

cin >> n;

for (int i = 1; i <= n; i++) cin >> v[i];

for (int px = 1; px <= n; px++) {

 //Daca e pozitie para

 if (px % 2 == 0) {

  //Cauta min dintre numerele mai mari din stanga

  int mn = -1;

  for (int py = 1; py < px; py++)

   if (v[py] > v[px] && (v[py] < mn || mn == -1)) mn = v[py];

  //Afiseaza solutie

  cout << mn << " ";

 }

 //Daca e pozitie impara

 else {

  //Cauta min dintre numerele mai mari din dreapta

  int mn = -1;

  for (int py = px + 1; py <= n; py++)

   if (v[py] > v[px] && (v[py] < mn || mn == -1)) mn = v[py];

  //Afiseaza solutie

  cout << mn << " ";

 }

}

}

NOTA :

Am modificat programul pentru inceperea sirului de la 1.

Vezi imaginea ANDREI750238
Vă mulțumim că ați ales să vizitați site-ul nostru dedicat Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări sau aveți nevoie de asistență suplimentară, vă rugăm să ne contactați. Revenirea dumneavoastră ne va bucura, iar pentru acces rapid, nu uitați să ne salvați la favorite!


En Trainingsy: Alte intrebari