Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

sortowanie

Ostatnio zmodyfikowano 2014-11-10 18:33
Autor Wiadomość
bolones
Temat założony przez niniejszego użytkownika
sortowanie
» 2014-11-10 17:14:37
Witajcie!
C/C++
#include <iostream>

using namespace std;

void moja_funkcja()
{
    cout << "[1] - obliczenie wybranego wyrazu ciagu fibonacciego" << endl;
    cout << "[2] - sortowanie babelkowe" << endl;
    cout << "[0] - wyjscie z programu" << endl;
}
void ciag_fibonacciego()
{
    int t[ 10000 ];
    int n;
    cout << "podaj ktory wyraz ciagu fibonacciego chcesz obliczyc" << endl;
    cin >> n;
    t[ 0 ] = 0;
    t[ 1 ] = 1;
    for( int i = 2; i <= n; i++ )
    {
        t[ i ] = t[ i - 1 ] + t[ i - 2 ];
    }
   
    cout << t[ n ] << endl;
}





void Sortowanie( int tab[ 5 ] )
{
   
    cout << "wprowadz liczby " << endl;
    for( int i = 0; i < 5; i++ )
    {
        cin >> tab[ i ];
    }
   
    for( int i = 0; i < 5; i++ )
    {
        for( int j = 0; j < 5 - 1; j++ )
        {
            if( tab[ j ] < tab[ j - 1 ] )
            {
                int bufor;
                bufor = tab[ j - 1 ];
                tab[ j - 1 ] = tab[ j ];
                tab[ j ] = bufor;
            }
           
        }
    }
}





int main()

{
    cout << "w programie sa dostepne nastepujace opcje:" << endl;
    moja_funkcja();
    int liczba;
    do
    {
       
        cin >> liczba;
        switch( liczba )
        {
        case 1:
            ciag_fibonacciego();
            break;
        case 2:
            Sortowanie( int tab[ 5 ] );
            break;
            default:
            break;
           
        }
    } while( liczba != 0 );
   
    return 0;
}

Mam problem z tym żeby wywolac funkcje "Sortowanie", wyskakuje mi błąd 'expected primary expresion before int' w linijce gdzie wywoluje funkcje w main. Moglby mi ktoś wytlumaczyc jak się poprawnie powinno wywolywac funkcje? Spotkalem się również z czyms takim 'int*tab' http://miroslawzelent.pl/wyklady/sortowanie-babelkowe-bubble-sort.pdf o co chodzi ?
pozdrawiam
P-120311
Atexor
» 2014-11-10 18:02:02
Witaj,
Nazwa tablicy jest jednocześnie wskaźnikiem na jej pierwszy element. Pan Zelent w swoim przykładzie przekazał do funkcji sortowania wskaźnik na pierwszy element tablicy oraz ilość elementów.

U Ciebie zaś problem głównie polega na tym, że tablicę deklarujesz w trakcie przekazania jej do funkcji co jest niedozwolone. Najlepiej zadeklaruj ją wcześniej, a potem przekaż 2 argumenty do funkcji - samą tablicę oraz jej rozmiar.

Tutaj masz to dokładniej wyjaśnione: http://cpp0x.pl/kursy/Kurs-C++​/Poziom-2​/Przekazywanie-tablic-jednowym​iarowych-do-funkcji​/324
P-120314
bolones
Temat założony przez niniejszego użytkownika
.
» 2014-11-10 18:20:43
C/C++
#include <iostream>

using namespace std;

void moja_funkcja()
{
    cout << "[1] - obliczenie wybranego wyrazu ciagu fibonacciego" << endl;
    cout << "[2] - sortowanie babelkowe" << endl;
    cout << "[0] - wyjscie z programu" << endl;
}
void ciag_fibonacciego()
{
    int t[ 10000 ];
    int n;
    cout << "podaj ktory wyraz ciagu fibonacciego chcesz obliczyc" << endl;
    cin >> n;
    t[ 0 ] = 0;
    t[ 1 ] = 1;
    for( int i = 2; i <= n; i++ )
    {
        t[ i ] = t[ i - 1 ] + t[ i - 2 ];
    }
   
    cout << t[ n ] << endl;
}





void Sortowanie()
{
    int tab[ 5 ];
    cout << "wprowadz liczby " << endl;
    for( int i = 0; i < 5; i++ )
    {
        cin >> tab[ i ];
    }
   
    for( int i = 0; i < 5; i++ )
    {
        for( int j = 0; j < 5; j++ )
        {
            if( tab[ j ] < tab[ j - 1 ] )
            {
                int bufor;
                bufor = tab[ j - 1 ];
                tab[ j - 1 ] = tab[ j ];
                tab[ j ] = bufor;
            }
           
        }
       
    }
   
    for( int k = 0; k < 5; k++ )
    {
       
        cout << tab[ k ];
    }
   
}





int main()

{
    cout << "w programie sa dostepne nastepujace opcje:" << endl;
    moja_funkcja();
    int liczba;
    do
    {
       
        cin >> liczba;
        switch( liczba )
        {
        case 1:
            ciag_fibonacciego();
            break;
        case 2:
            Sortowanie();
            break;
            default:
            break;
           
        }
    } while( liczba != 0 );
   
    return 0;
}

Costam poprawiłem, ale teraz, niby algorytm do sortowania poprawny, jednakże przy kompilacji program pokazuje jakies kosmiczne liczby.. POMOCY ; (
P-120317
Atexor
» 2014-11-10 18:26:41
Nie rozdzielasz wyświetlonych liczb i Ci się zlewa w jedno.

Na końcu funkcji Sortowania zmień wyświetlanie na np.:
cout << tab[ k ]<<" ";
P-120318
docentpp
» 2014-11-10 18:32:21
Wychodzisz poza zakres tablicy w sortowaniu !!!!!

C/C++
for( int j = 0; j < 5; j++ )
{
    if( tab[ j ] < tab[ j - 1 ] ) // Error !!!  jaki jest indeks tablicy dla j=0 ?!?!?!
   
P-120319
bolones
Temat założony przez niniejszego użytkownika
.
» 2014-11-10 18:33:43
Ok super, dzięki :) poczytam to co mi wysłałeś. Temat zamknięty
P-120320
« 1 »
  Strona 1 z 1