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

За всякакви теми, спорове и коментари, които не са свързани с iPhone. Това е мястото да си говорите глупости (не в буквалния смисъл), независимо на каква тема или по какъв повод...
Аватар
preslavchooo
Мнения: 18
Регистриран на: 25 Май 2011, 16:19
Местоположение: Varna

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

Мнение от 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-а не ми казва, че нямам грешка.
HTC 7 Trophy 7.8 & iPod 2g 4.2.1 greenpoison
bggashnik
Мнения: 5
Регистриран на: 29 Ное 2010, 20:07

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

Мнение от 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;
}
Публикувай отговор