Mam taki oto program z funkcją algorytmu wyszukiwania liniowego elementu tablicy:
#include <iostream>
using namespace std;
// Prototyp funkcji
int linearSearch(const int[], int, int);
int main()
{
const int SIZE = 5;
int tests[SIZE] = { 87, 75, 98, 100, 82 };
int results;
// Wyszukiwanie liczby 100 w tablicy
results = linearSearch(tests, SIZE, 100);
// Jeżeli funkcja linearSearch() zwróci wynik -1, oznacza to, że liczba 100 nie została znaleziona.
if (results == -1)
cout << "Nie uzyskales 100 punktow w zadnym tescie.\n";
else
{
// Inny wynik funkcji jest indeksem pierwszego elementu tablicy
// zawierającego liczbe 100
cout << "Uzyskales 100 punktow w tescie nr ";
cout << (results + 1) << "." << endl;
}
return 0;
}
// Funkcja linearSearch() przeszukująca liniowo tablicę liczb całkowitych.
int linearSearch(const int arr[], int size, int value)
{
int index = 0; // Indeks wykorzystywany do przeszukiwania tablicy
int position = -1; // Zmienna zawierająca pozycję wyszukiwanej liczby w tablicy
bool found = false; // Flaga informująca, czy liczba została znaleziona
while (index < size && !found)
{
if (arr[index] == value) // Jeżeli liczba została znaleziona to...
{
found = true; // ...ustaw flagę oraz...
position = index; // ...zapamiętaj indeks elementu.
}
index++; // Przejdź do następnego elementu.
}
return position; // Zwróć pozycję lub liczbę -1.
}
To jest przykład z książki i zastanawiam się, jaki jest sens tworzenia w funkcji linearSearch() zmiennej typu bool jako flagi, jeśli program działa identycznie bez niej. Czy ma to znaczenie w przypadku tworzenia bardziej rozbudowanych programów? Czy może autor zastosował flagę bo po prostu ma taki styl pisania kodu?
Czy ktoś ma jakiś pomysł?