Sortowanie przez kopcowanie - błąd dotycząćy funkcji "swap"

Awatar użytkownika
Quaerens
Użytkownik
Użytkownik
Posty: 2489
Rejestracja: 5 wrz 2007, o 13:36
Płeć: Mężczyzna
Podziękował: 439 razy
Pomógł: 181 razy

Sortowanie przez kopcowanie - błąd dotycząćy funkcji "swap"

Post autor: Quaerens »

Kod: Zaznacz cały

#include <iostream.h>
#include <iomanip>
#include <cstdlib>
#include <time.h>
#include <algorithm>

int main(void)
{
    int i, j, k, m, x, r, w;
    int *tab=new int [r];
    cout<<"Wprowadz rozmiar tablicy:"<<" "<<endl; // Zmienna r deklaruje rozmiar kopca => rozmiar tablicy
    cin>>r;
    for(i=1;i<=r;i++) // Wypełniamy tablicę liczbami wybranymi przez użytkownika, całkowitymi!!
    {
                     cout<<"Wprowadz liczbe do kolumny numer"<<" "<<i<<endl;
                     cin>>w;
                     tab[i]=w;
    }
    // ZACZYNAM BUDOWAĆ KOPIEC!!
    for(i=2;i<=r;i++)
    {
                     j=i;k=j/2; //j=i To jest tablica pomocnicza, natomiast k=j/2 jest to tablica pomocniczna podzielona na pół.
                     x=tab[i]; // Zmienna "x" określa bieżącą, zdeklarowaną na samym początku tablicę.
                     while((k>0) && (tab[k]<x)) // Dopóki k>0 i połowa tablicy tab[k] mniejsza od rozmiaru tablicy pierwotnej wykonuj:
                     {
                                 tab[j]=tab[k];
                                 j=k;k=j/2;
                     }
                     tab[j]=x;
    }
    
    // ROZBIERAMY KOPIEC!!
    for(i=r;i>1;i--)
    {
                    swap(tab[1], tab[i]);
                    j=1;k=2;
                    while(k<i)
                    {
                              if((k+1<i) && (tab[k+1]>tab[k]))
                              m=k+1;
                              else
                              m=k;
                              if(tab[m]<=tab[j]) break;
                              swap(tab[j], tab[m]);
                              j=m; k=j+j;
                    }
    }
    
    cout<<"Po sortowaniu:"<<endl;
    for(i=1;i<=r;i++)
    {
                     cout<<" "<<tab[i]<<endl;
                     //cout<<endl;
    }
                     
    system("PAUSE");
    return 0;
}

Błąd tyczy się swapa'a i brzmi on:

`swap' undeclared (first use this function)

Nie wiem co jest nie tak...

Pozdrawiam!

Dodam tylko, że gotowy algorytm działa - ale w nim jest z góry ustalona liczebność zbioru. Moja modyfikacja polega na tym, że to użytkownik ustala ile i co ma być w tablicy.

Pozdrawiam!

-- 22 maja 2011, 12:05 --

Kod działa, przed

int main(void) dodajcie

using namespace std;

Jakby komuś się przydało.

Pozdrawiam!
Awatar użytkownika
argv
Użytkownik
Użytkownik
Posty: 569
Rejestracja: 27 maja 2009, o 01:27
Płeć: Mężczyzna
Podziękował: 51 razy
Pomógł: 66 razy

Sortowanie przez kopcowanie - błąd dotycząćy funkcji "swap"

Post autor: argv »

a

Kod: Zaznacz cały

using namespace std;
to gdzie zjadło ?
Xitami

Sortowanie przez kopcowanie - błąd dotycząćy funkcji "swap"

Post autor: Xitami »

#define swap(a,b) {int t=a; a=b; b=t;}
Awatar użytkownika
Quaerens
Użytkownik
Użytkownik
Posty: 2489
Rejestracja: 5 wrz 2007, o 13:36
Płeć: Mężczyzna
Podziękował: 439 razy
Pomógł: 181 razy

Sortowanie przez kopcowanie - błąd dotycząćy funkcji "swap"

Post autor: Quaerens »

Nieaktualny post
ODPOWIEDZ