Problem z wyswietlaniem elementow tablicy od najwiekszej do najmniejsze
Ostatnio zmodyfikowano 2013-10-07 23:03
lewozmywak Temat założony przez niniejszego użytkownika |
Problem z wyswietlaniem elementow tablicy od najwiekszej do najmniejsze » 2013-10-07 21:05:20 #include <iostream>
using namespace std;
int main() { cout << "Witaj w programie podaj wielkosc tablicy \n" << endl; int n, z; int max, min; int imax, imin; cin >> n; int * p = new int[ n ]; for( int i = 0; i < n; i++ ) { cin >> z; p[ i ] = z; } cout << "================================================" << endl; for( int i = 0; i < n; i++ ) { cout << p[ i ] << endl; } for( int j = 0; j < n; j++ ) { max = p[ 0 ]; for( int i = 0; i < n; i++ ) { if( p[ i ] > max ) { max = p[ i ]; imax = i; } } p[ imax ] = 0; cout << "wynik " << max << endl; } cin.get(); cin.get(); }
Mam program ktorym podaje wielkosć tablicy i kolejno wpisuje elementy. Następnie wyświetli mi on element od największego do najmniejszego, na takiej zasadzie że biorę pierwszy element z tablicy i porównuje go z następnym, jeśli element przy obiegu był pętli był największy to wypisuje go i ten ideks w tablicy zeruje i od nowa cała ta operacja... Robie to według zalecen ćwiczeniowaca ale jakoś nie wiem czemu mi to nie chce działać... pierwszy element tablicy porównuje z każdym jeśli większy to zapisuje go max i indeks w imax, a później to zeruje. innym z kolei problemem jest ze gdy pierwsza pozycja w tablicy jest największa to program się wsypuje dając tak komunikat: The variable 'imax' is being used without being initialized. tutaj to już zgupiałem. |
|
pekfos |
» 2013-10-07 21:06:52 imax zawiera śmieci. |
|
lewozmywak Temat założony przez niniejszego użytkownika |
» 2013-10-07 21:25:55 dzięki, nie wiem czemu miał śmieci skoro mu przypisałem wartość i ale ok... w deklaracji zmiennej przypisałem mu odrazu 0 to program już się nie wysypuje ale nadal mi to nie wiem czemu nie działa...
przykładowo 9 cyfr wpisuje : 4 6 1 0 5 8 3 8 2 a on mi to uporządkuje na 8 8 6 5 4 4 4 4 4 ... nie wiem naprawde co jest złego w tym kodzie... |
|
pekfos |
» 2013-10-07 21:33:18 |
|
lewozmywak Temat założony przez niniejszego użytkownika |
» 2013-10-07 22:10:52 for( int j = 0; j < n; j++ ) { min = p[ 0 ]; imin = 0; for( int i = 0; i < n; i++ ) { if( p[ i ] < min && p[ i ] != 0 ) { min = p[ i ]; imin = i; } } p[ imin ] = 0; cout << "wynik " << min << endl; }
teraz mam troche problem odwrotny, ma mi wyświetlać od najmniejszej do największej, z zerowaniem wyświetlonych już indeksów. Dla tablicy 55 2 85 31 8 11 63 to mam poukładane 2 8 11 31 55 0 0 ... nie wiem czy to wina warunku... sorry że tak zawracam gitare ale nie wiem czemu mi to topornie tak idzie, a chce być w miare ogarnięty na zbliżające kolokwia. |
|
pekfos |
» 2013-10-07 22:26:09 Zamiast p[0] musisz użyć dużej wartości. Gdy wyświetlisz wartość z indeksem 0 (tu 55) i wstawisz tam zero, to min otrzyma na początek 0 i to już jest najmniejsza wartość. |
|
lewozmywak Temat założony przez niniejszego użytkownika |
» 2013-10-07 23:03:09 wielkie dzięki kolego!!! |
|
« 1 » |