Aplikasi Kalkulator Cerdas dengan PHP

Pada tulisan saya sebelumnya telah saya posting bagaimana membuat aplikasi konversi notasi infix-prefix-postfix serta aplikasi kalkulator formula 1 digit, kemarin sebenarnya ada tugas Struktur Data agar kalkulator formulanya bisa lebih dari 1 digit bahkan sampe sekian digit, kemarin udah tak buat dengan VB.Net tapi nggak tak posting.

Nah barusan saya iseng-iseng untuk buat pake bahasa PHP coz biar gak lupa coz terakhir pake PHP pas waktu Tugas Akhir  SMK suruh buat Perpustakaan digital. Selama kuliah ini belum pernah ada tugas pake PHP jadi ya… gitu deh.. takut kelupaan .

Berikut screenshot dan sourcecodenya.

Kalkulator Cerdas PHP

<html>
<head><title>Aplikasi Kalkulator Formula PHP</title></head>
<form method="post" action="" name="form1">
<table width=400 border=0>
<tr>
	<td>Ekspresi Matematika : </td>
	<td><input width="50" type="text" name="ekspresi"></td>
	<td><? echo $postfix; ?></td>

</tr>
<tr>
	<td></td>
	<td><input type="submit" name="submit" value="Hitung"></td>
	<td></td>

</tr>

</table>
</form>

<?php
$ekspresi = $_POST['ekspresi'];
$jmleks = strlen($ekspresi);
$jmleks -= 1;

function derajat($tandaop)
{
	if ($tandaop == '^')
	{
		$derajat = 3;
	}
	elseif ($tandaop == '*' || $tandaop == '/')
	{
		$derajat = 2;
	}
	elseif ($tandaop == '+' || $tandaop == '-')
	{
		$derajat = 1;
	}
	elseif ($tandaop == '(')
	{
		$derajat = 0;
	}
return $derajat;
}

for ($i=0; $i<=$jmleks; $i++)
{
	$data[$i]=substr($ekspresi, $i, 1);

}

$postfix = '';
$top1 = 0;
$top2 = 0;
for ($j=0; $j<=$jmleks; $j++)
{
	$r = $data[$j];
	if ($r != '*' && $r != '/' && $r != '+' && $r != '-' && $r != '^' && $r != '(' && $r != ')')
	{
		$postfix = $postfix . $r;
		if ($j == $jmleks)
		{
			$top2 += 1;
			$stack2[$top2] = $postfix;
			$postfix = '';
		}
	}
	elseif ($r == '(')
	{
		$top1 += 1;
		$stack1[$top1] = $r;
	}
	elseif ($r == ')' )
	{
		$top2 += 1;
		$stack2[$top2] = $postfix;
		$postfix = '';

		while ($stack1[$top1] != '(')
		{
			$top2 += 1;
			$stack2[$top2] = $stack1[$top1];
			$top1 -= 1;

		}
		$top1 -= 1;
	}

	elseif ($r == '*' || $r == '/' || $r == '+' || $r == '-' || $r == '^')
	{

		if ($data[$j-1] != ')')
		{
			$top2 += 1;
			$stack2[$top2] = $postfix;
			$postfix = '';
		}
		if ($top1 == 0 || derajat($r) > derajat($stack1[$top1]))
		{
			$top1 +=1;
			$stack1[$top1] = $r;
		}
		else
		{
			$top2 +=1;
			$stack2[$top2] =  $stack1[$top1];
			$top1 -= 1;
			if ($top1 == 0 || derajat($r) > derajat($stack1[$top1]))
			{
				$top1 +=1;
				$stack1[$top1] = $r;
			}
		}
	}
}

while ($top1 != 0)
{
	$top2 += 1;
	$stack2[$top2] = $stack1[$top1];
	$top1 -= 1;
}

/*
for ($k = 1; $k <= $top2; $k++)
{
echo $stack2[$k]. "<br>". "" ;
}*/

$top3 = 0;
for ($k = 1; $k <= $top2; $k++)
{
	$q = $stack2[$k];
	if ($q != '+' && $q != '-' && $q != '*' && $q != '/' && $q != '^')
	{
		$top3 += 1;
		$stack3[$top3] = $q;
	}
	if ($q == '+' || $q == '-' || $q == '*' || $q == '/' || $q == '^')
	{
		switch ($q)
		{
			case '+':
			$temp = $stack3[$top3-1] + $stack3[$top3];
			break;
			case '-':
			$temp = $stack3[$top3-1] - $stack3[$top3];
			break;
			case '*':
			$temp = $stack3[$top3-1] * $stack3[$top3];
			break;
			case '/':
			$temp = $stack3[$top3-1] / $stack3[$top3];
			break;
			case '^':
			$temp = $stack3[$top3-1] ^ $stack3[$top3];
			break;
		}
		$top3 -= 1;
		$stack3[$top3] = $temp;

	}
}

$hasilhitung = $stack3[$top3];

echo "Hasil Ekspresi Mat : <b>" . $_POST['ekspresi'] . "</b> = ". $stack3[1] . "<br> ";
echo "<hr>";
echo "Created by : <b>Asadullohil Ghalib</b> <a href='https://kubaat.wordpress.com'>https://kubaat.wordpress.com</a>";
?>
</htm>

Bagi temen-temen yang pingin nyoba kalkulatornya bisa langsung copy sourcecode diatas dan paste di notepad terus simpan dengan nama terserah misal : kalkulator.php

Atau langsung download di sini

terus letakkan di webserver lokal anda misal di /xampp/htdocs/kalkulator.php, Cara bukanya adalah bukan Browser misal : Mozilla Firefox dan ketikkan http://localhost/kalkulator.php

8 thoughts on “Aplikasi Kalkulator Cerdas dengan PHP

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s