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; }