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 pentru vizita pe site-ul nostru dedicat Informatică. Sperăm că informațiile prezentate v-au fost utile. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, nu ezitați să ne contactați. Ne bucurăm să vă revedem și vă invităm să ne adăugați în lista de favorite!