Scrieţi definiţia completă a subprogramului C/C++ modificare, care are doi parametri, v şi n, prin care primeşte un tablou unidimensional cu maximum 10000 de numere naturale nenule şi, respectiv, numărul de elemente din tablou. Subprogramul rearanjează elementele tabloului astfel încât toate valorile prime să se afle pe primele poziţii, iar valorile care nu sunt prime, în continuarea celor prime.
Ordinea în cadrul ambelor secvenţe (numerele prime şi cele care nu sunt prime), poate fi oricare.
Răspunsuri la întrebare
Răspuns de
1
Salut! Ai mai jos subprogramul. E 100% testat si functioneaza perfect! Bafta!
void reorder( int * v, int n ){
int p1, p2;
p1 = 0;
p2 = n - 1;
while ( p1 <= p2 ) {
int d = 2;
while ( d * d <= v[p1] && v[p1] % d != 0 )
d ++;
if ( d * d > v[p1] && v[p1] >= 2 )
p1 ++;
else {
int aux = v[p2];
v[p2] = v[p1];
v[p1] = aux;
p2 --;
}
}
}
void reorder( int * v, int n ){
int p1, p2;
p1 = 0;
p2 = n - 1;
while ( p1 <= p2 ) {
int d = 2;
while ( d * d <= v[p1] && v[p1] % d != 0 )
d ++;
if ( d * d > v[p1] && v[p1] >= 2 )
p1 ++;
else {
int aux = v[p2];
v[p2] = v[p1];
v[p1] = aux;
p2 --;
}
}
}
Răspuns de
0
void modificare(int v[], int n)
{
int i, j, k1 = 0, k2 = 0, x, v1[10005], v2[10005];
bool prim;
for(j = 0; j < n; j ++)
{
x = v[j];
prim = true;
for (i = 2; i * i <= x; i ++)
if(x % i == 0)
{
prim = false;
break;
}
if(prim) v1[k1 ++] = x;
else v2[k2 ++] = x;
}
for(j = 0; j < k1; j ++)
v[j] = v1[j];
for(j = k1; j < n; j ++)
v[j] = v2[j - k1];
return;
}
{
int i, j, k1 = 0, k2 = 0, x, v1[10005], v2[10005];
bool prim;
for(j = 0; j < n; j ++)
{
x = v[j];
prim = true;
for (i = 2; i * i <= x; i ++)
if(x % i == 0)
{
prim = false;
break;
}
if(prim) v1[k1 ++] = x;
else v2[k2 ++] = x;
}
for(j = 0; j < k1; j ++)
v[j] = v1[j];
for(j = k1; j < n; j ++)
v[j] = v2[j - k1];
return;
}
Alte întrebări interesante
Matematică,
8 ani în urmă
Informatică,
8 ani în urmă
Geografie,
9 ani în urmă
Matematică,
9 ani în urmă
Engleza,
9 ani în urmă
Matematică,
9 ani în urmă