измените целочисленные типы данных на двойные типы данных в переполнении стека

вот мой index.php

<html>
<head>
<title>Find shortest route!</title>
<script>
function clickMap(classID){
if (document.form1.fromClass.value.length == 0){
document.form1.fromClass.value = classID;
}else{
document.form1.toClass.value = classID;
}
}
</script>
</head>
<body>
<div>
<form name="form1" action="calPath.php" method="post">
<table>
<tr>
<td>Asal</td>
<td><input type="text" name="fromClass" placeholder="Masukkan ID Node Asal" /></td>
</tr>
<tr>
<td>Tujuan</td>
<td><input type="text" name="toClass" placeholder="Masukkan ID Node Tujuan"/></td>
</tr>
<tr>
<td> <input name=b1 type=submit value="Hitung Jarak"></td>
</tr>
</table>
</form>
</div>
</body>

а это мой dijkstra.php

    <?php
class Dijkstra {

var $visited = array();
var $distance = array();
var $previousNode = array();
var $startnode =null;
var $map = array();
var $infiniteDistance = 0;
var $numberOfNodes = 0;
var $bestPath = 0;
var $matrixWidth = 0;

function Dijkstra(&$ourMap, $infiniteDistance) {
$this -> infiniteDistance = $infiniteDistance;
$this -> map = &$ourMap;
$this -> numberOfNodes = count($ourMap);
$this -> bestPath = 0;
}

function findShortestPath($start,$to) {
$this -> startnode = $start;
for ($i=0;$i<$this -> numberOfNodes;$i++) {
if ($i == $this -> startnode) {
$this -> visited[$i] = true;
$this -> distance[$i] = 0;
} else {
$this -> visited[$i] = false;
$this -> distance[$i] = isset($this -> map[$this -> startnode][$i])
? $this -> map[$this -> startnode][$i]
: $this -> infiniteDistance;
}
$this -> previousNode[$i] = $this -> startnode;
}

$maxTries = $this -> numberOfNodes;
$tries = 0;
while (in_array(false,$this -> visited,true) && $tries <= $maxTries) {
$this -> bestPath = $this->findBestPath($this->distance,array_keys($this -> visited,false,true));
if($to !== null && $this -> bestPath === $to) {
break;
}
$this -> updateDistanceAndPrevious($this -> bestPath);
$this -> visited[$this -> bestPath] = true;
$tries++;
}
}

function findBestPath($ourDistance, $ourNodesLeft) {
$bestPath = $this -> infiniteDistance;
$bestNode = 0;
for ($i = 0,$m=count($ourNodesLeft); $i < $m; $i++) {
if($ourDistance[$ourNodesLeft[$i]] < $bestPath) {
$bestPath = $ourDistance[$ourNodesLeft[$i]];
$bestNode = $ourNodesLeft[$i];
}
}
return $bestNode;
}

function updateDistanceAndPrevious($obp) {
for ($i=0;$i<$this -> numberOfNodes;$i++) {
if(     (isset($this->map[$obp][$i]))
&&    (!($this->map[$obp][$i] == $this->infiniteDistance) || ($this->map[$obp][$i] == 0 ))
&&    (($this->distance[$obp] + $this->map[$obp][$i]) < $this -> distance[$i])
)
{
$this -> distance[$i] = $this -> distance[$obp] + $this -> map[$obp][$i];
$this -> previousNode[$i] = $obp;
}
}
}

function printMap(&$map) {
$placeholder = ' %' . strlen($this -> infiniteDistance) .'d';
$foo = '';
for($i=0,$im=count($map);$i<$im;$i++) {
for ($k=0,$m=$im;$k<$m;$k++) {
$foo.= sprintf($placeholder, isset($map[$i][$k]) ? $map[$i][$k] : $this -> infiniteDistance);
}
$foo.= "\n";
}
return $foo;
}

function getResults($to) {
$ourShortestPath = array();
$foo = '';
for ($i = 0; $i < $this -> numberOfNodes; $i++) {
if($to !== null && $to !== $i) {
continue;
}
$ourShortestPath[$i] = array();
$endNode = null;
$currNode = $i;
$ourShortestPath[$i][] = $i;
while ($endNode === null || $endNode != $this -> startnode) {
$ourShortestPath[$i][] = $this -> previousNode[$currNode];
$endNode = $this -> previousNode[$currNode];
$currNode = $this -> previousNode[$currNode];
}
$ourShortestPath[$i] = array_reverse($ourShortestPath[$i]);
if ($to === null || $to === $i) {
if($this -> distance[$i] >= $this -> infiniteDistance) {
$foo .= sprintf("tidak ada rute dari %d ke %d. \n",$this -> startnode,$i);
} else {
$foo .= sprintf('Dari %d => ke  %d = %d (Km) <br>tujuan [%d]: ikuti rute ini (%s).'."\n" ,
$this -> startnode,$i,$this -> distance[$i],
count($ourShortestPath[$i]),
implode('-',$ourShortestPath[$i]));
}
$foo .= str_repeat('-',20) . "\n";
if ($to === $i) {
break;
}
}
}
return $foo;
}
} // end class
?>

