Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Skrypty]Matematyka
ShadowD
post
Post #1





Grupa: Zarejestrowani
Postów: 1 333
Pomógł: 137
Dołączył: 25.03.2008
Skąd: jesteś??

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


Mam skrypty napisane przeze mnie i chciał bym was prosić o ocenę, a tak naprawdę o wytknięcie błędów. Zmienne są brzydko ponazywane ale to wersja, że tak powiem robocza. Skrypty poruszają bajeczne problemy...

Nie będę pisał dużo niech skrypty mówią same za siebie. ;p

[ANR] Zamiana znaków arabskich na rzymskie:

  1. <?php
  2. function anr($a)
  3.  {
  4.        
  5.    $znakiArabskie=array(1,4,5,9,10,40,50,90,100,400,500,900,1000);
  6.    $znakiRzymskie=array('I','IV','V','IX','X','XL','L','XC','C','CD','D','CM','M');
  7.    
  8.    for($i=12;$i>=0;$i--)
  9.    {    
  10.      while($a>=$znakiArabskie[$i])
  11.      {
  12.        $a=$a-$znakiArabskie[$i];
  13.        $anr=$anr.$znakiRzymskie[$i];
  14.      }
  15.    }
  16.    
  17.    return $anr;    
  18.  }
  19.  
  20. ?>


[RNA] Zamiana znaków rzymskich na arabskie:

  1. <?php
  2. function rna($a)
  3.  {
  4.  
  5.    $znakiRzymskie=array('I','V','X','L','C','D','M');
  6.    $znakiArabskie=array(1,5,10,50,100,500,1000);
  7.  
  8.    for($i=strlen($a)-1;$i>=0;$i--)
  9.    {
  10.      for($j=6;$j>=0;$j--)
  11.      {
  12.        if($a[$i]===$znakiRzymskie[$j])
  13.          $b[$i]=$znakiArabskie[$j];
  14.      }
  15.    }
  16.  
  17.    for($i=0;$i
  18.    {
  19.      $n=$i+1;
  20.  
  21.      if(isset($b[$n]))
  22.      {
  23.        if($b[$i]>=$b[$n])
  24.          $rna=$rna+$b[$i];
  25.         else
  26.          $rna=$rna-$b[$i];
  27.      }
  28.      else
  29.        $rna=$rna+$b[$i];
  30.    }
  31.  
  32.  return $rna;  
  33.  }
  34.  
  35. ?>


[NWD] Największy wspólny dzielnik:

  1. <?php
  2. function NWD($a,$b)
  3.  {
  4.    
  5.    if($a>=$b)
  6.    {
  7.      $A=$a;
  8.      $B=$b;      
  9.    }
  10.    else
  11.    {
  12.      $A=$b;
  13.      $B=$a;
  14.    }
  15.        
  16.    do
  17.    {
  18.      $R=$A%$B;
  19.    
  20.      $A=$B;
  21.      $B=$R;
  22.    }
  23.    while($R!=0);
  24.    
  25.    return $A;
  26.  }
  27.  
  28. ?>


[NWW] najmniejsza wspólna wielokrotność:

  1. <?php
  2. function zna($a,$b)
  3.  {
  4.    $nwd=nwd($a,$b);
  5.  
  6.    $i=$a*$b;
  7.  
  8.    $nww=$i/$nwd;
  9.    
  10.    return $nww;
  11.  }
  12.  
  13. ?>


Niektóre funkcje korzystają z poprzednich więc powiedzmy, że wszystkie są w jednym pliku.

@Administracja/Opiekunowie - Jeśli istnieje lepsze miejsce na poruszenie owego tematu chciał bym prosić o przeniesienie go w to miejsce. Z góry dziękuję.

Ten post edytował ShadowD 19.10.2008, 12:17:16
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
ShadowD
post
Post #2





Grupa: Zarejestrowani
Postów: 1 333
Pomógł: 137
Dołączył: 25.03.2008
Skąd: jesteś??

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


Mówiąc szczerze nie wiedziałem że któraś z tych funkcji istnieje, a nawet powiem więcej - nie szukałem ich. Skrypty piszę na matematykę by dostać za nie ocenę więc nie mogę korzystać z gotowców o ile można tak powiedzieć o funkcji która jest wbudowana w php.

A wędź proszę nie oceniać tych skryptów w tym względzie - mogłem to napisać na początku, moja wina... ;p

EDIT:

Połączyłem dwie funkcję w jedną:
  1. <?php
  2.  
  3.  function zar($a)
  4.  {
  5.    if(preg_match('/^[0-9]+$/D', $a))
  6.    {      
  7.      $znakiArabskie=array(1,4,5,9,10,40,50,90,100,400,500,900,1000);
  8.      $znakiRzymskie=array('I','IV','V','IX','X','XL','L','XC','C','CD','D','CM','M');
  9.      
  10.      for($i=12;$i>=0;$i--)
  11.      {    
  12.        while($a>=$znakiArabskie[$i])
  13.        {
  14.          $a=$a-$znakiArabskie[$i];
  15.          $zar=$zar.$znakiRzymskie[$i];
  16.        }
  17.      }
  18.    }
  19.    
  20.    if(preg_match('/^[IVXLCDM]+$/D', $a))
  21.    {
  22.      $znakiRzymskie=array('I','V','X','L','C','D','M');
  23.      $znakiArabskie=array(1,5,10,50,100,500,1000);
  24.      
  25.      for($i=strlen($a)-1;$i>=0;$i--)
  26.      {
  27.        for($j=6;$j>=0;$j--)
  28.        {
  29.          if($a[$i]===$znakiRzymskie[$j])
  30.            $b[$i]=$znakiArabskie[$j];
  31.        }
  32.      }
  33.  
  34.      for($i=0;$i<strlen($a);$i++)
  35.      {
  36.        $n=$i+1;
  37.  
  38.        if(isset($b[$n]))
  39.        {
  40.          if($b[$i]>=$b[$n])
  41.            $zar=$zar+$b[$i];
  42.           else
  43.            $zar=$zar-$b[$i];
  44.        }
  45.        else
  46.          $zar=$zar+$b[$i];
  47.      }
  48.    }
  49.    
  50.    if(!isset($zar))
  51.      $zar='Error';
  52.        
  53.    return $zar;    
  54.  }
  55. echo zar('X');
  56. ?>

1. Faktycznie można zastosować else. <<-- Poprawione
2. Prace nad połączeniem funkcji zostały rozpoczęte. <<-- Poprawione

Ten post edytował ShadowD 19.10.2008, 13:17:31
Go to the top of the page
+Quote Post

Posty w temacie


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: 3.10.2025 - 14:36