Napraviti web aplikaciju kalkulator, potrebno je da aplikacija poseduje po jedno dugme za svaku od cetiri osnovne matematicke operacije

Nixy
12.05.2015
Одељци: Зид Питања и одговори Ивица Nixy | Кључне речи:
0

Коментари:

Нови одговор Нови коментар

Одговори:

Приказано 1-2 од 2 ставке.
<?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 | Кључне речи:
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 | Кључне речи:
1

Коментари:

Нови коментар

©Библиотека++ 2024 Развој сајта Ивица Лазаревић