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

Problem z wyswietlaniem elementow tablicy od najwiekszej do najmniejsze

Ostatnio zmodyfikowano 2013-10-07 23:03
Autor Wiadomość
lewozmywak
Temat założony przez niniejszego użytkownika
Problem z wyswietlaniem elementow tablicy od najwiekszej do najmniejsze
» 2013-10-07 21:05:20
C/C++
#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;
    }
   
    // wyswietlenie
    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.

P-93337
pekfos
» 2013-10-07 21:06:52
imax zawiera śmieci.
P-93338
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...
P-93342
pekfos
» 2013-10-07 21:33:18
C/C++
max = p[ 0 ];
imax = 0; // dopisz to
P-93343
lewozmywak
Temat założony przez niniejszego użytkownika
» 2013-10-07 22:10:52
C/C++
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.
P-93347
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ść.
P-93350
lewozmywak
Temat założony przez niniejszego użytkownika
» 2013-10-07 23:03:09
wielkie dzięki kolego!!!
P-93353
« 1 »
  Strona 1 z 1