MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Probleme cu array-uri

Familiarizându-ne cu ciclurile, variabilele, construcțiile condiționale și array-urile, să analizăm câteva probleme pentru lucrul cu array-urile.

Numărul de numere pozitive

Să găsim numărul de numere pozitive într-un array:

int[] numbers = { -4, -3, -2, -1, 0, 1, 2, 3, 4 };
int result = 0;
foreach(int number in numbers)
{
   if(number > 0)
   {
       result++;
   }
}
Console.WriteLine($"Numărul de elemente mai mari decât zero: {result}");

Aici creăm o variabilă auxiliară result, care va conține numărul de numere pozitive. În ciclu parcurgem array-ul și, dacă elementul său este mai mare decât zero, adăugăm la variabila result o unitate.

Inversarea array-ului

A doua problemă - inversarea array-ului, adică răsturnarea lui în ordine inversă:

int[] numbers = { -4, -3, -2, -1, 0, 1, 2, 3, 4 };

int n = numbers.Length; // lungimea array-ului
int k = n / 2;          // mijlocul array-ului
int temp;               // element auxiliar pentru schimbarea valorilor
for(int i = 0; i < k; i++)
{
   temp = numbers[i];
   numbers[i] = numbers[n - i - 1];
   numbers[n - i - 1] = temp;
}
foreach(int i in numbers)
{
   Console.Write($"{i} \t");
}

Deoarece trebuie să modificăm elementele array-ului, folosim ciclul for. Algoritmul de rezolvare a problemei presupune parcurgerea elementelor până la mijlocul array-ului, care în program este reprezentat de variabila k, și schimbarea valorilor elementului cu index i și elementului cu index n - i - 1.

Program de sortare a array-ului

Acum să luăm o problemă mai complexă - sortarea simplă a array-ului:

int[] nums = { 54, 7, -41, 2, 4, 2, 89, 33, -5, 12 };

// sortare
int temp;
for (int i = 0; i < nums.Length - 1; i++)
{
   for (int j = i + 1; j < nums.Length; j++)
   {
       if (nums[i] > nums[j])
       {
           temp = nums[i];
           nums[i] = nums[j];
           nums[j] = temp;
       }
   }
}

// afișare
Console.WriteLine("Afișarea array-ului sortat");
for (int i = 0; i < nums.Length; i++)
{
   Console.WriteLine(nums[i]);
}

Pentru sortarea array-ului, parcurgem array-ul și comparăm elementele. Deoarece trebuie să comparăm fiecare element al array-ului cu fiecare (cu excepția comparației cu el însuși), folosim un ciclu imbricat.

În ciclul exterior, luăm elementul pe care îl vom compara:

for (int i = 0; i < nums.Length - 1; i++)

Apoi lansăm ciclul imbricat, care începe de la următorul element, și din care extragem elementele cu care vom compara elementul luat din array în ciclul exterior:

for (int j = i + 1; j < nums.Length; j++)

Dacă elementul cu index mai mic este mai mare decât elementul cu index mai mare, schimbăm elementele între ele.

if (nums[i] > nums[j])
{
   temp = nums[i];
   nums[i] = nums[j];
   nums[j] = temp;
}

La final, afișăm toate elementele.

← Lecția anterioară Lecția următoare →