[C++] Obliczanie maksimum liczb w tablicy

Persja
Użytkownik
Użytkownik
Posty: 3
Rejestracja: 18 lis 2013, o 17:52
Płeć: Kobieta
Lokalizacja: Warszawa

[C++] Obliczanie maksimum liczb w tablicy

Post autor: Persja »

Witam wszytkich!
Poniżej zamieśćiłam zadanie, z którym mam spory problem .Z tego co wiem należy w nim użyć tablic. Ogólnie rzecz biorąc trochę mnie przerasta, więc będę wdzięczna za pomoc : ). Do tego zadania nie trzeba zbyt znać język c++, gdyż to są moje pierwsze lekcje, więc wystarczy znajomość kilku koment do jego rozwiązania.
A oto zadanie:
Dany jest ciąg \(\displaystyle{ n}\) liczb całkowitych: \(\displaystyle{ a_1, a_2, \ldots, a_n.}\) Dla każdej pozycji \(\displaystyle{ i=1, 2, \ldots,n}\) oblicz jaka jest minimalna wartość na prawo od tej pozycji (włącznie z pozycją nr \(\displaystyle{ i}\)). Ściślej wypisz \(\displaystyle{ n}\) liczb, gdzie \(\displaystyle{ i}\)-tą liczbą ma być \(\displaystyle{ \min\{ a_i, a_{i+1}, \ldots, a_n \}}\).
Wejście

W pierwszym wierszu standardowego wejścia znajduje się jedna liczba naturalna \(\displaystyle{ n}\) (\(\displaystyle{ 1 \le n \le 106}\)). W drugim wierszu podanych jest \(\displaystyle{ n}\) liczb całkowitych z zakresu \(\displaystyle{ [ -109, 109 ]}\), pooddzielanych pojedynczym odstępem.
Wyjście

Na standardowe wyjście należy wypisać n liczb, przy czym i-tą liczbą ma być min{ ai, ai+1, ..., an }
Przykład

Dla danych wejściowych

Kod: Zaznacz cały

7
5 4 3 8 7 9 9
poprawną odpowiedzią jest

Kod: Zaznacz cały

3 3 3 7 7 9 9
Jeżeli ktoś nie załapał treści zadania to chodzi o to by najpierw wypisać minmum dla 5 4 3 8 7 9 9 , potem minmum dla 4 3 8 7 99 , następnie dla 3 8 7 9 9 itd.
Z góry dziękuję za pomoc
Ostatnio zmieniony 18 lis 2013, o 21:58 przez Afish, łącznie zmieniany 1 raz.
Powód: Nieczytelny zapis - brak LaTeX-a. Proszę zapoznaj się z instrukcją: http://matematyka.pl/latex.htm .
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] Obliczanie maksimum liczb w tablicy

Post autor: Afish »

Wersja z użyciem STL:

Kod: Zaznacz cały

#include <iostream>
#include <cstdlib>
#include <array>
#include <algorithm>

int main() {
	std::array<int, 7> numbers = { 5, 4, 3, 8, 7, 9, 9 };
	for(auto it = numbers.begin(); it != numbers.end(); ++it){
		std::cout<< *std::min_element(it, numbers.end())<<std::endl;
	}

	return EXIT_SUCCESS;
}
Wersja "klasyczna";

Kod: Zaznacz cały

#include <cstdio>
#include <cstdlib>

int main() {
	int numbers[] = { 5, 4, 3, 8, 7, 9, 9 };
	const int sizeOfArray = sizeof(numbers)/sizeof(int);
	for(size_t i = 0; i < sizeOfArray; ++i){
		int min = numbers[i];
		for(size_t j = i+1; j < sizeOfArray; ++j){
			min = numbers[j] < min ? numbers[j] : min;
		}
		printf("%d
", min);
	}

	return EXIT_SUCCESS;
}
ODPOWIEDZ