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.
doar ca, Vector cel mai probabil bate la ochi, mai trebuie adjustat codul defapt.
#include <iostream>
#include <vector>
using namespace std;
vector<int> gaseste_pereche(int n, vector<int> sir) {
// Initializam un vector de perechi cu valori -1
vector<int> perechi(n, -1);
// Parcurgem sirul de numere
for (int i = 0; i < n; i++) {
// Verificam daca numarul se afla pe o pozitie pară sau impară
if (i % 2 == 0) {
// Numarul se afla pe o pozitie pară, deci trebuie sa parcurgem sirul din stânga pentru a gasi perechea
int minim = INT_MAX;
for (int j = i-1; j >= 0; j--) {
if (sir[j] > sir[i] && sir[j] < minim) {
minim = sir[j];
perechi[i] = minim;
}
}
} else {
// Numarul se afla pe o pozitie impară, deci trebuie sa parcurgem sirul din dreapta pentru a gasi perechea
int minim = INT_MAX;
for (int j = i+1; j < n; j++) {
if (sir[j] > sir[i] && sir[j] < minim) {
minim = sir[j];
perechi[i] = minim;
}
}
}
}
// Returnam vectorul de perechi
return perechi;
}
int main() {
// Testam functia
vector<int> sir = gaseste_pereche(5, {1, 3, 6, 2, 4});
for (int i = 0; i < sir.size(); i++) {
cout << sir[i] << " ";
}
cout << endl; // Ar trebui sa afiseze 3 6 -1 4 -1
return 0;
}
Edit 2, i-am spus ca a dat gresit, si a adjustat
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
vector<int> gaseste_pereche(int n, vector<int> sir) {
// Initializam un vector de perechi cu valori -1
vector<int> perechi(n, -1);
// Initializam o stiva pentru a memora numerele mai mari decât numarul curent
stack<int> stiva;
// Parcurgem sirul de numere
for (int i = 0; i < n; i++) {
// Daca stiva este goala sau numarul curent este mai mic decât ultimul numar din stiva, il adaugam la stiva
if (stiva.empty() || sir[i] < stiva.top()) {
stiva.push(sir[i]);
} else {
// Numarul curent este mai mare decât ultimul numar din stiva, deci il scoatem din stiva până când gasim un numar mai mare decât numarul curent, care va fi perechea numarului curent
while (!stiva.empty() && stiva.top() < sir[i]) {
perechi[stiva.top()] = sir[i];
stiva.pop();
}
stiva.push(sir[i]);
}
}
// Returnam vectorul de perechi
return perechi;
}
int main() {
// Testam functia
vector<int> sir = gaseste_pereche(7, {24, 248, 456, 0, 35, 74, 554});
for (int i = 0; i < sir.size(); i++) {
cout << sir[i] << " ";
}
cout << endl; // Ar trebui sa afiseze 35 -1 554 24 74 248 -1
}
Nu era destul Photomath, acum mai exista si ChatGPT
Eu daca as fi profesor sau un elev chiar bun cred ca as innebuni, daca inveti ceva in plus o sa para ca folosesti ChatGPT/AI/Photomath, daca nu inveti ci copiezi iarasi se vede de la o posta ca nu e codul tau. Ca si profesor trebuie sa tii minte stilul fiecarui elev ca sa iti dai seama daca a folosit ceva aplicatie pentru teme/test sau nu.
Salutare !
Multumesc pentru ajutor , am o problema in cod , si nu stiu cum as putea sa o rezolv "
prog.cpp: In function 'int main()':
prog.cpp:28:21: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
for (int i = 0; i < sir.size(); i++) {