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

[C++]Przekazywanie tablic do funkcji.

Ostatnio zmodyfikowano 2012-11-23 19:49
Autor Wiadomość
abcde
Temat założony przez niniejszego użytkownika
[C++]Przekazywanie tablic do funkcji.
» 2012-11-22 19:13:49
Wracam troszkę do programowania po długiej przerwie i mam problem z przekazaniem tablicy do funkcji.
Nie chce mi działać wyświetlanie wyników po sortowaniu/ jak wyrzuce te linijki to wpisywanie i wyświetlanie wpisanych liczb działa.
Kod:
C/C++
#include <iostream>
using namespace std;

void sortowanie_wybieranie( int tablica[], int dlugosc );
void sortowanie_wstawianie( int tablica[], int dlugosc );
void sortowanie_babelkowe( int tablica[], int dlugosc );

int main()
{
    int dlugosc;
    cout << "Podaj dlugosc tablicy: ";
    cin >> dlugosc;
    int tablica[ dlugosc ];
    for( unsigned int i = 0; i < dlugosc; ++i ) //wypisywanie liczb
    {
        cout << "Podaj liczbe nr " <<( i + 1 ) << " : ";
        cin >> tablica[ i ];
    }
    cout << "Wpisales liczby:" << endl;
    for( int i = 0; i < dlugosc; i++ )
    {
        cout << tablica[ i ] << ", ";
    }
    cout << endl;
    cout << "Posortowane liczby przez wybieranie :" << sortowanie_wybieranie( tablica, dlugosc ) << endl;
    cout << "Posortowane liczby przez wstawianie :" << sortowanie_wstawianie( tablica, dlugosc ) << endl;
    cout << "Posortowane liczby przez babelkowanie :" << sortowanie_babelkowe( tablica, dlugosc ) << endl;
   
   
   
    return 0;
}

void sortowanie_wybieranie( int tablica[], int dlugosc )
{
    int min, min_j, temp;
    for( int i = 0; i < dlugosc; i++ )
    {
        min = tablica[ i ];
        for( int j = i; j < dlugosc; j++ )
        {
            if( tablica[ j ] < min )
            {
                min = tablica[ j ];
                min_j = j;
            }
        }
        temp = tablica[ i ];
        tablica[ i ] = tablica[ min_j ];
        tablica[ min_j ] = temp;
    }
}


void sortowanie_wstawianie( int tablica[], int dlugosc )
{
    int temp; // Zmienna do przechowania zamienianej wartosci.
    for( int i = 1; i < dlugosc; i++ )
    {
        // Czesc tablicy od [0] do [i-1] jest posortowana.
        int j = i;
        temp = tablica[ j ];
        while(( j > 0 ) &&( tablica[ j - 1 ] > temp ) )
        {
            tablica[ j ] = tablica[ j - 1 ];
            j--;
        } // while
        tablica[ j ] = temp;
    } // for
} // sortowanie_wstawianie()


void sortowanie_babelkowe( int tablica[], int dlugosc )
{
    int temp; // Zmienna do przechowania zamienianej wartosci.
    string napis;
    for( int i = 1; i < dlugosc; i++ )
    for( int j = dlugosc - 1; j >= i; j-- )
    {
        if( tablica[ j ] < tablica[ j - 1 ] )
        {
            temp = tablica[ j - 1 ];
            tablica[ j - 1 ] = tablica[ j ];
            tablica[ j ] = temp;
        } // if
    } // for
} // sortowanie_babelkowe()
P-69705
kubawal
» 2012-11-22 19:28:39
int tablica[ dlugosc ];
 

Nie można tworzyć tablicy o niestałym rozmiarze.
Zamiast tego:
int * tablica = new int[ dlugosc ];

A na końcu main():
delete[] tablica;
P-69710
abcde
Temat założony przez niniejszego użytkownika
» 2012-11-22 19:47:36
Po wprowadzeniu zaproponowanych zmian nadal wywala mi te same błędy co na początku w linijkach:
cout << "Posortowane liczby przez wybieranie :" << sortowanie_wybieranie( tablica, dlugosc ) << endl;

Błąd:
error: no match for 'operator<<' in 'std::operator<< [with _Traits = std::char_traits<char>](((std::basic_ostream<char, std::char_traits<char> >&)(& std::cout)), ((const char*)"Posortowane liczby przez wybieranie :")) << sortowanie_wybieranie(tablica, dlugosc)'|
P-69719
kubawal
» 2012-11-22 19:53:17
Przecież te twoje funkcje sortowania niczego nie zwracają! Nie można wyświetlić typu void !
P-69720
abcde
Temat założony przez niniejszego użytkownika
» 2012-11-23 19:49:00
Wymazałem całe te moje wypociny, co nie działały.
Już wiem dlaczego kod co tak się dopytywałem nie działał, bo tak jak napisano void nie zwracało mi nic.
Poprzerabiałem trochę i teraz to wygląda tak:
C/C++
#include <iostream>
#include <cstdlib>

