![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 63 Pomógł: 0 Dołączył: 1.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Chce podzielic zdanie na dwie linijki, zalozmy ze jedna litera to 13px, maksymalna dlugosc to 590px, zdanie zlozone z 12 wyrazow lacznie zajmuje szerokosc 940px. Trzy petle: petla1 -> wykona sie tyle razy ile razy zostanie podzielone zdanie 940px / 590px = 2, pętla2 -> wykona sie tyle razy ile jest slow 12 pętla3 -> wykona sie dopoki laczna suma pikseli nie bedzie wieksza od 590, jezeli suma jest wieksza, zatrzymaj petle, wykonaj petle2 jeszcze raz i kontynuuj petle3 od zatrzymanego wyrazu... No to tyle jesli chodzi o opis ;] Wyklepalem cos takiego:
Teoretycznie dziala, ale po wykonaniu wywali mi blad: Fatal error: Maximum execution time of 30 seconds exceeded in (...) on line 48 I nie mam pojecia dla czego ;] |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Się petla nie konczy to przekraczasz czas wykonywania skryptu.
Teoretycznie ta podwójna pętla: while($nr_slowa < $wyrazow) { echo '</br>'; $px = 0; do { echo ''.$slowa[$nr_slowa].' '; $px = (strlen($slowa[$nr_slowa]) * $litera) + $px; $nr_slowa++; } while($px < $maxpx); } może się nigdy nie skonczyć. Masz warunek: while($nr_slowa < $wyrazow) a $nr_slowa zwiekszasz dopiero w tej wewnętrznej pętli. Może się okazać, że do wewnętrznej pętli już nie będzie wchodził, wówczas $nr_slowa się nie będzie zwiększać i ciągle będzie się kręcił w pętli na warunku $nr_slowa < $wyrazow -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 63 Pomógł: 0 Dołączył: 1.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Twoje rozwiazanie tez wywala przekroczony czas...
ok wykminilem ;p problem polega na tym ze dodanie kolejnego numeru do $nr_slowa nie moze odbyc sie wczesniej niz w koncowej petli bo program musi wiedziec na ktorym slowie zakonczyl ostatnia petle... rozwiazalem to dodajac w ostatniej petli if i exit()
dzieki bardzo za pomoc, do zamkniecia ![]() |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 172 Pomógł: 13 Dołączył: 15.11.2009 Ostrzeżenie: (0%) ![]() ![]() |
serwer musi mieć włączoną tę funkcję |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Twoje rozwiazanie tez wywala przekroczony czas... Jakie moje rozwiązanie? Ja ci nie podawałem żadnego rozwiązania. Ja ci podałem gdzie robisz błąd.@lDoran yyyy.....? Pętla się zapętla a ty jako tego rozwiązanie dajesz zwiększenie czasu wykonywania skryptu? Po Twoim rozwiązaniu skrypt się wywali po godzinie zamiast po 30 sekundach. Toć lepiej czekać 30 sekund niż godzinę na stwierdzenie, że pętla się zapetla. -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 63 Pomógł: 0 Dołączył: 1.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Jakie moje rozwiązanie? Ja ci nie podawałem żadnego rozwiązania. Ja ci podałem gdzie robisz błąd. o'rajt... jest 7:26 rano , nie spalem cala noc... ;] w takim razie twoja podpowiedz nakierowala mnie na rozwiazanie ;] dzieki kurcze to rozwiazanie tez nie jest dobre, przeciez przez exit() po wykonaniu petli nie moge juz nic dalej robic w skrypcie ;/ czy jest jakis inny sposob zeby wymusic zatrzymanie petli?? |
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat kurcze to rozwiazanie tez nie jest dobre, przeciez przez exit() po wykonaniu petli nie moge juz nic dalej robic w skrypcie Właśnie zastanawiałem się kiedy na to wpadniesz ![]() break konczy pętle. Ale ty musisz też zakonczyc pętle nadrzędną. Musisz więc w petli nadrzędnej dać warunek, że jesli jakaś zmienna jest ustawiona to wtedy konczysz pętle nadrzędną. Wówczas w petli podrzędnej ustawiasz te zmienną i zaraz potem robisz break - będzie śmigać aż miło ![]() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 63 Pomógł: 0 Dołączył: 1.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 06:58 |