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
|
©Библиотека++ 2025 Развој сајта Ивица Лазаревић