и это мой calPath.php

<?php
include("Dijkstra.php");

// I is the infinite distance.
define('I',1000);

// Size of the matrix
$matrixWidth = 100;

// $points is an array in the following format: (router1,router2,distance-between-them)
$points = array(
array("290","305",2.21),
array("154","179",13.3),
array("147","170",0.484),
array("144","147",7.26),
array("153","161",14.3),
array("126","127",10.3),
array("120","262",4.79),
array("92","95",8.68),
array("75","339",4.21),
array("382","59",0.243),
array("57","113",14.8),
array("43","57",5.89),
array("51","53",1.29),
array("50","51",3.21),
array("50","16",5.05),
array("319","16",0.813),
array("14","49",2.2),
array("46","47",11.9),
array("44","46",4.8),
array("41","42",12.2),
array("30","37",0.913),
array("36","37",9.63),
array("312","29",1.92),
array("23","27",2.13),
array("28","322",0.902),
array("22","315",2.51),
array("21","23",4.12),
array("326","2",11.8),
array("21","22",0.901),
array("1","326",52.5),
array("326","4",16.2),
array("2","3",7),
array("3","4",10.4),
array("3","327",11.7),
array("4","327",11.6),
array("327","5",0.316),
array("5","6",14.5),
array("5","8",36.1),
array("6","7",14.4),
array("7","8",15.9),
array("8","9",11.1),
array("7","10",20.9),
array("10","328",0.297),
array("10","329",0.293),
array("11","328",0.224),
array("9","11",1.27),
array("9","12",1.49),
array("12","329",0.137),
array("1","13",21),
array("325","1",6.29),
array("13","18",2.03),
array("13","14",1.84),
array("14","15",1.7),
array("16","17",0.717),
array("15","18",1.06),
array("16","324",1.02),
array("17","19",0.162),
array("18","20",2.66),
array("20","316",0.238),
array("20","21",2.56),
array("315","307",2.15),
array("315","23",4.09),
array("24","23",3.61),
array("24","25",2.73),
array("25","324",2.14),
array("23","26",2.24),
array("308","28",0.883),
array("26","322",2.42),
array("29","34",4.56),
array("29","31",5.99),
array("30","31",8.8),
array("28","33",1.51),
array("33","322",1.52),
array("32","33",1.15),
array("32","31",3.96),
array("30","32",10.5),
array("34","35",2.42),
array("35","320",0.501),
array("31","36",2.99),
array("34","36",5.51),
array("35","38",7.31),
array("38","321",8.91),
array("27","321",1.24),
array("321","39",18),
array("39","40",9.28),
array("39","42",6.75),
array("40","41",7.4),
array("321","43",13.6),
array("38","44",3.96),
array("320","45",5.3),
array("44","45",7.27),
array("41","375",11.9),
array("46","47",4.46),
array("46","48",5.16),
array("321","48",7.51),
array("49","319",0.794),
array("16","324",2.75),
array("49","16",2.88),
array("50","52",7.3),
array("52","40",7.77),
array("25","51",5.44),
array("53","317",0.276),
array("317","318",0.213),
array("39","53",11.9),
array("48","54",4.64),
array("54","380",0.699),
array("47","55",0.699),
array("55","56",1.92),
array("56","106",13.8),
array("47","379",4.14),
array("379","57",3.34),
array("54","107",9.23),
array("58","176",7.42),
array("383","381",0.155),
array("382","381",0.022),
array("379","60",22.5),
array("59","60",8.92),
array("60","61",30.5),
array("42","62",16),
array("62","63",1.45),
array("63","375",16.8),
array("61","373",9.65),
array("65","375",16.7),
array("61","64",2.85),
array("63","64",19.9),
array("64","375",25.4),
array("52","213",22.3),
array("65","373",11.1),
array("376","65",24.7),
array("376","66",18.1),
array("66","374",7.97),
array("66","67",9.16),
array("374","67",11.3),
array("67","373",14.6),
array("55","69",3),
array("69","68",8.12),
array("56","70",1.72),
array("69","70",3.35),
array("70","71",8.27),
array("71","372",0.786),
array("372","371",10.4),
array("68","371",1.18),
array("68","370",14.4),
array("370","72",23),
array("72","71",14.6),
array("370","336",36.4),
array("336","74",1.51),
array("74","73",28.5),
array("74","339",50.8),
array("75","337",22.7),
array("337","338",0.111),
array("337","76",31.5),
array("76","330",0.769),
array("330","332",0.461),
array("332","77",4.99),
array("76","80",7.81),
array("331","80",16.7),
array("77","331",18.1),
array("77","80",8.52),
array("77","78",5.95),
array("78","79",10.6),
array("79","331",11),
array("73","81",25.7),
array("81","78",20.2),
array("73","82",7.1),
array("81","82",22.6),
array("81","83",15.4),
array("83","79",18.3),
array("82","84",2.89),
array("84","85",1.16),
array("85","86",3.73),
array("341","86",2.84),
array("341","340",0.04),
array("340","86",1.43),
array("86","83",23),
array("72","369",8.52),
array("76","87",10.6),
array("80","87",11.8),
array("87","88",6.97),
array("338","88",30),
array("88","333",38.2),
array("333","334",16.8),
array("334","335",13.5),
array("75","89",31.9),
array("338","89",31.3),
array("89","90",33.7),
array("90","335",48.6),
array("86","91",9.19),
array("91","83",22.6),
array("91","367",59.3),
array("367","97",8.52),
array("367","92",11.8),
array("92","93",2.7),
array("93","96",3.23),
array("96","336",7.85),
array("97","117",0.754),
array("93","94",7.27),
array("96","98",9.24),
array("95","94",1.52),
array("94","363",0.336),
array("363","365",0.092),
array("98","365",0.682),
array("365","364",0.189),
array("98","364",0.558),
array("369","100",10.6),
array("100","99",3.22),
array("99","98",5.02),
array("100","101",15.3),
array("99","368",15.2),
array("101","368",0.853),
array("101","10",22),
array("54","104",1.87),
array("106","380",1.29),
array("106","105",2),
array("105","104",0.695),
array("105","103",14.7),
array("102","103",4.98),
array("104","108",4),
array("102","111",6.09),
array("111","108",5.26),
array("102","110",7.92),
array("111","110",4.62),
array("110","109",5.17),
array("108","109",5.82),
array("107","109",7.69),
array("107","57",3.39),
array("110","112",8.67),
array("112","113",5.57),
array("112","114",6.03),
array("113","114",5.59),
array("114","115",1.88),
array("58","115",1.39),
array("93","97",10.8),
array("117","366",0.508),
array("117","143",24.9),
array("116","121",4.49),
array("118","121",27.2),
array("116","119",13.1),
array("119","120",14.4),
array("122","118",1.1),
array("125","120",8.07),
array("119","124",10.8),
array("124","125",7.44),
array("124","127",6.61),
array("125","129",6.98),
array("129","127",4.93),
array("136","134",12.1),
array("126","136",0.822),
array("127","134",3.94),
array("134","135",3.08),
array("129","135",4.18),
array("134","130",4.8),
array("135","123",4.77),
array("130","131",0.614),
array("131","345",0.519),
array("123","345",1.17),
array("123","344",0.503),
array("344","342",0.101),
array("342","347",0.018),
array("347","342",0.021),
array("133","342",0.081),
array("131","132",0.701),
array("132","133",1.72),
array("123","137",0.871),
array("133","137",0.61),
array("136","128",6.76),
array("116","143",20.7),
array("142","116",17.9),
array("143","142",6.78),
array("141","142",24.3),
array("141","368",15.6),
array("141","144",17.5),
array("144","145",9.61),
array("128","150",5),
array("140","145",6.2),
array("145","357",0.202),
array("132","140",0.466),
array("137","138",0.288),
array("137","139",0.704),
array("139","133",0.318),
array("139","140",0.175),
array("138","154",1.91),
array("154","153",2.95),
array("140","155",1),
array("155","153",0.656),
array("155","149",3.31),
array("149","128",11.3),
array("149","151",7.26),
array("151","150",8.01),
array("151","152",6.77),
array("152","57",2.29),
array("157","156",0.297),
array("157","357",0.21),
array("157","346",0.184),
array("156","158",0.249),
array("346","158",0.266),
array("158","160",2.62),
array("152","159",2.5),
array("159","160",1.76),
array("152","161",7.23),
array("146","160",8.3),
array("146","147",4.57),
array("170","148",3.32),
array("170","164",2.02),
array("148","169",5.17),
array("115","169",8.71),
array("164","166",5.17),
array("166","165",3.27),
array("165","58",4.99),
array("146","168",3.64),
array("164","168",4.84),
array("167","168",0.272),
array("173","383",0.401),
array("167","171",3.46),
array("171","166",7.33),
array("171","172",3.01),
array("172","173",2.96),
array("172","165",8.5),
array("173","175",2.09),
array("162","161",11),
array("167","163",6.36),
array("163","162",0.481),
array("176","177",3.28),
array("177","175",1.22),
array("176","178",4.57),
array("177","178",2.13),
array("178","173",0.614),
array("59","174",4.05),
array("173","174",3.69),
array("179","161",5.99),
array("163","181",3.95),
array("181","182",2.17),
array("174","172",1.66),
array("182","180",3.41),
array("181","180",2.41),
array("184","179",11.2),
array("180","183",1.83),
array("183","184",4.75),
array("184","185",0.986),
array("185","349",1.02),
array("185","186",6.03),
array("187","186",2.55),
array("187","188",2.1),
array("188","361",0.61),
array("361","189",0.96),
array("188","190",2.52),
array("186","190",3.09),
array("189","191",5.34),
array("191","179",6.67),
array("191","192",4.24),
array("192","193",6.53),
array("154","195",0.912),
array("194","193",0.601),
array("194","195",1.65),
array("194","198",13.7),
array("189","196",9.43),
array("196","198",2.92),
array("197","196",6.15),
array("190","190",8.54),
array("118","201",5.57),
array("200","201",2.37),
array("199","200",5.53),
array("200","202",6.61),
array("202","351",7.62),
array("122","350",0.47),
array("199","350",0.391),
array("351","203",5.8),
array("203","204",9.31),
array("199","261",4.39),
array("203","205",6.28),
array("205","208",5.32),
array("205","206",4.15),
array("206","207",1.45),
array("207","359",2.42),
array("359","210",0.169),
array("210","359",0.044),
array("359","210",0.738),
array("208","209",3.14),
array("197","211",4.91),
array("196","212",4.47),
array("212","348",4.79),
array("212","348",0.579),
array("213","376",32.2),
array("373","378",19.7),
array("67","216",26.6),
array("378","214",8.6),
array("214","214",7.05),
array("216","217",5.92),
array("217","218",0.286),
array("218","219",0.999),
array("219","377",0.373),
array("215","377",0.445),
array("218","220",0.488),
array("220","215",1.12),
array("214","215",0.671),
array("220","221",0.868),
array("221","222",28),
array("222","223",32.2),
array("223","225",0.689),
array("224","360",1.54),
array("225","224",1.33),
array("223","227",3.09),
array("227","226",2.95),
array("226","225",2.95),
array("226","230",2.31),
array("230","228",0.687),
array("229","230",0.726),
array("228","229",0.274),
array("228","224",1.57),
array("227","231",14.3),
array("231","232",3.38),
array("239","233",8.17),
array("233","354",0.799),
array("234","354",0.108),
array("211","234",27.4),
array("239","232",0.685),
array("239","240",7.66),
array("234","240",8.48),
array("240","235",3.2),
array("235","237",5.31),
array("237","236",3.46),
array("237","352",3.62),
array("236","352",1.51),
array("352","353",0.048),
array("288","352",0.24),
array("237","247",1.14),
array("247","238",3.75),
array("246","247",2.83),
array("238","241",1.77),
array("241","245",6),
array("243","241",7.73),
array("246","244",9.41),
array("243","245",4.39),
array("244","243",0.215),
array("245","242",0.916),
array("242","248",4.23),
array("243","248",2.64),
array("248","251",2.83),
array("250","251",3.32),
array("244","250",3.59),
array("249","250",8.5),
array("252","249",9.92),
array("252","250",5.52),
array("253","251",6.64),
array("252","253",4.69),
array("226","252",5.74),
array("229","253",5.33),
array("246","254",3.66),
array("235","254",1.84),
array("254","249",0.418),
array("242","256",7.33),
array("256","255",5.35),
array("256","257",2.13),
array("257","258",3.61),
array("255","258",2.97),
array("255","356",0.441),
array("204","261",1.23),
array("261","260",1.25),
array("262","261",4.4),
array("122","262",0.814),
array("260","259",26.7),
array("259","265",7),
array("265","256",13.7),
array("263","210",14.6),
array("264","263",6.79),
array("264","268",7.49),
array("271","268",4.44),
array("268","269",1.65),
array("269","270",0.766),
array("270","272",2.94),
array("271","273",3.67),
array("272","273",1.82),
array("272","274",2.26),
array("274","273",1.79),
array("274","275",1.39),
array("266","273",5.39),
array("275","278",3.54),
array("278","267",0.973),
array("266","267",2.52),
array("266","279",1.64),
array("267","280",0.734),
array("280","277",0.947),
array("277","278",0.815),
array("279","280",2.79),
array("280","358",0.093),
array("358","281",1.19),
array("279","282",0.731),
array("283","282",6.26)
);

