Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem z kodem, Przełożenie z Pascala
Fallout
post
Post #1





Grupa: Zarejestrowani
Postów: 154
Pomógł: 0
Dołączył: 17.12.2003
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/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 (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował Fallout 24.07.2005, 15:54:18
Go to the top of the page
+Quote Post
sobstel
post
Post #2





Grupa: Zarejestrowani
Postów: 853
Pomógł: 25
Dołączył: 27.08.2003
Skąd: Katowice

Ostrzeżenie: (0%)
-----


chodzi ci chyba o floor" title="Zobacz w manualu PHP" target="_manual np. floor(10/4)
Go to the top of the page
+Quote Post
nospor
post
Post #3





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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) ...
Go to the top of the page
+Quote Post
Fallout
post
Post #4





Grupa: Zarejestrowani
Postów: 154
Pomógł: 0
Dołączył: 17.12.2003
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


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 (IMG:http://forum.php.pl/style_emoticons/default/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!

Ten post edytował Fallout 24.07.2005, 16:36:16
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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?
Go to the top of the page
+Quote Post
Fallout
post
Post #6





Grupa: Zarejestrowani
Postów: 154
Pomógł: 0
Dołączył: 17.12.2003
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


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

Ten post edytował Fallout 24.07.2005, 16:48:06
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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 (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
Go to the top of the page
+Quote Post
Fallout
post
Post #8





Grupa: Zarejestrowani
Postów: 154
Pomógł: 0
Dołączył: 17.12.2003
Skąd: Olsztyn

Ostrzeżenie: (0%)
-----


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  (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)

Może, troche złych słów użyłem, no cóż.. trudno się mówi (IMG:http://forum.php.pl/style_emoticons/default/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ą (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

No więc dobrze rozumieje z tym Pascalem i php? Pytam się, przyszłościowo (IMG:http://forum.php.pl/style_emoticons/default/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ś (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Dziękuję (IMG:http://forum.php.pl/style_emoticons/default/guitar.gif)

Ten post edytował Fallout 24.07.2005, 16:59:17
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 14:24