• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Posortuj 4 podane liczby w kolejności od najwiekszej do najmniejszej

VPS Starter Arubacloud
0 głosów
20,979 wizyt
pytanie zadane 1 maja 2015 w C i C++ przez kasztof123 Nowicjusz (240 p.)

Hej, to moj pierwszy post na forum, od niedawna zainteresowalem sie programowaniem, proboje sie uczyc c++ także prosze o wyrozumialosc;)

Dostalem zadanie zeby napisac w c++ program, ktory posortuje cztery podane przez uzytkownika liczby w kolejnosci malejącej. Nalezy to zrobic przy uzyciu instrukcji warunkowej if. Nie moge wymyslic jak to zrobic. Napisalem cos takiego:

#include <iostream>
#include <cstdlib>

using namespace std;

int main(int argc, char *argv[])
{
  int a,b,c,d,n1,n2,n3,n4;

  cout << "Program SORT4" << endl
       << "Program sortuje malejaco trzy liczby."
       << endl << endl;

  cout << "Podaj piewrsza liczbe = ";
  cin >> a;

  cout << "Podaj druga liczbe = ";
  cin >> b;

  cout << "Podaj trzecia liczbe = ";
  cin >> c;

  cout << "Podaj czwarta liczbe = ";
  cin >> d;

if(a>b&&a>c&&a>d)
    n1=a;
if(a>b&&a>c&&a<d)
    n2=a;
if(a>b&&a<c&&a<d)
    n3=a;
if(a<b&&a<c&&a<d)
    n4=a;



if(b>a&&b>c&&b>d)
    n1=b;
if(b>a&&b>c&&b<d)
    n2=b;
if(b>a&&b<c&&b<d)
    n3=b;
if(b<a&&b<c&&b<d)
    n4=b;



if(c>a&&c>b&&c>d)
    n1=c;
if(c>a&&c>b&&c<d)
    n2=c;
if(c>a&&c<b&&c<d)
    n3=c;
if(c<a&&c<b&&c<d)
    n4=c;



if(d>a&&d>b&&d>c)
    n1=d;
if(d>a&&d>b&&d<c)
    n2=d;
if(d>a&&d<b&&d<c)
    n3=d;
if(d<a&&d<b&&d<c)
    n4=d;




  cout << endl << "===================="  << endl
       <<  "a = "   << n1 << endl
       <<  "b = "   << n2 << endl
       <<  "c = "   << n3 << endl
       <<  "d = "   << n4
       << endl << "===================="  << endl << endl;


  system("PAUSE");
  return 0;
}

 

To coś dziala kiedy wprowadze liczby w odwrotnej kolejnosci niz maja byc posortowane, ale juz gdy podam je w takiej samej kolejnosci w jakiej maja zostac wyswietlone to cos szaleje i wyrzuca kosmiczne liczby. Moglby ktos podpowiedziec jak to sprytniej zrobic? ;)

3 odpowiedzi

+2 głosów
odpowiedź 1 maja 2015 przez Boshi VIP (100,240 p.)
kto takich masochizmów uczy?
komentarz 1 maja 2015 przez kasztof123 Nowicjusz (240 p.)

phppp.gajdaw.pl/projekty/25-03/index.php?id=5

zadanie 5.12.

Jest pokazane rozwiazanie dla 3 liczb, nie moge sobie poradzic ze zrobieniem czegos takiego analogicznego dla 4

komentarz 1 maja 2015 przez Boshi VIP (100,240 p.)
LINK NIE DZIAŁA.

daj sobie z tym spokój jak nie jest wymagane i popatrz na jakikolwiek algorytm sortowania.
+1 głos
odpowiedź 1 maja 2015 przez Gandalf Obywatel (1,260 p.)
nie lepiej zrobić tablice liczb i wykorzystać sortowanie bąbelkowe? zobacz ten odcinek z kursu pana Mirosława o sortowaniu: http://miroslawzelent.pl/kurs-c++/sortowanie-zlozonosc-algorytmow/

oraz analogiczny przykład sortowania:

http://www.algorytm.edu.pl/algorytmy-maturalne/sortowanie-babelkowe.html
0 głosów
odpowiedź 1 maja 2015 przez kasztof123 Nowicjusz (240 p.)

Wiem, że da sie to zrobic metoda sortowania ale w tym zadaniu chyba chodzi o to zeby dobrze zrozumiec ifa a nie napisac jak najkrotszy program sortujacy.

Tak to ma wygladac dla 3 liczb

#include <iostream>
#include <cstdlib>

using namespace std;

int main(int argc, char *argv[])
{
  int a,b,c,rob;
  
  cout << "Program SORT3" << endl 
       << "(C)2002 student" << endl << endl 
       << "Program sortuje malejąco trzy liczby."
       << endl << endl;
       
  cout << "Podaj piewrszą liczbę = ";
  cin >> a;
  
  cout << "Podaj drugą liczbę = ";
  cin >> b;
  
  cout << "Podaj trzecią liczbę = ";
  cin >> c;


  //chcemy by a było większe od b
  if (a<b)
    {
      rob=a;
      a=b;
      b=rob;  
    }  
  //teraz wiemy, że 
  //                a > b  
  
  if (c>a)
    {
      //wymiana cykliczna trzech zmiennych
      rob=c;
      c=b;
      b=a;  
      a=rob;
    }  
  else
    if (c>b)
      {
        rob=b;
        b=c;
        c=rob;  
      }  
    
      
  cout << endl << "===================="  << endl 
       <<  "a = "   << a << endl
       <<  "b = "   << b << endl       
       <<  "c = "   << c
       << endl << "===================="  << endl << endl; 

      
  system("PAUSE");	
  return 0;
}

Zrobie to tak jak mowicie sortowaniem, aczkolwiek jesli ktos by mial ochote sie z tym pobawic i pokazac rozwiazanie bylbym wdzieczny:)

komentarz 1 maja 2015 przez Boshi VIP (100,240 p.)
To raczej nie jest na zrozumienie ifa a na stratę czasu.  W każdym warunku podmieniasz tylko dane i tyle. Przy 4 danych masz 16 kombinacji przy 5  25 itd, szkoda czasu.
komentarz 1 maja 2015 przez kasztof123 Nowicjusz (240 p.)
Ok, rozumiem. Dzięki wielkie za pomoc:D

Podobne pytania

–1 głos
1 odpowiedź 1,973 wizyt
0 głosów
2 odpowiedzi 3,062 wizyt
pytanie zadane 7 listopada 2015 w C i C++ przez Aisekai Nałogowiec (42,190 p.)
+1 głos
1 odpowiedź 1,796 wizyt

92,963 zapytań

141,929 odpowiedzi

321,162 komentarzy

62,298 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...