$ourMap = array();


// Read in the points and push them into the map

for ($i=0,$m=count($points); $i<$m; $i++) {
$x = $points[$i][0];
$y = $points[$i][1];
$c = $points[$i][2];
$ourMap[$x][$y] = $c;
$ourMap[$y][$x] = $c;
}

// ensure that the distance from a node to itself is always zero
// Purists may want to edit this bit out.

for ($i=0; $i < $matrixWidth; $i++) {
for ($k=0; $k < $matrixWidth; $k++) {
if ($i == $k) $ourMap[$i][$k] = 0;
}
}


// initialize the algorithm class
$dijkstra = new Dijkstra($ourMap, I,$matrixWidth);

// $dijkstra->findShortestPath(0,13); to find only path from field 0 to field 13...
$fromClass = $_POST['fromClass'];
$toClass = $_POST['toClass'];

$dijkstra->findShortestPath($fromClass, $toClass);

// Display the results

echo '<pre>';
//echo "the map looks like:\n\n";
//echo $dijkstra -> printMap($ourMap);
echo "\n\nrute terpendek dari  ".$fromClass." ke ".$toClass." adalah  :\n";
echo $dijkstra -> getResults((int)$toClass);
echo '</pre>';

?>

и это скриншот вывода моей программы
Скриншот вывода моей программы

и данные о расстоянии (км) являются целочисленными, хотя данные о расстоянии находятся через три цифры после запятой. и я хочу изменить данные расстояния (Km) с целочисленным типом, чтобы удвоить данные. Я пробовал много раз, но не получилось. Помогите мне, пожалуйста.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector