Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Problem z kodem
Forum PHP.pl > Forum > Przedszkole
Fallout
Witam,

jako, że mi w php coś niewychodziło, zrobiłem sobie kod w Pascalu, gdzie działa prawidłowo. Następnie chciałem przełożyć go na php no i cyrk...

Kod w Pascalu:

Kod
program kat;

uses crt;

var

x,y,z,v, pozycji, wierszy, kolumn, reszta : integer;


begin
clrscr;
kolumn:=4; writeln('Kolumn: ',kolumn);
pozycji:=10; writeln('Pozycji: ',pozycji);
wierszy:= pozycji div kolumn; writeln('Wierszy: ',wierszy);
reszta:= pozycji mod kolumn; writeln('Reszta: ',reszta);

readln;

if reszta>0 then inc(wierszy);

writeln('<table>');

for x:=1 to wierszy do
  begin
   if x=1 then z:=0 else z:=y;
   inc(z);

   writeln('  <tr>');

   v:=x*kolumn;
   if v>pozycji then v:=pozycji;

   for y:=z to v do
    begin
     writeln('    <td></td>');
    end;

   writeln('  </tr>');
  end;

writeln('</table>');

  readln;

end.


Kod mam za zadanie przy danej liczbie pozycji, wyswietlic je co 4 razy w wierszach w tabeli.

Kod w php, ktory mi sie nieuruchamia tj. timed out... (zapewne cos z warunkami ale juz nie wiem co bo zmienialem fory na rozne sposoby, lecz bez rezulatu)

  1. <?php
  2.  
  3. function div($a,$b)
  4. {
  5.  return $b - ($a % $b);
  6. }
  7.  
  8. function mod($a,$b)
  9. {
  10.  return $a % $b;
  11. }
  12.  
  13. $pozycji = 10;
  14. $kolumn = 4;
  15. $wierszy = div($pozycji,$kolumn);
  16. $reszta = mod($pozycji,$kolumn);
  17.  
  18. if ($reszta>0) $wierszy++;
  19.  
  20. echo &#092;"<table align=\"center\" border=\"1\">\";
  21.  
  22. for ($x=1;$x<=$wierszy;$x++)
  23. {
  24. if ($x=1) $z=0; else $z=$y;
  25. $z++;
  26.  
  27. echo &#092;"<tr>\";
  28.  
  29. $v=$x*$kolumn;
  30. if ($v>$pozycji) $v=$pozycji;
  31.  
  32. for ($y=$z;$y<=$v;$y++)
  33. {
  34. echo &#092;"<td>KAT</td>\";
  35. }
  36.  
  37. echo &#092;"</tr>\";
  38. }
  39. echo &#092;"</table>\";
  40.  
  41.  
  42. ?>


Napewno nic strasznego tu nie jest, ale wprawne oko szybko zauwazy tu blad ja juz nie wiem o co temu php sie rozbiega winksmiley.jpg

dzieki z góry i
pozdrawiam

Marcin

AHA I jeszcze pytanie poza tematem:

W Pascalu jest jedna zajefajna rzecz.. Debugger, Watch itp. itd... czy istnieje narzedzie do php posiadajace podobna albo nawet taka sama funkcjonalnosc? Napewno z tym sobie bym poradzil a jakos przy takich forach i ifach moje oko nie nadaje sie na debuggowanie smile.gif Najlepiej jakby to bylo freeware..

No jak juz pytam to :

Szukalem i szukalem i sie nie doszukalem.. w php nie ma odpowiednika pascalowskiego DIV.. czy ta "funkcja" jest poprawna co napisalem? w manualu znalazem jeszcze cos takiego jak gmp_div ale to juz osobna biblioteka, ktorej nie ma w php pod Win..

to na tyle..

jeszcze raz dzieki smile.gif
sobstel
chodzi ci chyba o floor" title="Zobacz w manualu PHP" target="_manual np. floor(10/4)
nospor
Masz coś takiego: if ($x=1). Powoduje to że do $x przypisujesz 1 przez co warunek for nigdy nie jest spelniony. Porównywanie w php: ==
powinno byc
if ($x==1) ...
Fallout
Cytat(nospor @ 2005-07-24 16:15:28)
Masz coś takiego: if ($x=1). Powoduje to że do $x przypisujesz 1 przez co warunek for nigdy nie jest spelniony. Porównywanie w php: ==
powinno byc
if ($x==1) ...

no lol.. tego nie zauwazylem rolleyes.gif


co do floor.. czy to tylko dziala na liczbach nieujemnych?


Nowy problem:

nie wiem czemu ale pomija mi skrajne (tj. 5 i 9) pozycje? czy zasada działania for w Pascalu różni się od tej w php. Chodzi o to, że:

Kod
if x=1 then z:=0 else z:=y;
...
inc(z)
...
v:=x*kolumna; // (czyli x*4)
...
for y:=z to v do
begin
...
end


chodzi to mniej wiecej tak:

x=1; z:=0; y:=0; v=4
x=2; z:=5; y:=5; v=8
x=3; z:=6; y:=6; v=10 (bo przycina v>pozycji = pozycja)

czyli jak widac w for w pascalu liczenie zaczyna sie wraz z wartoscia Y

a w pascalu wychodzi na to ze petla liczy od wartosci Y.. dobrze mowie?

juz sie powoli gubie..

dzieki za pomoc!
nospor
Cytat
czyli jak widac w for w pascalu liczenie zaczyna sie wraz z wartoscia Y

a w pascalu wychodzi na to ze petla liczy od wartosci Y.. dobrze mowie?
Pytasz o pascal i php a dwa razy walisz pascal. Domyslam sie ze w drugim przypadku miales na mysli php.
Dobrze mówisz. jak dasz:
  1. <?php
  2.  
  3. for ($y=$z; $y<=$v; $y++)
  4. {
  5. //...
  6. }
  7.  
  8. ?>
to zaczniesz od $z a skonczysz na $v. I co z tego?
Fallout
Cytat(nospor @ 2005-07-24 16:27:15)
Cytat
co do floor.. czy to tylko dziala na liczbach nieujemnych?


Kod
<?php

$test = 5.6;
echo floor($test); //5

$test = -5.6;
echo floor($test); //-6

?>

The rounding mentioned in php Helper's post will work for both positive and negative numbers.
manual

Czy to tsak cięzko do manuala lub google zajrzeć? od razu z takim banalem na forum walić?

Hehe.. przyjme to jako żart... ZAWSZE zanim napisze na forum, czytam manuala, szukam po googlach i próbuje sam metodą prób i błędów rozwiązać swój problem...

Zasegurowałem się komentarzem w manualu:

Cytat
I
<?
$iPosDecimalNo = 5.67;
$iNegDecimalNo = -5.67;

print (int)$iPosDecimalNo;
print (int)$iNegDecimalNo;
?>

result will:

5
-5

No rounding up or down, just truncation and works for positive and negative numbers.


zauwaz takze, ze polskie tlumaczenie widocznie rozni sie od wersji angielskiej a i w przykladzie jest tylko pokazane na liczbach dodatnich.. troche więcej pokory i szacunku dobrze?

co do petli:

Problem rozwiązany: po pierwszym forze w warunku if ($x-1) $z=1 a dalej w natepnym for dalem for ($y=$z-1...)

I faktycznie drugie zdanie mialo byc php.

I chodzilo mi o to czy ja mam cos dziwnie skonsturowana petle czy faktycznie w Pascalu liczenie zaczyna sie wraz z zmienna a w php od tej zmiennej...

pozdrawiam i dziękuję za pomoc
Marcin
nospor
hehe, szacunku i pokory mówisz? Przyklad, który ci przytoczylem, znajduje się parę przykładów pod Twoim, który ty mi przytoczyłeś. Więc nie wiem co to ma wspólnego z pokorą.
Cieszę się że pomogłem biggrin.gif
Fallout
Cytat(nospor @ 2005-07-24 16:48:37)
hehe, szacunku i pokory mówisz? Przyklad, który ci przytoczylem, znajduje się parę przykładów pod Twoim, który ty mi przytoczyłeś. Więc nie wiem co to ma wspólnego z pokorą.
Cieszę się że pomogłem  biggrin.gif

Może, troche złych słów użyłem, no cóż.. trudno się mówi tongue.gif Ale fakt faktem, że posty na forum piszę gdy wczerpuję inne źródła wiedzy.. Co do komenta, fakt jest ale rzadko patrzę na wszystkie szczegółowo, bo czasami tam są takie kosmoy co jeszcze większy metlik w głowie zrobić mogą winksmiley.jpg

No więc dobrze rozumieje z tym Pascalem i php? Pytam się, przyszłościowo smile.gif

BTW. Właśnie odkryłem, że napisałem sobie kalendarz (wystarczy pare przeróbek), za który za nic nie moglem wymyślić jak go zrobić gdy go potrzebowałem, no LOL :-)

Fakt, pomogłeś smile.gif Dziękuję guitar.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.