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 minimalnego/maksymalnego - Implementacja w C/C++
Ocena użytkownikóww: *****  / 4
SłabyŚwietny
Nadesłany przez Krzysztof Sośnierz, 09 marca 2011 10:07
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.

element_min_max_2_c.cpp:
//Szukanie elementu minimalnego w tablicy
//www.algorytm.org

// Wymagane dla operacji wejscia/wyjscia
#include <iostream>
// Wymagane dla makra assert
#include <cassert>

// Funkcja zwraca najmniejszy element tablicy typu szablonowego T
// wskazanej przez "array" o rozmiarze "size" elementow
// Przyjete zostalo zalozenie ze size > 0
template<typename T> T min(const T* array, size_t size)
{
    // W przypadu gdy size == 0 wystapi assercja
    assert(size > 0);
    // Na poczatku wartosc minimalna rowna sie pierwszemu elementowi tablicy    
    T min = array[0];
    
    // Powtarzaj dla wszystkich elementow z wyjatkiem pierwszego
    for (size_t i = 1; i < size; ++i)
    {
        // Jezeli nasze aktualne min jest wieksze od elementu i
        // to przypisz mu wartosc elementu i.
        if (min > array[i])
            min = array[i];
    }
    
    // Zwroc wartosc minimalna        
    return min;    
}

// Funkcja zwraca najwiekszy element tablicy typu szablonowego T
// wskazanej przez "array" o rozmiarze "size" elementow
// Przyjete zostalo zalozenie ze size > 0
template<typename T> T max(const T* array, size_t size)
{
    // W przypadu gdy size == 0 wystapi assercja
    assert(size > 0);
    // Na poczatku wartosc maksymalna rowna sie pierwszemu elementowi tablicy    
    T max = array[0];
    
    // Powtarzaj dla wszystkich elementow z wyjatkiem pierwszego
    for (size_t i = 1; i < size; ++i)
    {
        // Jezeli nasze aktualne max jest mniejsze od elementu i
        // to przypisz mu wartosc elementu i.        
        if (max < array[i])
            max = array[i];
    }
    
    // Zwroc wartosc maksymalna       
    return max;    
}

int main()
{
    // Inicjalizacja stalej tablicy liczb calkowitych
    int int_array[] = {5, -4,  3, -2,  1,  0,  -1,  2,  -3,  4,  -5};
    
    // Wyswietlenie wartosci minimalnej i maksymalnej,    
    // liczba elementow tablicy to jej rozmiar / rozmiar elementu,
    // std::endl na koncu poza znakiem specjalnym nowego wiersza
    // oproznia rownierz bufor strumienia wyjsciowego
    std::cout << "MIN: " << min(int_array, sizeof(int_array) / sizeof(int)) << "\n"
              << "MAX: " << max(int_array, sizeof(int_array) / sizeof(int)) << std::endl;
    
    // Poprawne zakonczenie programu
    return EXIT_SUCCESS;
}
Dodaj komentarz