Scrieți definiția completă a subprogramului C/C++ ,care are 2 parametri v și n,prin care primește un tablou unidimensional cu maximum 1000 de nr.naturale nenule și ,respectiv,numărul de elemente din tablou.Subptogramul rearanjează elementele tabloului astfel incat toate valorile prime să se afle pe primele pozițoinmiar valotile care nu sunt prime în continuarea celor prime.Aș dori ecplicațiile ptr.această problemă și un exemplu.
Răspunsuri la întrebare
Răspuns de
1
Salut!
Ai rezolvarea mai jos
bool prim(int n) {
if (n <= 1) {
return false;
}
else if (n != 2 && n % 2 == 0) {
return false;
}
for (int i = 3; i * i <= n; i += 2) {
if (n % i == 0) {
return false;
}
}
return true;
}
void rearanjare(int v[], int n) {
int m = 0;
for (int i = 0; i < n; ++i) {
if (prim(v[i])) {
swap(v[i], v[m++]);
}
}
}
- Explicatie: Ne-am folosit de un alt subprogram ajutator, care returneaza true daca un numar este prim sau false in caz contrar. (subprogramul prim nu este obligatoriu, poate fi scris direct in rearanjare dar am preferat sa fie 2 subprograme ca sa se vada mai usor rezolvarea). Pentru a avea o ordonare eficienta, subprogramul rearanjare tine cont de un m care incepe de la indexarea vectorului (de la 0) dupa care mergand cu un for verificam daca v[i] este prim, daca da atunci interschimbam valoarea v[i] cu v[m] iar m este incrementat deci v[m++] (v[i] va fi la indexul lui m, adica primele numere din vector).
Alte întrebări interesante
Fizică,
8 ani în urmă
Limba română,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
8 ani în urmă
Matematică,
9 ani în urmă
Limba română,
9 ani în urmă