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

In limbajul C++, sa se afiseze intersectia a doi vectori stfel inact numerele sa se repete o singura data (daca in ambii vectori se gaseste acelasi numar, atunci in vectorul rezultata se va afisa o singura data)
Ce este in neregula cu urmatorul cod?

#include
using namespace std;
int main(){
ifstream fin("in");
ofstream fout ("out");
long long int v[100000], n, w[100000], m, c[100000], p=0;
fin >> n;
for (int i = 0; i< n; i++)
fin >> v[i];
fin >> m;
for ( int i =0; i< m; i++)
fin >> w[i];
for (int i = 0; i< n; i++)
{
bool gasit= false;
for (int j= 0; j if ( v[i] == w[j])
{

gasit = true;
break;
}
if (gasit)
c[p++] = v[i++];
}
for (int i = 0; i< p; i++)
fout << c[i] << " ";


fin.close();
fout.close();

return 0;}

Răspunsuri la întrebare

Răspuns de Zlatan
1

Răspuns:

Explicație: c[p++] = v[i], nu v[i++]. Variabila din bucla for se incrementează și la final. Pentru ce o incrementezi de 2 ori? Ca să sari peste unele din elementele vectorului? Al doilea for este incomplet. Se scrie for(j = 0; j < m; j++).

Alte întrebări interesante