algorytm.org

Implementacja w C/C++



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Szukanie elementu z wartownikiem - Implementacja w C/C++
Ocena użytkownikóww: *****  / 0
SłabyŚwietny
Nadesłany przez Krzysztof Sośnierz, 09 marca 2011 11:37
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

szukanie_z_wartownikiem_2_c.cpp:
//Szukanie z wartownikiem zadanego elementu w tablicy
//www.algorytm.org

// Wymagane dla operacji wejscia/wyjscia
#include <iostream>

// Funkcja zwraca indeks poszukiwanego elementu "x" w tablicy wskazanej
// przez "array" o liczbie elementow "size", w przypadku gdy pasujacy
// element nie zostal odnaleziony, funkcja zwraca -1.
// Przyjete zostalo zalozenie ze faktyczny rozmiar tablicy to size + 1.
template<typename T> int gsearch(const T& x, T* array, size_t size)
{
    // Aktualny indeks w tablicy wskazuje na pierwszy element
    size_t i = 0;
    // Inicjalizacja wartownika
    array[size] = x;
    
    // Powtarzaj dopoki element i jest rozny od x
    while (array[i] != x) ++i;
    
    // Zwroc indeks i gdy jest mniejszy od size, w przeciwnym wypadku -1
    return i < size ? i : -1;   
}

// Funkcja wyswietla tablice wskazna przez "array" o rozmiarze "size"
template<typename T> void printArray(const T* array, size_t size)
{
    // Dla kazdego elementu tablicy
    for (size_t i = 0; i < size; ++i)
    {
        // Wyswietl element i, gdy indeks elementu + 1 dzieli sie 
        // bez reszty przez 10, wstaw znak nowego wiersza,
        // w przeciwnym wypadku wstaw znak tabulacji.
        std::cout << array[i] << ((i + 1) % 10 == 0 ? "\n" : "\t");
    }
}

int main()
{
    // Liczba elementow tablicy
    const size_t size = 100;
    // Przydziel pamiec na size elementow + 1 na wartownika
    int *int_array = new int[size + 1];
    
    // Inicjalizacja ziarna generatora liczb pseudo-losowych
    srand(time(0));
    
    // Losowa inicjalizacja tablicy
    for (size_t i = 0; i < size; ++i)
    {
        // Wartosc losowa z przedzialu od 0 do 99
        int_array[i] = rand() % 100;
    }
    
    // Wyswietl tablice
    printArray(int_array, size);
    
    // Bedziemy szukac losowej wartosci z przedzialu od 0 do 99
    const int val = rand() % 100;
    // Znajdz wylosowana wartosc w tablicy    
    int index = gsearch(val, int_array, size);
    
    if (index < 0)
        std::cout << "Element o wartosci " << val << " nie zostal znaleziony" << std::endl;
    else
        std::cout << "Element o wartosci " << val << " zostal znaleziony na pozycji " << index << std::endl;
        
    // Zwolnij pamiec zajmowana przez tablice
    delete[] int_array;
    
    return EXIT_SUCCESS;
}
Dodaj komentarz