Страница 1 от 1

C++ Проблем при сортиране на масив

Публикувано на: 22 Дек 2011, 11:15
от preslavchooo
Искам да сортирам един масив от 6 елемента по метода на "мехурчето", но като дам на Dev-а да изпълни програмата, той гърми смисъл показва се черния екран и дотам ? Казва, че програма спира да работи.
Ето ги и следния код:

#include <iostream.h>
#include <conio.h>
int main ()
{
int a[6]={44,55,12,42,94,18};
int i,n,swap,k;
for(i=0;i<n-1;i++)
for(k=0;k<n-1-i;k++)
if(a[k]>a[k+1])
{
swap=a[k];
a[k]=a[k+1];
a[k+1]=swap;
}
for(i=0;i<6;i++) cout<<a<<endl;
getch ();
return 0;
}

Може и аз да съм допуснал някъде грешна, но невярвам, а и dev-а не ми казва, че нямам грешка.

Re: C++ Проблем при сортиране на масив

Публикувано на: 25 Дек 2011, 18:24
от bggashnik
:)

Използваш променлива, която не е инициализирана. Оттам проблем с паметта. Използваш n, а за него не е зададена стойност. Ако му присвоиш n = 6, ще тръгне.

Друг е въпросът, че стила е ужасен, не се спазват никакви стандарти. Аз бих я написал по този начин:

Код за потвърждение: Избери целия код

#include <iostream>
using namespace std;

int *A;

int main ()
{
    unsigned N;
    int crnt;
    bool ok;
    
    cin>>N;
    A = (int *)malloc(sizeof(int)*N);
    
    for(unsigned i = 0; i < N; i++) cin>>A[i];
    
    do {
        ok = false;
        for(unsigned i = 0; i < N - 1; i++) {
                     if(A[i] > A[i+1]) {
                             int swap;
                             swap = A[i];
                             A[i] = A[i+1];
                             A[i+1] = swap;
                             ok = true;
                     }
        }
    }while(ok);
    
    for(unsigned i = 0 ;i < N; i++) cout<<A[i]<<' ';
    
    cout<<endl;
    system("pause");
    return 0;
}