Sortowanie bąbelkowe

0

W szkole ostatnio mielismy sortowanie babelkowe (oczywiscie Pascal) a ze nie lubie tego jezyka a znam troche c++ chcialem napisac program sortujacy w ten sposob wlasnie w tym jezyku. No i napisalem niby ale cos nie dziala i nie wypisuje posortowanych liczb. Prosze o pomoc w znalezieniu bledu

#include <iostream.h>

void sortowanie(int tab[9],int ile_liczb)
{
int b,zmiana,czasowa;
do
               {
                    int zmiana=0; 
                    b=ile_liczb-1;      

do
{
b--;
if (tab[b+1] < tab[b])
{

           czasowa=tab[b];
           tab[b]=tab[b+1];
           tab[b+1]=czasowa;
           zmiana=1;
           }
} 
while (b!=0);
} 
while (zmiana != 0);

for(int b=0;b<=ile_liczb;b++)
cout << tab[b] << ("\n");
}

main(){
const int ile_liczb=9;
int tab[ile_liczb],a,liczba;

          for(a=0;a<=ile_liczb;a++)
                 {
                 cout << ("Podaj liczbe --> ") << a+1 << (" <--  ");
                 cin >>liczba;
                 tab[a]=liczba;  
                 cout << ("\n");
                 }
                 sortowanie(tab,ile_liczb);
                 system("pause");
}
0

Pętla for(a=0;a<=ile_liczb;a++) dla ile_liczb=9 wykonuje się 10 razy, a tablica tab ma 9 elementów. Podobny błąd przy wypisywaniu.

Zamień "<=" na"<".

0

Dzieki za pomoc ale głowny bład tkwił w tej linijce

int zmiana=0; 

a mialo byc

zmiana=0; 

Była tworzona nowa lokalna zmienna, ktora psuła mi cały program :)

0
#include <iostream>
#include <conio.h>
using namespace std;
void zamiana(int &a,int &n)
{
    int p=a;
    a=n;
    n=p;
}    

int main()
{

    int tab[5],n=5;
    for(int a=0;a<5;a++)
    {
        cout<<"Podaj liczbe :";
        cin>>tab[a];
    }

      for(int  j=n-1;j>0;j--)
      {
          for(int i=0;i<j;i++)
          if(tab[i]>tab[i+1])
          zamiana(tab[i],tab[i+1]);
      }

      for(int i=4;i>=0;i--)
         cout<<tab[i];

    _getch();
}

Tu masz czytelniej...

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0