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

Sortowanie bąbelkowe tablicy

Aruba Cloud PRO i VPS, Openstack, VMWare, MS Hyper-V
0 głosów
237 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 (970 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 (970 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,620 p.)
ad 1. Niby czemu? Tak jest mniej czytelnie.

Podobne pytania

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

89,760 zapytań

138,364 odpowiedzi

309,425 komentarzy

59,673 pasjonatów

Advent of Code 2022

Top 15 użytkowników

  1. 908p. - Argeento
  2. 877p. - nidomika
  3. 851p. - Michal Drewniak
  4. 848p. - Mikbac
  5. 846p. - rucin93
  6. 838p. - Łukasz Eckert
  7. 835p. - ssynowiec
  8. 822p. - TheLukaszNs
  9. 794p. - JMazurkiewicz
  10. 787p. - Hubert Chęciński
  11. 786p. - adrian17
  12. 775p. - Jarosław Roszyk
  13. 760p. - Mawrok
  14. 756p. - overcq
  15. 752p. - Vinox
Szczegóły i pełne wyniki

Motyw:

Akcja Pajacyk

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

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...