Informatică, întrebare adresată de jackoneill302, 8 ani în urmă

Salut ma puteti ajuta va rog cu problema aceasta de o saptamana incerc sa o rezolv si nu reusesc .
Cerință
Ți se dă un șir de n numere întregi, reprezentând pachetele trimise și un alt șir cu n - m numere întregi, reprezentând pachetele care au ajuns cu succes până la tine.

Elementele din cel de-al doilea șir NU vor fi în aceeași ordine ca și cele din primul. Totuși în cazul în care există mai multe pachete cu aceeași valoare, ele ajung în ordinea pozițiilor din șirul inițial.
În plus, toate valorile din al doilea șir se găsesc și în primul. Identifică elementele lipsă, ținând cont că ele nu sunt neapărat pe poziții consecutive în primul șir.
Date de intrare
Pe prima linie se vor găsi numerele n și m, separate printr-un spațiu, iar pe următoarele două linii elementele celor două șiruri.
Date de ieșire
Programul va afișa pe ecran, în ordinea în care apar în primul șir, separate prin câte un spațiu, cele m elemente care lipsesc din al doilea șir. Dacă nu s-au pierdut date între cele două șiruri, programul va afișa pe ecran mesajul Nu s-au pierdut date.
Precizări și restricții
1 ≤ n ≤ 1 200
0 ≤ m < n elementele din șir nu vor avea valori mai mari de 100 000, respectiv mai mici de - 100 000
Exemple
Date de intrare
7 3
12 34 45 29 100 87 32
100 87 12 34
Date de ieșire
45 29 32
#include

using namespace std;

int main()
{
int n, nrlipsa = 0, m,i , j , v[1201], w[1201];
cin >> n >> m;
for( i = 0; i < n; ++i){
cin >> v[i];
}
for( i = 0; i < n - m; ++i){
cin >> w[i];
}
for( i = 0; i < n; ++i){
nrlipsa = 1;
for( j = 0; j < n - m; ++j){
if (v[i] == w[j]){
nrlipsa = -1;
}
}
if (nrlipsa == 1){
cout << v[i] << " ";
}
}
if (m == 0)
cout <<"Nu s-au pierdut date";
return 0;
}
problema pe care o intampin este cand in siruri am elemente identice imi cer sa introduc inca o data sirul iar dupa imi afieza rezultatul corect.
exemplu.
7 3
12 34 45 29 100 87 32
45 32 12
45 32 12 aici trebuie sa itroduc inca o data sirul, aici nu imi dau seama de ce trebuie asa indroduc inca o data sirul de la tastatura.
34 29 100 87


lucaciucandrei: mie imi merge codul tau perfect! esti sigur ca faci ceea ce trebuie?
jackoneill302: Salut ai incercat sa pui valori la fel in siruri ? acolo nu imi functioneza corect

Răspunsuri la întrebare

Răspuns de lucaciucandrei
6

INCEARCA ASTA

#include<iostream>

using namespace std;

int main() {

   int n, m, j, a[100001], b[100001];

   cin >> n >> m;

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

       cin >> a[i];

   for (j = 0; j < n - m; ++j)

       cin >> b[j];

   j = 0;

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

       if (a[i] == b[j])

           j++;

       else

           cout << a[i] << ' ';

   if (m == 0)

       cout << "Nu s-au pierdut date";

   return 0;

}

Alte întrebări interesante