using namespace std;



void sortowanie_wybieranie( int tablica[], int dlugosc );
void sortowanie_wstawianie( int tablica[], int dlugosc );
void sortowanie_babelkowe( int tablica[], int dlugosc );
void sortowanie_qsort( int tablica[], int lewy, int prawy );
void tablica_wyswietl( int tablica[], int dlugosc );

int main()
{
    int dlugosc;
    cout << "Podaj dlugosc tablicy: ";
    cin >> dlugosc;
    int tablica[ dlugosc ];
    for( unsigned int i = 0; i < dlugosc; ++i ) //wypisywanie liczb
    {
        cout << "Podaj liczbe nr " <<( i + 1 ) << " : ";
        cin >> tablica[ i ];
    }
   
    cout << "Sortowanie liczb" << endl << endl;
   
    cout << " Tablica zrodlowa: ";
    for( int i = 0; i < dlugosc; i++ )
         cout << tablica[ i ] << " ,";
   
    cout << endl << endl;
   
    sortowanie_wybieranie( tablica, dlugosc );
    cout << "Tablica posortowana (wybieranie): ";
    tablica_wyswietl( tablica, dlugosc );
    cout << endl << endl;
   
    sortowanie_wstawianie( tablica, dlugosc );
    cout << "Tablica posortowana (wstawianie): ";
    tablica_wyswietl( tablica, dlugosc );
    cout << endl << endl;
   
   
    sortowanie_babelkowe( tablica, dlugosc );
    cout << "Tablica posortowana (babelkowo): ";
    tablica_wyswietl( tablica, dlugosc );
    cout << endl << endl;
   
   
   
   
    sortowanie_qsort( tablica, 0, dlugosc - 1 );
    cout << "Tablica posortowana (QuickSort): ";
    tablica_wyswietl( tablica, dlugosc );
    cout << endl << endl;
   
   
   
   
   
    return 0;
}


void sortowanie_wybieranie( int tablica[], int dlugosc )
{
    int min, min_j, temp;
   
    for( int i = 0; i < dlugosc; i++ )
    {
        min = tablica[ i ];
       
        for( int j = i; j < dlugosc; j++ )
        {
            if( tablica[ j ] < min )
            {
                min = tablica[ j ];
                min_j = j;
            } // if
        } // for
       
        temp = tablica[ i ];
        tablica[ i ] = tablica[ min_j ];
        tablica[ min_j ] = temp;
       
    } // for
   
} // sortowanie wybieranie

void sortowanie_wstawianie( int tablica[], int dlugosc )
{
    int temp;
    for( int i = 1; i < dlugosc; i++ )
    {
       
        int j = i;
        temp = tablica[ j ];
       
        while(( j > 0 ) &&( tablica[ j - 1 ] > temp ) )
        {
            tablica[ j ] = tablica[ j - 1 ];
            j--;
        } // while
        tablica[ j ] = temp;
    } // for
} // sortowanie wstawianie

void sortowanie_babelkowe( int tablica[], int dlugosc )
{
    int temp;
   
    for( int i = 1; i < dlugosc; i++ )
    for( int j = dlugosc - 1; j >= i; j-- )
    {
        if( tablica[ j ] < tablica[ j - 1 ] )
        {
            temp = tablica[ j - 1 ];
            tablica[ j - 1 ] = tablica[ j ];
            tablica[ j ] = temp;
        } // if
    } // for
} // sortowanie babelkowe

void sortowanie_qsort( int tablica[], int lewy, int prawy )
{
    if( lewy < prawy )
    {
        int m = lewy;
        for( int i = lewy + 1; i <= prawy; i++ )
        if( tablica[ i ] < tablica[ lewy ] )
             swap( tablica[ ++m ], tablica[ i ] );
       
        swap( tablica[ lewy ], tablica[ m ] );
        sortowanie_qsort( tablica, lewy, m - 1 );
        sortowanie_qsort( tablica, m + 1, prawy );
    } // if
} // sortowanie qsort


void tablica_wyswietl( int tablica[], int dlugosc )
{
   
   
    for( int i = 0; i < dlugosc; i++ )
    {
        cout << tablica[ i ];
        if( i < dlugosc )
             cout << ",";
        else
             cout << ".";
       
    }
}




P-69776
« 1 »
  Strona 1 z 1