Poziom 5, Lekcja 43 - Wskaźniki
Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Zarejestruj się!

Poziom 5, Lekcja 43 - Wskaźniki

AutorWiadomość
Temat założony przez niniejszego użytkownika
Poziom 5, Lekcja 43 - Wskaźniki
» 2019-06-26 19:14:09
Cześć udało mi się napisać PD lecz nie wiem czy o to do końca chodziło. Od dłuższego czasu uczę się C++, wcześniej C, lecz wskaźniki to dla mnie trochę pięta achillesowa

Oto mój kod:
C/C++
#include <iostream>

using namespace std;

void sortuj( int * begin, int * end )
{
    int size = end - begin;
    for( int i = 0; i < size; ++i ) {
        for( int j = 0; j < size - 1; j++ ) {
            if( begin[ j ] < begin[ j + 1 ] )
                 swap( begin[ j ], begin[ j + 1 ] );
           
        }
    }
}

void wypisz( int * begin, int size )
{
    while( size > 0 )
    {
        cout << * begin << ' ';
        begin++;
        size--;
    }
}

int main()
{
    int tab[ 10 ] = { 0, 9, 1, 3, 8, 2, 6, 7, 5, 4 };
    sortuj( tab, tab + 10 );
    wypisz( tab, 10 );
   
    cout << '\n';
   
    int tab2[ 16 ] = { 9, 7, 8, 6, 5, 4, 4, 0, 9, 6, 7, 1, 6, 3, 1, - 100 };
    sortuj( tab2, tab2 + 15 );
    wypisz( tab2, 15 );
}


*Edit
A i jeszcze taki mały mankament, funkcja sortuje od największej do najmniejszej, a w podanym wyniku od najmniejszej do największej, ale to już jest mały szczegół.
P-174838
» 2019-06-26 20:29:49
Do końca na pewno nie o to chodziło, w końcu było napisane
postaraj się uniknąć przechodzenia na wskaźnik na początek i ilość elementów.
Twoje rozwiązanie też jest poprawne, ale jak masz problemy ze wskaźnikami, to każda okazja jest dobra żeby ten problem rozwiązywać.
P-174839
Temat założony przez niniejszego użytkownika
Dobrze?
» 2019-06-27 16:39:38
O taką funkcje sortującą chodziło ?
C/C++
void sortuj( int * begin, int * end ) {
    int size = end - begin;
    for( int i = 0; i < size; ++i ) {
        for( int * p = begin; p != end - 1; p++ ) {
            if( * p < *( p + 1 ) )
                 swap( * p, *( p + 1 ) );
           
        }
    }
}
P-174844
« 1 »
 Strona 1 z 1