![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 73 Pomógł: 0 Dołączył: 27.03.2008 Ostrzeżenie: (10%) ![]() ![]() |
Witam. Jako że mamy niedzielę, to nudziło mi się. Proszę o napisanie w czym jest błąd. Jest to program w C++ (wiadomo, wiadomo - większość z was lovit ten język, mi on wydaje się jednym z trudniejszych do nauczenia, lecz nie taki diabeł straszny, kiedy się pracuje nad mniejszymi programami).
Napisałem sortowanie przez wstawianie (plus porównywanie ze sobą elementów z tablicy), Niema tu main() ani nagłówków. Oto kod:
Program działa. Teraz napiszę poniżej co robię a co mi pokazuje - od razu dodam że pokazuje mi baaardzo duże liczby których teoretycznie (niewiem jak to praktycznie) - nie powinno być. Dobra. Przykład 1: Uruchamiam program. Pokazuje mi się: Ile elementow do posortowania? Wpisuję 3. Enter. Kolejno podaję 3 elementy aby je zapisać do tablicy a tablicę potem posortować: 1z3: 9 2z3: 5 3z3: -1 Enter. Pojawia się taki tekścik: Porownania: 1306224 > 9 9 > 5 1306224 > 9 9 > -1 Przykład 2: Uruchamiam program. Pokazuje mi się: Ile elementow do posortowania? Wpisuję 3. Enter. Kolejno podaję 3 elementy aby je zapisać do tablicy a tablicę potem posortować: 1z3: 9 2z3: 4 3z3: 8 Enter. Pojawia się taki tekścik: Porownania: 1306224 > 9 9 > 4 4 < 9 9 > 8 Przykład 3: Uruchamiam program. Pokazuje mi się: Ile elementow do posortowania? Wpisuję 3. Enter. Kolejno podaję 3 elementy aby je zapisać do tablicy a tablicę potem posortować: 1z3: 9 2z3: 15 3z3: 7 Enter. Pojawia się taki tekścik: Porownania: 9 < 15 15 = 15 1306224 > 15 15 > 7 Pytanie: Dlaczego w porównaniach pokazuje mi te duże liczby, kiedy to ja ich nie wpisywałem? Czy jest jakiś sposób na wykluczenie takich problemów? Ten post edytował Spawnm 10.10.2010, 18:40:49
Powód edycji: [Spawnm]:BBcode
|
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 471 Pomógł: 89 Dołączył: 29.07.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
int a['n']; // tablica n-elementowa
'' na pewno jest tutaj nie na miejscu |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 812 Pomógł: 117 Dołączył: 2.12.2008 Ostrzeżenie: (10%) ![]() ![]() |
Tak jak pisze @yevaud. Musisz utworzyć tablicę dynamicznie, bo w tej chwili deklarujesz tablicę 110-cio elementową (kod ascii znaku 'n' to 110).
Możesz też dla uproszczenia zadeklarować statyczną tablicę np 1e3 elementową pod warunkiem, że specyfikacja programu nie zezwala na utworzenie większej. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 471 Pomógł: 89 Dołączył: 29.07.2008 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
while ((i>=0) && (a[i]>p))
{ a[i+1]=a[i]; i=i-1; } z jaka wartoscia konczy zmienna i po wyjsciu z tej petli i jak to sie ma do pozniejszych porownan a[i] |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 73 Pomógł: 0 Dołączył: 27.03.2008 Ostrzeżenie: (10%) ![]() ![]() |
ok, dzięki za posty. Będę się musiał zaopatrzyć w jakaś Biblię do C++. (IMG:style_emoticons/default/laugh.gif) (IMG:style_emoticons/default/biggrin.gif) (IMG:style_emoticons/default/tongue.gif) (IMG:style_emoticons/default/happy.gif)
Co do programu to poprawiłem błędy. (IMG:style_emoticons/default/rolleyes.gif) Tablica dynamiczna: Kod ... int *a; a = new int[n]; ... i te duże liczby Kod ... a[i+1] = p; if (i < '0') i = '0'; ... Teraz śmiga jak należy. (IMG:style_emoticons/default/rolleyes.gif) |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 14:27 |