sortowanie bąbelkowe - nieprawidłowe wyświetlanie zawartości tablicy

0

Witam.
Otóż mam pytanie dotyczące sortowania bąbelkowego.
Mam taki kod:

#include <iostream>
#include<conio.h>
using namespace std;
int main(){
	int wielkosc_tablicy;
	int suma=0;
cout<<"Podaj wielkosc tablicy: ";
cin>>wielkosc_tablicy;
int tablica[wielkosc_tablicy];
for(int i=0; i<wielkosc_tablicy; i++){
	cout<<"Podaj "<<i+1<<" element tablicy: ";
	cin>>tablica[i];

}
for(int i=0; i<wielkosc_tablicy; i++){
	for(int j=0; j<wielkosc_tablicy; j++){
		if(tablica[j]>tablica[j+1]){
			swap(tablica[j], tablica[j+1]);
		}
	}
}
for(int i=0; i<wielkosc_tablicy; i++){
	cout<<tablica[i]<<endl;
}
    return 0;
}

Jest problem z wypisaniem zawartości tablicy. Gdy j<wielkosc_tablicy; lub i<wielkosc_tablicy; tonajwyższej liczby nie wyświetla, tylko zamiast niej jest wypisane zero. jeżeli napisze j<=wielkosc_tablicy; lub i<=wielkosc_tablicy; to oprócz tych liczb które użytkownik podał dodaje dodatkowe zero. To dodatkowe zero jest przez warunek mniejsze lub równe, ale wtedy wyświetli całą zawartość tablicy. Więc jak zrobić, żeby wyświetlało całą tablicę, bez dodawania zera, i bez zjadania jednej największej liczby z tablicy, zamiast której wstawia zero

0
for(int j=0; j<wielkosc_tablicy; j++){
                if(tablica[j]>tablica[j+1]){
                        swap(tablica[j], tablica[j+1]);
                } 

Przy ostatnim obiegu pętli wybiegasz poza zakres tablicy poprzez

  swap(tablica[j], tablica[j+1]);  
0

A jak to naprawić?

0

Dobra. Jakoś udało mi się to zrobić.

for(int j=0; j<wielkosc_tablicy; j++){
	
		if(tablica[j]-1>tablica[j]){
			swap(tablica[j-1], tablica[j]);
		}
}
for(int i=0; i<wielkosc_tablicy; i++){
	cout<<tablica[i]<<endl;
0
for(int j=1;j<wielkosc_tablicy;++j) if(tablica[j-1]>tablica[j]) swap(tablica[j-1],tablica[j]); // zaczynamy od 1, tablica[j]-1 to nie to samo co tablica[j-1]
for(int i=0;i<wielkosc_tablicy;++i) cout<<tablica[i]<<endl;

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