Serwis został przeniesiony pod nową domenę: http://cpp0x.pl/
PowrótPowrótHistoria odwiedzonych stron
AutorWiadomość
Data: 2007-10-09 16:34:19

jacek
Inny sposób na posortowanie trzech liczb

czesc wesoły 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:

/*Napisz program wprowadzający trzy liczby z klawiatury a następnie
wyświetlający na ekranie:
- największą z tych liczb
- medianę
- sekwencję tych trzech liczb uporządkowaną rosnąco lub malejąco
Uwzględnij przypadki gdy wszystkie liczby są różne oraz że mogą wystąpić
powtórzenia. */


#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;
  //tu jest blok: ktora największa
  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;
  }
  //tu jest blok: mediana -dokladnie nie wiem co to jest mediana- u mnie mediana to liczba środkowa po uszeregowaniu liczb
  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;
  }
  //sekewncja rosnaco *********************************tu jest ostatnie zadanie które chciałbym skrócić, a nie wypisywac jak poprzednie 2 **************************
  if (a<=b && b<=c) //abc
  {
    cout<<"liczby rosnaco:"<<a<<b<<c<<endl;
  }
  if (c<=b && b<=a) //cba
  {
    cout<<"liczby rosnaco:"<<c<<b<<a<<endl;
  }
  if (b<=a && a<=c) //bac
  {
    cout<<"liczby rosnaco:"<<b<<a<<c<<endl;
  }
  if (c<=a && a<=b) //cab
  {
    cout<<"liczby rosnaco:"<<c<<a<<b<<endl;
  }
  if (a<=c && c<=b) //acb
  {
    cout<<"liczby rosnaco:"<<a<<c<<b<<endl;
  }
  if (b<=c && c<=a) //bca
  {
    cout<<"liczby rosnaco:"<<b<<c<<a<<endl;
  }  // i tu mam dość wstawiania warunkow jak w poprzednich dwoch zadaniach ...
  //jak wpisze sie 2 takie same liczby to wyskocza 2 takie same liniki:
  //liczby rosnaco: 334  -x2   ***************************
  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

Data: 2007-10-09 21:46:55

Piotr Szawdyński
Sortowanie liczb

Zaraz się wczytam i dam odpowiedź wesoły
/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=11

Twoje 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 wesoły 

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 wesoły

Podsumowując: na chwilę obecną nic chyba nie uda Ci się bardziej genialnego wymyślić od obecnego rozwiązania

Data: 2007-10-10 14:49:21

jacek


świetnie! dzięki wesoły  ... 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ą wesoły

Data: 2007-10-10 15:19:53

Piotr Szawdyński


No to closed wesoły

1



Statystyki tematuOstatnio przeczytali
Czytało użytkowników:29hans, fish13, malan, lenrokskate, Pirotechnik, TheLukon, Iname (√ιק), Pietrzuch, WunM, Dante, XaNeq, Macius700, Stokrand, Haker123, Dybusek, driver1995, kamillo121, vax3, Rojaw, bigboo, Mardock, pekfos, nnick, Tombol, DeBugger, Spilner, geftus, Ju1ian, MrQb4
Przeczytało użytkowników:29
Czytało osób ogólnie:149
Przeczytało osób ogólnie:149



PowrótPowrótHistoria odwiedzonych stron
Panel Logowania
Login:
Hasło:

Użytkowników
Obecnie aktywnych:14
Zalogowanych:0
Zarejestrowanych:4367
Ostatnie 24h:716
Non-cookie 24h:2190
Wszystkich:214766
Ostatnia Aktualizacja
2010-09-01 19:27:34 (6 dni temu)
Ostatnio aktywni
fish133 godz
wiewiorka9 godz
Koni9 godz
BuZuz9 godz
Prezmen12 godz
trupank12 godz
szczgl14 godz
filipesq14 godz
KRIIS55115 godz
kuba181716 godz
extra217 godz
pixelmaster18 godz

Wynajem Sopot - wakacje
Pokój 2 osobowy 130zł/doba;
Lokalizacja: Sopot


O portaluArchiwumHistoriaIndeksRegulaminWyszukiwarkaLinki
Kurs HTML - strona WWW za darmoRestauracja "ATOL" - SopotValid HTML 4.01 TransitionalValid CSS!HTML CSS JavaScript FLASH PHP MySQL