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

