Hmm, czyli na dzisiaj, no ale pewnie i tak Ci się przyda.
1. żeby wczytać liczbę z klawiatury potrzebujesz standardowy strumień wejścia
cin
poczytaj sobie o strumieniach wejścia i wyjścia.
2. żeby wczytywać
n
liczby z klawiatury potrzebujesz pętle, możesz sobie przyjąć, że pętle kończy jakiś znak, choć najlepiej jakbyś wykorzystał EOF (ang. End of file). W każdym systemie wywołanie tego znaku będzie inne więc sprawdź jak to zrobić na swoim systemie.
Poczytaj sobie o pętlach samych w sobie, generalnie wyróżnijmy sobie póki co pętle
for
i
while
. Obie te konstrukcje to pętle czyli to co jest w ich ciałach będzie się wykonywać w pętli, no chyba, że nastąpi koniec poprzez spełnienie warunku. Pętla
for
zachowuje się tak, że wykonuje dana akcję jakąś zadaną ilość razy, podczas gdy pętla
while
wykonuje się tak długo, aż nie zostanie przerwana poprzez spełnienie warunku.
Czyli możesz podejść do zadania na dwa sposoby, pierwszy z wykorzystaniem pętli
for
, prosisz użytkownika o podanie liczby
n
, czyli ile liczb ma zamiar wpisać. Następnie wczytujesz
n
licz w pętli.
Kod: Zaznacz cały
for (int i = 0; i < n; i++) { //dla n = 3 -> wykona się dla i = 0; i = 1; i = 2; dla i = 3 już się nie wykona bo warunek jest, że i ma być mniejsze od n
//wczytaj liczbę i zapisz ją
}
Albo podejście bardziej eleganckie z wykorzystaniem pętli
while
Kod: Zaznacz cały
int num = 0;
while (cin >> num) { //wczytuje dopóki nie dostanie EOF albo złego typu danych
// zapisz liczbę np. w tablicy
}
zostaje też kwestia co jeśli użytkownik poda coś co nie jest liczbą, z tym też idzie sobie poradzić -> wyszukaj jak sprawdzić czy input to liczba.
powyższe załatwia Ci już prawie obsługę funkcji
wczytaj_dane
. Jest jedno ale, w poleceniu masz, że wpisane liczby masz umieszczać w tablicy o nazwie
liczby
, z tablicami jest taki problem, że przy inicjacji musisz podać ich rozmiar, jeśli użyjesz pętli
for
to nie ma problemu bo poznasz ilość liczb i możesz zainicjować tablicę, przy pętli
while
takiej informacji nie masz, rozwiązać to oczywiście można:
- sposób estetyczny -> zamiast tablicy użyj vektora;
- sposób brzydki, ale zgodny ze specyfikacją polecenia -> stwórz tablice o rozmiarze INT_MAX, a po wczytaniu wszystkich liczb zmień jej rozmiar, do faktycznej ilości. Jeśli chcesz być zgodny z poleceniem to osobiście zrezygnowałbym z pętli
while
i użył
for
będzie ładniej.
3. Jeśli nie wiesz jak zdeklarować funkcję to poczytaj o tym, generalnie interesuje Cię coś w stylu
Kod: Zaznacz cały
private int[] przetworz_dane(int[] data){
//sort data
return data;
}
Miej na uwadze, że fragmenty kodu, który Ci wrzucam to nie koniecznie C++, bardziej chodzi mi o koncepcję niż składnie danego języka. Widzisz, że powyższa funkcja jest typu
int
bo raczej chcemy aby można było do niej wrzucić jakaś tablicę liczb i dostać z powrotem wynik w postaci posortowanej tablicy, btw. nie jest napisane jak masz sam napisać algorytm sortujący więc śmiało korzystałbym z wbudowanych funkcji np.
Kod: Zaznacz cały
#include<algorithm>
sort(args) //poczytaj o funkcji sort
jeśli chcesz samemu sobie napisać funkcję do posortowania to poczytaj o sortowaniu bąbelkowym prosty algorytm, sam raz na pierwsze implementacje.
4. Zostało wyświetlenie danych w funkcji
wyświetl_wynik()
jak to zrobić to już powinieneś wiedzieć po przerobieniu strumieni wejścia/wyjścia i pętli.
Zachęcam do dalszej dyskusji i zadawania pytań, zamiast bycia kolejnym forumowym jednopostowcem liczącym na gotowca