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? |
|
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. |
|
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? #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; }
|
|
pekfos |
» 2019-02-06 23:05:54 Niefajny, ma błędy, pytaj we własnym temacie. |
|
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) #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; }
|
|
pekfos |
» 2019-02-13 17:50:04 Jest napisana poprawnie. |
|
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? #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 ] << " "; }
|
|
killjoy |
» 2019-03-20 00:20:25 Kod sortowania wygląda na poprawny, ale samo wywołanie: 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: int tablica[] = { - 303, - 22, - 2, - 101, - 501 };
nWartosc( tablica, tablica + 4 );
|
|
1 « 2 » 3 4 |