Napraviti web aplikaciju kalkulator, potrebno je da aplikacija poseduje po jedno dugme za svaku od cetiri osnovne matematicke operacije
Nixy 12.05.2015 Одељци: Зид Питања и одговори Ивица Nixy | Кључне речи: php kalkulator пхп IT Akademija
|
0
|
<?php // Ivica Lazarević, Aleksa Marković - 27.5.2015. // Bugfix #1 line 78, 29.5.2015. class Digitron { const NULA = 1; const AKUMULIRANJE_CIFARA = 2; const AKUMULIRANJE_CIFARA_SA_DECIMALOM = 3; const IZRACUNATO_OTVOREN = 4; const GRESKA = 5; public $stanje; public $rez; public $ac; public $op; public function __construct() { $this->stanje = $this->val('stanje', self::NULA); if($this->stanje === self::NULA){ $this->rez = '0'; }else{ $this->rez = $this->val('rez', 0); } $this->ac = floatval($this->val('ac', 0.0)); $this->op = $this->val('op', ''); } public function procitajPrvi($niz){ foreach($niz as $v){ return $v; } } public function izvrsiOperaciju($val) { if( ! $this->op){ $this->ac = $val; return; } switch($this->op){ case '+': $this->ac += $val; break; case '-': $this->ac -= $val; break; case '*': $this->ac *= $val; break; case '/': if ($val==0) { $this->stanje = self::GRESKA; } else { $this->ac /= $val; } break; } if($this->stanje === self::GRESKA){ $this->Err(); }else{ $this->rez = $this->ac; } } private function unetBroj($broj) { switch($this->stanje) { case self::NULA: if($broj == 0) break; $this->stanje = self::AKUMULIRANJE_CIFARA; case self::AKUMULIRANJE_CIFARA: case self::AKUMULIRANJE_CIFARA_SA_DECIMALOM: if($this->rez == 0 && ! $this->rez == "0.") $this->rez = $broj; else $this->rez .=$broj; break; case self::IZRACUNATO_OTVOREN: $this->stanje = self::AKUMULIRANJE_CIFARA; $this->rez = $broj; break; } } private function unetaTacka() { switch($this->stanje) { case self::NULA: case self::AKUMULIRANJE_CIFARA: $this->stanje = self::AKUMULIRANJE_CIFARA_SA_DECIMALOM; $this->rez .= '.'; break; } } private function unetaJednakost() { switch($this->stanje) { case self::AKUMULIRANJE_CIFARA: case self::AKUMULIRANJE_CIFARA_SA_DECIMALOM: $val = floatval($this->rez); $this->stanje = self::IZRACUNATO_OTVOREN; $this->izvrsiOperaciju($val); $this->op = ''; $this->ac = 0; break; } } private function unetaOperacija($op) { switch($this->stanje) { case self::NULA: $this->op = $op; break; case self::AKUMULIRANJE_CIFARA: case self::AKUMULIRANJE_CIFARA_SA_DECIMALOM: $val = floatval($this->rez); $this->izvrsiOperaciju($val); $this->op = $op; $this->stanje = self::IZRACUNATO_OTVOREN; break; case self::IZRACUNATO_OTVOREN: $this->op = $op; $this->ac = floatval($this->rez); break; } } private function unetoC() { $this->stanje = self::NULA; $this->ac = 0; $this->op = ''; $this->rez = 0; } public function Err() { $this->rez = 'greška'; } public function onDugme() { if( ($brojevi = $this->val('broj'))){ $broj = $this->procitajPrvi($brojevi); $this->unetBroj($broj); }elseif($operacije = $this->val('operacija')){ $operacija = $this->procitajPrvi($operacije); switch($operacija) { case '.': $this->unetaTacka(); break; case '=': $this->unetaJednakost(); break; case 'C': $this->unetoC(); break; default: $this->unetaOperacija($operacija); } } } function val($atribut, $default=null) { if(isset($_POST[$atribut])){ return $_POST[$atribut]; } return $default; } } ?> <!DOCTYPE html> <html lang="sr"> <head> <meta charset="UTF-8"/> <title>Дигитрон</title> <link rel="stylesheet" href="stil.css"> </head> <body> <form method="POST"> <?php $digitron = new Digitron(); $digitron->onDugme(); ?> <input type="text" name="rez" value="<?=$digitron->rez?>" readonly/> <br> <div style="float:left"> <?php for($i=9; $i>=0;$i--):?> <?=( ! ($i%3) ? '<br/>' : '')?> <input type="submit" name="broj[<?=$i?>]" style="width:30px;height:25px" value="<?=$i?>"/> <?php endfor;?> <input type="submit" name="operacija[.]" style="width:30px;height:25px" value="."/> </div> <div> <?php $operacije = array('+', '-', '*', '/','=','C');?> <?php foreach($operacije as $i => $operacija):?> <?=( ! ($i%2) ? ' '.'<br/>' : '')?> <input type="submit" name="operacija[<?=$i?>]" style="width:30px;height:25px" value="<?=$operacija?>"/> <?php endforeach;?> </div> <input type="hidden" name="stanje" value="<?=$digitron->stanje?>"/> <input type="hidden" name="ac" value="<?=$digitron->ac?>"/> <input type="hidden" name="op" value="<?=$digitron->op?>"/> </form> </body> </html>
Aleksa Marković 27.05.2015 Одељци: Зид Питања и одговори Ивица topofkeks | Кључне речи: IT Akademija |
1
|
<!DOCTYPE html> <html> <body> <form method="post"> <label for="broj1">Broj 1</label> <input id="broj1" type="text" name="tekst1" value="<?php echo ( isset($_POST['tekst1']) ? $_POST['tekst1'] : '') ?>"/> <br/> <label for="broj2">Broj 2</label> <input id="broj2" type="text" name="tekst2" value="<?php echo ( isset($_POST['tekst2']) ? $_POST['tekst2'] : '') ?>"/> <div> <input type="submit" name="plus" value="+"> <input type="submit" name="minus" value="-"> <input type="submit" name="puta" value="*"> <input type="submit" name="podeljeno" value="/"> </div> </form> <?php if ( ( isset($_POST["tekst1"]) ) && ( isset($_POST["tekst2"])) ){ $a=floatval($_POST["tekst1"]); $b=floatval($_POST["tekst2"]); if(isset($_POST['plus'])){ $r = $a+$b; }elseif(isset($_POST['minus'])){ $r = $a-$b; }elseif(isset($_POST['puta'])){ $r = $a*$b; } elseif (isset($_POST["podeljeno"])){ if ($b==0) $r = "Ne moze se deliti nulom "; //budalo else $r = $a/$b; } } if( isset($r)) echo "Rezultat je $r"; ?> </body> </html>
Aleksa Marković 15.05.2015 Одељци: Зид Питања и одговори Ивица topofkeks | Кључне речи: IT Akademija |
1
|
©Библиотека++ 2024 Развој сајта Ивица Лазаревић