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: #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 ) { 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; 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--; } tablica[ j ] = temp; } }
void sortowanie_babelkowe( int tablica[], int dlugosc ) { int temp; 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; } } }
|
|
kubawal |
» 2012-11-22 19:28:39 Nie można tworzyć tablicy o niestałym rozmiarze. Zamiast tego: int * tablica = new int[ dlugosc ]; A na końcu main(): delete[] tablica; |
|
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)'| |
|
kubawal |
» 2012-11-22 19:53:17 Przecież te twoje funkcje sortowania niczego nie zwracają! Nie można wyświetlić typu void ! |
|
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:
#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 ) { 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; } } temp = tablica[ i ]; tablica[ i ] = tablica[ min_j ]; tablica[ min_j ] = temp; } }
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--; } tablica[ j ] = temp; } }
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; } } }
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 ); } }
void tablica_wyswietl( int tablica[], int dlugosc ) { for( int i = 0; i < dlugosc; i++ ) { cout << tablica[ i ]; if( i < dlugosc ) cout << ","; else cout << "."; } }
|
|
« 1 » |