这次完完整整地悲剧了……
先是安装VC6,很好,很顺利,只是结果让我很惊讶:为什么我选了让它安装在F:\MVC\ 它居然把F:作为目录了……我一打开F,就看到满地的文件,很是不爽,于是卸掉重装。等我选文件夹时,他居然不许我安在F:\MVC还说“You have choosen a different directory.”
搞了半天才弄懂,原来一开始是让我选Common文件夹的位置,后来是让我选VC98、VB98、VFP的目录,这两个当然不能一样了。于是,把Common放在F:\MVC\common 其他的放在F:\MVC 终于安装好了,用向导建立了一个基本对话框……出错了!……(当时没截图,现在只记得是在提示说找不到什么 .h 文件。我彻底怒了,鼓捣了一个下午,安装了五六次,最后居然不能用!!于是把它彻底删干净,可惜我不懂注册表,不然我还把注册表也改回来。
软件还是简单的好啊,用TC编译 .c 的这段时间,虽然遇到了不少问题,也很怀念以前用VC6编译.c、.cpp的事,但是不管什么问题,我都能够弄清楚,倒是 VC6 一出问题我就没辙了。
没办法了,实验室的电脑,又不敢重装/还原系统,只好不用VC了,那用什么来写界面呢?想到最后还想给这个ikartool实现直接读取网页内容的功能,而 ikariam 的服务器又应该用的是php(网址出现:“.com/index.php?view=mili”,该是用的php吧),决定用php脚本编写它的界面。
那就开始安装了,照着Javaeye的教程安装Apache、php、ZendOptimizer、activeperl直到所有的都修改完(在这里讲几个小细节(不要拍我*_^):
ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php .php
# For PHP 4
ScriptAlias /cgi-bin/ "D:/Programmes/Server/Apache2.2/cgi-bin/"
及
<Directory "D:/Programmes/Server/Apache2.2/cgi-bin">
划线部分分别改为 C:/php/ 和 C:/php
——这里面的x-httpd-php .php中间确实有一个空格,删掉的话Apache会无法开启服务……
——所谓划线部分,其实就是引号里的所有。
——根本就没有那样的一行
——第133行就只有一个# 要是再加一个,那一行就变成##了,不过我没加)
安装倒是不难,但是,我要怎么实验 php 脚本是不是运行了呢?看着屏幕上的“It Works!”我却是一点Work的办法都没有。想想看,这些内容肯定是在某一个html文档中,想到这句话:
修改成
DirectoryIndex index.html index.html.var index.php
这样index.php 可以充当默认页面了
于是在Apache文件夹下查找index.html文件,打开第一个,高兴死了:

于是就开始“hello world!”了:
<html>
<body>
<h1>It works!</h1>
<?php
echo "hello world!";
?>
</body>
</html>
然后刷新 http://localhost 仍然只显示 It Works!
再看,“这样index.php可以充当默认页面了”。于是把 .html 重命名成 .php ,再刷新,终于hello world!了。
就这样,我开始了学习php的道路。(相信这并不是正常的运行php脚本的方法,但是它毕竟可行。)
在这里,顺便把昨天残余的一点问题解决掉(ikartool.c算法优化的问题):
Gold(t)=gold(0)+3*(pop+satisfy)*t-3*matwork-3*luxwork-9*scient+150satisfy*(exp(-0.02t)-1);
求驻点,得 t0=-50ln(1+(pop-matwork-luxwork-3scient)/satisfy) 处Gold(t)取极小值。
当 t0<0||t0>=0&&Gold(t0)>=0 时,Gold(t)全程为正,利用 Gold(t)==needgold 判据得到的 time 是可靠的。
当 t0>=0&&Gold(t0)<0 时,上述判据得到的 time 不可靠,因过程中 Gold(t) 有小于 0 的时候;此时使用 Gold(t0)==0 作为判据,计算matwork、luxwork、scient 的数量:
化简 Gold(t0)==0 得3*(pop+satisfy)+gold(0)/t0 ==3(matwork+luxwork+3*scient);
又 needmat-mat==matwork*t;
needlux-lux==luxwork*t;
needres-res==scient*t;
t0=-50ln(1+(pop-matwork-luxwork-3scient)/satisfy);
记 matwork+luxwork+3*scient 为 W ;
B+gold(0)/t0=3W;
t0=-50ln(1+(pop-W)/satisfy); 这两式中,仅 W 和 t0 是未知的。
得 W=-gold(0)/(150ln(1+(pop-W)/satisfy))+B/3;
即 W=pop-satisfy*(exp(gold/(50*(B-3W)))-1)
这就解决了C语言初试(三)所述第4条 needgold<=gold 的情况。
最后,若needmat<=mat||needlux<=lux||needres<=res时,因为他们都是不会减少的量,所以只需相应的取matwork=0、luxwork=0、scient=0即可。
啊呀~~这个事情被放在这里这么久了!国庆玩的真是太夸张了。
继续,
话说W该如何才能解出呢?
先看看W是什么:W=(matwork+luxwork+scient)+2*scient
t0呢:t0=-50ln(1+(pop-W)/satisfy) 与
tfull=-50ln(1-(house-pop)/satisfy) 对照
可知 t0 指的是 pop 达到 W 所需时间。
1.W>=satisfy+pop时,ln函数超出定义域:理所当然 => pop 上限是 satisfy+pop 当然 t0 不可能达到。
2.pop-W==0时迭代式 W=-gold(0)/(150ln(1+(pop-W)/satisfy))+B/3 分母为0。但:t0 按意义为 0 ,W为 pop
满足方程组。
唉~昨天又没有写这个算法,倒是学习了这么久的css,终于写了一个让我比较满意的界面,贴在这里,收掉这部分吧:

简直要把我逼疯了!才做到这里,现学现卖 CSS 都还好了,这下又要现学 SQL 了。努力吧!谁让你当初看见数据库就躲,遇到网络编程就退呢。
作者在尝试使用VC6遇到困难后转而学习PHP,并成功实现了基本的PHP脚本运行。期间解决了多种技术问题,包括配置Apache、安装PHP环境及解决ikartool.c算法优化问题。
1万+

被折叠的 条评论
为什么被折叠?



