Problem z tablicą dynamiczną chyba

0
#include <iostream>

using namespace std;

main()
{     
    int unsigned long ilosc;
    cin >> ilosc;
    int *szczyty = new int[ilosc];
    for(int unsigned long i=0; i<ilosc; i++)
        cin >> szczyty[i];

    int unsigned long maxz, maxw;
    int unsigned long j, k;       

    for(k=0; k<ilosc; k++)                      //po koleji all punkty
    {
        maxz = szczyty[k];          // najbardziej na zachód i wschód jest wpierw
        maxw = szczyty[k];          // punkt którego bierzemy 
        j = k;                      
        do
        {   
                if(szczyty[j]>maxw)             //spr które na wschód wyższe
                        maxw=szczyty[j];
                j++;
        } while (j < ilosc-1);     

        j = k;  

        do
        {
                if(szczyty[j]>maxz)             //spr które na zachód wyższe
                        maxz=szczyty[j];
                j--;
        } while (j >= 0); 

        cout << maxz << " ";
        cout << maxw << endl;
    } 
    delete [] szczyty;
}

czemu mi się po uruchomieniu i wpisaniu wszystkich danych zawiesza program ?

1

W drugiej pętli do while zmienna j z 0 przeskakuje na liczbę w okolicach 4326679 więc pętla się nie zatrzyma. Zmień

int unsigned long j,k; 

na long int k,j;


W pierwszej pętli do while zmień warunek stopu na 
```cpp
 j<ilosc

bo nie sprawdzasz ostatniego elementu

1

zmień te okropne pętle do..while na 2 pętle for

Masz również zły przypadek bo błędnie zakładasz że maxz = szczyty[k] i maxw szczyty[k]...

wpisz sobie dla 5 prób : 5, 1, 2, 3, 4;
maxz = szczyty[k] , k = 0 (1 obieg pętli).
maxw = szczyty[k], k = 0(1 obieg pętli).

maxz zostanie będzie równe 5 natomiast maxw ? Największy szczyt na wschód czyli pozostaje nam do wybory 1,2,3,4
niestety ustawiłeś maxw na 5, zatem największym szczytem na wschód będzie 5 a takiego nie ma ;)

0

"maxz zostanie będzie równe 5 natomiast maxw ? Największy szczyt na wschód czyli pozostaje nam do wybory 1,2,3,4
niestety ustawiłeś maxw na 5, zatem największym szczytem na wschód będzie 5 a takiego nie ma"

To jest ok, w treści zadania jasno stoi że jak nie ma wyższego szczytu na zachód lub wschód to sprawdzany jest najwyższym

ancymon zaraz sprawdze

0

wszystko smiga (!) ^^

Dzięki wielkie za pomoc panowie

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0