Răspuns :
Ai 2 solutii ca sa rezolvi aceasta problema.
Daca raspunsul ti se pare prea greu de inteles, marcheaza ca abuz ca sa iti recuperezi punctele.
In exemplul de mai jos. primele 7 elements fac parte din primul array, restul de elemente vor apartine celui de al doilea array.
Solutia 1: folosesti "for" ca sa generezi cele 2 array-uri, dintr-un array mare.
Metoda nu este foarte eficienta deoarece foloseste "for".
double originalArray[] = {1, 2, 3, 4, 10, 11, 12, 13, 20, 21, 22};
// observatie: 1 double = 8 bytes
int originalArrayNumberBytes = sizeof(originalArray);
int originalArrayNumberElements = originalArrayNumberBytes / sizeof(double);
int nPart1NumberElements = 7;
int nPart2NumberElements = originalArrayNumberElements - nPart1NumberElements;
// primul array de elemente
double arrayPart1[nPart1NumberElements];
for (int i = 0; i < nPart1NumberElements; i++) {
arrayPart1[i] = originalArray[i];
}
// al doilea array de elemente
double arrayPart2[nPart2NumberElements];
for (int i = nPart1NumberElements; i < originalArrayNumberElements; i++) {
arrayPart2[i - nPart1NumberElements] = originalArray[i];
}
// afisare array part 1
cout << "PART 1: " << endl;
for (int i = 0; i < nPart1NumberElements; i++) {
cout << arrayPart1[i] << endl;
}
// afisare array part 2
cout << endl << "PART 2: " << endl;
for (int i = 0; i < nPart2NumberElements; i++) {
cout << arrayPart2[i] << endl;
}
-----------------------------------------------------------------------------------
Solutia 2: nu folosesti "for", ci niste functii care permit copiere de bytes dintr-o zona de memorie in alta.
Metoda este rapida, dar un pic mai greu de urmarit.
double originalArray[] = {1, 2, 3, 4, 10, 11, 12, 13, 20, 21, 22};
// observatie: 1 double = 8 bytes
int originalArrayNumberBytes = sizeof(originalArray);
int originalArrayNumberElements = originalArrayNumberBytes / sizeof(double);
// elementele din array-ul arrayPart1
// arrayPart1 va avea 7 elemente, care in total au 7*8 = 56 bytes
int nPart1NumberElements = 7;
int nPart1NumberBytes = nPart1NumberElements * sizeof(double);
// elementele din array-ul arrayPart1
// arrayPart1 va avea 7 elemente, care in total au 7*8 = 56 bytes
int nPart2NumberElements = originalArrayNumberElements - nPart1NumberElements;
int nPart2NumberBytes = nPart2NumberElements * sizeof(double);
// definire array part1 + copiere de memorie
double arrayPart1[nPart1NumberElements];
memcpy(arrayPart1, originalArray, nPart1NumberBytes);
// definire array part2 + copiere de memorie
// arrayPart2 incepe de la elentul imediat urmator de unde se termina arrayPart1
double arrayPart2[nPart2NumberElements];
memcpy(arrayPart2, &originalArray[nPart1NumberElements], nPart2NumberBytes);
// afisare array part 1
cout << "PART 1: " << endl;
for (int i = 0; i < nPart1NumberElements; i++) {
cout << arrayPart1[i] << endl;
}
// afisare array part 2
cout << endl << "PART 2: " << endl;
for (int i = 0; i < nPart2NumberElements; i++) {
cout << arrayPart2[i] << endl;
}
Vă mulțumim că ați vizitat site-ul nostru dedicat Informatică. Sperăm că informațiile oferite v-au fost de ajutor. Dacă aveți întrebări sau nevoie de asistență suplimentară, nu ezitați să ne contactați. Vă așteptăm cu drag data viitoare și nu uitați să ne adăugați la favorite!