Inny sposób na posortowanie trzech liczb
Ostatnio zmodyfikowano 2007-10-10 14:49
DejaVu |
Sortowanie liczb » 2007-10-09 21:46:55 Zaraz się wczytam i dam odpowiedź :) /edit: Jeśli dobrze zrozumiałem, chcesz ustawić (posortować ) liczby rosnąco (lub malejąco). Do sortowania danych służą różne algorytmy, które są krótkie i o różnej złożoności obliczeniowej. Wszystkie jednak operują na tablicach danych do których prawdopodobnie jeszcze nie doszedłeś. Rozdział o tablicach: http://ddt.pl/kursy/?LessonId=11Twoje rozwiązanie jest poprawne i na wiedzę, jaką aktualnie posiadasz jest to jedyne rozwiązanie (rozwiązanie można zapisać na wiele sposobów, wiele z może być krótszych, jednak metoda rozwiązania pozostanie ta sama). Jeśli piszesz tyle warunków, a w każdym jest jedna instrukcja, możesz to zapisać również tak: if( a <= b && b <= c ) cout << "liczby rosnaco:" << a << b << c << endl;
if( a <= c && c <= b ) cout << "liczby rosnaco:" << a << c << b << endl;
if( b <= a && a <= c ) cout << "liczby rosnaco:" << b << a << c << endl;
if( b <= c && c <= a ) cout << "liczby rosnaco:" << b << c << a << endl;
if( c <= a && a <= b ) cout << "liczby rosnaco:" << c << a << b << endl;
if( c <= b && b <= a ) cout << "liczby rosnaco:" << c << b << a << endl;
Krótszy zapis, jednak warunków masz tyle samo :) Jak przerobisz rozdział Pętla for: http://ddt.pl/kursy/?LessonId=10 i rozdział Tablice zmiennych: http://ddt.pl/kursy/?LessonId=11 będziesz mógł powrócić do problemu sortowania. Zapewniam Cię, że będziesz mógł posortować sobie dane rosnąco pisząc może 10 wierszy bez względu na ilość danych i wykorzystując do tego celu tylko i wyłącznie jedną prostą instrukcję warunkową. Pomimo iż napiszesz ją tylko jeden raz, może ona być wykonana nawet milion razy po to, abyś dostał posortowaną tablicę danych i nie musiał ręcznie pisać sortowania warunek po warunku dla każdej liczby :) Podsumowując: na chwilę obecną nic chyba nie uda Ci się bardziej genialnego wymyślić od obecnego rozwiązania |
|
DejaVu |
» 2007-10-10 15:19:53 No to closed :) |
|
jacek Temat założony przez niniejszego użytkownika |
Inny sposób na posortowanie trzech liczb » 2007-10-09 16:34:19 czesc :) takiego kursu szukałem - prostego wprowadzenia- by później zabrać się za grube książki, które zakładają ze sporo JUŻ umiem. Dlatego dzięki za kurs... a właśnie... programuję (he he) już od 3 dni i postanowiłem zrobić zadanie które znalazłem gdzieś w internecie...a oto kod i zadanie u góry:
#include <iostream> #include <conio.h> using namespace std; int main() { float a, b, c; cout << "wprowadz 3 liczby:" << endl; cin >> a; cin >> b; cin >> c; if( a > b && a > c ) { cout << "najwieksza to:" << a << endl; } if( b > a && b > c ) { cout << "najwieksza to:" << b << endl; } if( c > a && c > b ) { cout << "najwieksza to:" << c << endl; } if( a == b && a == c ) { cout << "liczby sa takie same :)" << endl; } if( a == b && a > c ) { cout << "najwieksze sa a i b:" << a << endl; } if( a == c && a > b ) { cout << "najwieksze sa a i c:" << a << endl; } if( b == c && b > a ) { cout << "najwieksze sa a i b:" << a << endl; } if(( a < b && b < c ) ) { cout << "mediana tych liczb to:" << b << endl; } if(( c < b && b < a ) ) { cout << "mediana tych liczb to:" << b << endl; } if(( b < a && a < c ) ) { cout << "mediana tych liczb to:" << a << endl; } if(( c < a && a < b ) ) { cout << "mediana tych liczb to:" << a << endl; } if(( b < c && c < a ) ) { cout << "mediana tych liczb to:" << c << endl; } if(( a < c && c < b ) ) { cout << "mediana tych liczb to:" << c << endl; } if( a == b && a == c ) { cout << "mediana tych liczb to ktorakolwiek z tych liczba,, bo sa takie same :" << endl; } if( a == b && b != c ) { cout << "mediana tych liczb to:" << a << endl; } if( a == c && b != c ) { cout << "mediana tych liczb to:" << a << endl; } if( b == c && c != a ) { cout << "mediana tych liczb to:" << b << endl; } if( a <= b && b <= c ) { cout << "liczby rosnaco:" << a << b << c << endl; } if( c <= b && b <= a ) { cout << "liczby rosnaco:" << c << b << a << endl; } if( b <= a && a <= c ) { cout << "liczby rosnaco:" << b << a << c << endl; } if( c <= a && a <= b ) { cout << "liczby rosnaco:" << c << a << b << endl; } if( a <= c && c <= b ) { cout << "liczby rosnaco:" << a << c << b << endl; } if( b <= c && c <= a ) { cout << "liczby rosnaco:" << b << c << a << endl; } getch(); return( 0 ); }
A teraz o co mi chodzi: jak napisałem w komentarzu na końcu programu ... musiałem wypisać sporo warunków ... a wystarczyła by np. taka funkcja 'if' która blokowała by resztę 'if' (w określonym bloku) gdyby warunek został spełniony - czy coś takiego istnieje? A może użycie jakiegoś innego polecenia, zamiast 'if' .... 'myślałem o switch...case...' ale nie wiem jak sobie by z tym poradzic.... pozdrawiam Jacek |
|
jacek Temat założony przez niniejszego użytkownika |
» 2007-10-10 14:49:21 świetnie! dzięki :) ... następnym razem zanim zapytam dojdę do ostatniej lekcji ... i już dwie książki czytam. Dzięki.
dobra uwaga co do zapisu 'if' z jedną instrukcją :) |
|
« 1 » |