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

R. 43 - prośba o sprawdzenie zadania domowego

Ostatnio zmodyfikowano 2019-03-31 21:25
Autor Wiadomość
rottingham
Temat założony przez niniejszego użytkownika
» 2019-02-06 17:48:35
To zadanie spełnia funkcja void sortuj. Najniższą wartość przypisuje do zmiennej nLiczba.

Prawdę mówiąc nie wiem czy tracę informacje. Z tego co sprawdzałem to w tablicy są te same liczby i przed, i po.

EDIT.
Myślałem, że znalezienie najniższej wartości to już jakiś sukces. Czyli nie tędy droga?

EDIT 2.
Mimo, że liczby są te same to są one zastępowane na poziomie danych? Czy dobrze rozumiem?
P-173896
pekfos
» 2019-02-06 19:31:29
Jak zrobisz funkcję, która zwraca adres najmniejszej wartości z zakresu, to zaimplementowanie sortowania z jej użyciem jest już proste. Podpowiedź do zadania to algorytm, który używa znajdywania minimum do sortowania liczb.
P-173897
Apurimac
» 2019-02-06 23:01:42
Cześć jestem zielony w programowaniu, ale zainteresował mnie twój problem i też zacząłem rozgryzać to zadanie. Może Ci pomoże w znalezieniu ścieżki dojścia do rozwiązania po swojemu.
Poniżej mój kod. Pytanie do eksperta:

a) Czy fajny?
b) Czy ma błędy?

C/C++
#include <iostream>

using std::cout;

void wypisz( int *, int );
void sortuj( int *, int * );
void swap( int * first, int * second );

int main() {
   
    int tab[ 10 ] = { 0, 9, 1, 3, 8, 2, 6, 7, 5, 4 };
    sortuj( tab, tab + 10 );
    wypisz( tab, 10 );
   
    return 0;
}

void wypisz( int * arr, int size ) {
   
    cout << "{ "; for( int i = 0; i < size; i++ ) cout << arr[ i ] << " "; cout << "}\n";
}

void sortuj( int * begin, int * end ) {
   
    int i = 0, j = 0;
    while( j < 9 ) {
        while( i < 9 ) {
            if( *( begin + i ) >*( begin + i + 1 ) ) swap( begin + i, begin + i + 1 );
           
            i++;
        }
        j++;
        i = 0;
    }
}

void swap( int * first, int * second ) {
   
    int temp;
    temp = * first;
    * first = * second;
    * second = temp;
}
P-173899
pekfos
» 2019-02-06 23:05:54
Niefajny, ma błędy, pytaj we własnym temacie.
P-173900
rottingham
Temat założony przez niniejszego użytkownika
» 2019-02-13 14:37:42
Jak zrobisz funkcję, która zwraca adres najmniejszej wartości z zakresu, to zaimplementowanie sortowania z jej użyciem jest już proste

Czy ta funkcja jest napisana poprawnie? Tę funkcję już mogę próbować zaimplementować do sortowania? (pytam, bo dotychczasowe próby nie były zbyt udane)

C/C++
#include <iostream>

using namespace std;

int * szukanie( int * pTab, int * kTab )
{
    int * nLiczba = pTab;
   
    for( pTab; pTab != kTab; pTab++ )
    {
        if( * pTab < * nLiczba )
             nLiczba = pTab;
       
    }
   
    return nLiczba;
}

int main()
{
   
    int tab[ 10 ] = { - 50, - 60, - 88, 7, 6, 5, 49, 3, 2, - 2 };
   
    int * a = szukanie( tab, tab + 10 );
   
    cout << a << " " << * a << endl;
   
}

P-173945
pekfos
» 2019-02-13 17:50:04
Jest napisana poprawnie.
P-173947
rottingham
Temat założony przez niniejszego użytkownika
» 2019-03-19 23:50:49
Uff... Trochę to zajęło, ale mam nadzieję, że dobrze rozwiązałem zadanie.

Czy teraz zadanie jest wykonane poprawnie?

C/C++
#include <iostream>

using namespace std;

void nWartosc( int * pT, int * kT )
{
    int * nWartosc = pT;
    int a;
    for( int * wskaznik = pT; pT != kT; wskaznik++ )
    {
       
        if( * wskaznik < * nWartosc )
        {
            nWartosc = wskaznik;
        }
       
        if( wskaznik == kT )
        {
            a = * pT;
            * pT = * nWartosc;
            * nWartosc = a;
            pT++;
            wskaznik = pT;
            nWartosc = pT;
           
        }
       
    }
   
}

int main()
{
    int tablica[ 4 ] = { - 303, - 22, - 2, - 101 };
   
   
    nWartosc( tablica, tablica + 4 );
   
    for( int i = 0; i < 4; i++ )
         cout << tablica[ i ] << " ";
   
}
P-174224
killjoy
» 2019-03-20 00:20:25
Kod sortowania wygląda na poprawny, ale samo wywołanie:
C/C++
int tablica[ 4 ] = { - 303, - 22, - 2, - 101 };


nWartosc( tablica, tablica + 4 );

Nie jest poprawne dla przekazanej tablicy. Spróbuj wywołania np. dla takiej tablicy i wyciągnij wnioski:
C/C++
int tablica[] = { - 303, - 22, - 2, - 101, - 501 };


nWartosc( tablica, tablica + 4 );
P-174226
1 « 2 » 3 4
Poprzednia strona Strona 2 z 4 Następna strona