Robinsoncruzoe Temat założony przez niniejszego użytkownika |
Rozdział 22 Zadanie 3 » 2018-03-18 18:15:03 Treść polecenia: "Napisz program który wykona wszystkie poniższe kroki w podanej kolejności: Losuje 10 liczb z przedziału od 10 do 30 włącznie i zapisuje je do tablicy; Wypisuje 10 wylosowanych liczb od początku do końca; Wypisuje 10 wylosowanych liczb od końca do początku; Znajduje najmniejszą oraz największą wylosowaną liczbę. Wypisuje najmniejszą i największą wylosowaną liczbę. Program nie może używać pętli innych niż pętla for." Właśnie jestem w punkcie w którym mam napisać funkcję znajdującą najmniejsza/najwieksza. Utknąłem. Wg mnie to co napisałem może by działało gdyby liczby w tych wylosowanych się nie powtarzały. Proszę o podpowiedź jakąś jak napisać na pętlach for znajdywanie najmniejszej/najwiekszej liczby w tablicy. #include <iostream> #include <ctime> #include <cstdlib>
using namespace std;
void losowanieliczb( int tab[] ) { int zmienna; for( int i = 0; i <= 9; i++ ) { zmienna = rand() % 21 + 10; tab[ i ] = zmienna; } }
void wypisanieOdPoczatku( int tab[] ) { cout << endl << "Oto wylosowane liczby od poczatku do konca:" << endl; for( int i = 0; i <= 9; i++ ) { cout << "Liczba nr: " << i + 1 << " to: " << tab[ i ] << endl; } }
void wypisanieOdKonca( int tab[] ) { cout << endl << "Oto wylosowane liczby od konca do poczatku:" << endl; for( int i = 9; i >= 0; i-- ) { cout << "Liczba nr: " << i + 1 << " to: " << tab[ i ] << endl; } }
int znajdywanieNajwiekszej( int tab[] ) { int kolejna = 0, i = 0, licznik = 0; for( int x = 0; x <= 9; ) { for( tab[ i ], tab[ kolejna ]; tab[ i ] > tab[ kolejna ]; kolejna++ ) { for( licznik; licznik == 9; ) { cout << "Najwieksza to: "; return tab[ i ]; } licznik++; x++; } } }
int main() { srand( time( NULL ) ); int tablica[ 10 ]; losowanieliczb( tablica ); wypisanieOdPoczatku( tablica ); wypisanieOdKonca( tablica ); znajdywanieNajwiekszej( tablica ); }
|
|
pekfos |
» 2018-03-18 18:40:35 for( int x = 0; x <= 9; ) { for( tab[ i ], tab[ kolejna ]; tab[ i ] > tab[ kolejna ]; kolejna++ ) { for( licznik; licznik == 9; ) { cout << "Najwieksza to: "; return tab[ i ]; } licznik++; x++; } } |
Nie mam pojęcia co tu chciałeś osiągnąć, ale do znalezienia maksimum wystarczy jedna pętla, bez zbędnych udziwnień: for( int i = 0; i <= 9; i++ )
|
|
Glazus |
» 2018-03-18 18:42:23 Co próbujesz zrobić w funkcji int znajdywanieNajwiekszej( int tab[] ) ? Linijka po linijce? |
|
Robinsoncruzoe Temat założony przez niniejszego użytkownika |
» 2018-03-18 18:57:48 Szczerze mówią to już zgłupiałem i nie wiem teraz sam co ja tam chciałem z tego wyciągnąć ale też jak to zrobić za pomocą pojedynczej petli for. Tym bardziej, że przecież te liczby mogą się powtarzać. |
|
pekfos |
» 2018-03-18 18:59:24 A co to zmienia, że liczby mogą się powtarzać? |
|
Robinsoncruzoe Temat założony przez niniejszego użytkownika |
» 2018-03-18 19:26:36 Bo ja chciałem to zrobić na takiej zasadzie, że jedna zmienna przechowuje ilość wykonania się pętli która sprawdza czy n-ta liczba z 10 liczb w tablicy jest wieksza od kolejnej liczby z tablicy i wtedy jezeli dla ktorejs liczby petla wykona sie 9 razy bedzie to znaczylo ze dla kazdej z tych liczb w petli jest ona od niej wieksza i to by oznaczalo ze jest jednoczesnie najwieksza z nich. |
|
pekfos |
» 2018-03-18 19:42:19 Czyli w skrócie dla każdej liczby chcesz zliczyć wszystkie liczby mniejsze od bieżącej i jeśli wychodzi N-1, to bieżąca jest maksymalną. Masz więc pętlę która przechodzi po wszystkich liczbach i drugą w środku, która również przechodzi po wszystkich. Ale po co? Jak już, powinieneś zliczać liczby, które są większe, bo jeśli liczba jest maksymalna, to nie ma w zbiorze liczby większej, więc jeśli znajdziesz liczbę większą, to testowana liczba nie może być maksimum. Za to ta znaleziona większa liczba jest lepszym kandydatem. W tym momencie nigdy nie ma sensu wracać na początek w poszukiwaniu liczb większych, bo znamy największą liczbę z już przetestowanych do tego momentu. Nie ma więc sensu robić tej wewnętrznej pętli i rozwiązanie jest zrobione z użyciem tylko jednej. |
|
Robinsoncruzoe Temat założony przez niniejszego użytkownika |
» 2018-03-18 20:08:15 Ten swój poprzedni kod porzucam i próbuję wymyślić inny sposób, ale nie wiem jak zacząć, czarna dziura. |
|
« 1 » 2 |