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

Sortowanie bąbelkowe tablicy

0 głosów
463 wizyt
pytanie zadane 26 grudnia 2016 w C i C++ przez silnyjakzubr Nowicjusz (240 p.)
edycja 26 grudnia 2016 przez silnyjakzubr

Witam.

Program wyświetla tablice przed sortowaniem, a po sortowaniu nic. Jakieś pomysły jak to naprawić?

#include <iostream>
#include <ctime>
#include <cstdlib>

using namespace std;


int zakresRand(int minimum, int maksimum);

void wyswietlTablice(int tablica[],int rozmiar)
{
    cout<<"{";
    for(int i=0;i<rozmiar;i++)
    {
        if(i!=0)
        {
            cout<<",";
        }
        cout<<tablica[i];
    }
    cout<<"}";
}

void sortuj (int tablica[], int rozmiar)
{
   int temp;
   bool posortowane = false;
   while(posortowane == false);
   {
       for(int i=1; i<rozmiar; i++)
       {
           posortowane=true;
           if(tablica[i]<tablica[i-1])
           {
               posortowane=false;
               temp=tablica[i];
               tablica[i]=tablica[i-1];
               tablica[i-1]=temp;
           }
       }
   }
}

int main ()
{
    int rozmiar=10;
    int tablica[rozmiar];
    srand(time(NULL));
    for (int i=0;i<rozmiar;i++)
    {
        tablica[i]=zakresRand(1,100);
    }
    cout<<"Tablica wyjsciowa: ";
    wyswietlTablice(tablica,rozmiar);
    cout<<"\n";
    sortuj(tablica,rozmiar);
    cout<<"Posortowana tablica: ";
    wyswietlTablice(tablica,rozmiar);

    return 0;
}

int zakresRand(int minimum,int maksimum)
{
    return rand() % (maksimum-minimum+1)+minimum;
}

 

1 odpowiedź

0 głosów
odpowiedź 26 grudnia 2016 przez dragulaa Użytkownik (950 p.)
wybrane 26 grudnia 2016 przez silnyjakzubr
 
Najlepsza
Masz srednik w 28 linijce po while. Czyli masz nieskończoną petle, która nic nie robi dopóki posortowane == false :)
komentarz 26 grudnia 2016 przez silnyjakzubr Nowicjusz (240 p.)
Nie wiem jakim cudem tego nie zauważyłem xd.

Dziękuje i pozdrawiam.
komentarz 26 grudnia 2016 przez dragulaa Użytkownik (950 p.)
Protipy:

1. Jak masz ifa, fora, itp. jednolinijkowego to pisz:

if(a == b) c += 2;

zamiast

if(a == b)

{
      c += 2;

}

 

2. Jak sprawdzasz tylko czy zmienna ma wartosc true lub false, to pisz:

if(posortowane) // zamiast if(posortowane == true)

...

if(!posortowane) // zamiast if(posortowane == false)

...

do while to tez się tyczy ofc
komentarz 26 grudnia 2016 przez unknown Nałogowiec (39,560 p.)
ad 1. Niby czemu? Tak jest mniej czytelnie.

Podobne pytania

0 głosów
1 odpowiedź 2,110 wizyt
pytanie zadane 6 lutego 2017 w C i C++ przez Oskar Gramsz Początkujący (270 p.)
0 głosów
2 odpowiedzi 903 wizyt
–1 głos
2 odpowiedzi 635 wizyt

93,604 zapytań

142,529 odpowiedzi

322,997 komentarzy

63,092 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

Kursy INF.02 i INF.03
...