Problem z tablicą dynamiczną chyba

Odpowiedz Nowy wątek
2011-07-09 23:11
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 ?

edytowany 2x, ostatnio: FreZZy, 2011-07-09 23:14

Pozostało 580 znaków

2011-07-09 23:53

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


"Prawdziwa głupota zawsze pokona sztuczną inteligencję." Terry Pratchett

Pozostało 580 znaków

2011-07-09 23:57
qwertg
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 ;)

Pozostało 580 znaków

2011-07-10 00:03
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

Pozostało 580 znaków

2011-07-10 00:10
0

wszystko smiga (!) ^^

Dzięki wielkie za pomoc panowie

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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