博文
MATLAB7.0的安装问题(2007-04-12 23:31:00)
摘要: 不久前,我在网上下了MATLAB7.0,解压后,运行setup.exe,出现了以下安装问题: The installer cannot read the mwinstall.dll file, This is probably due to a CD reader which can only read files with an eight.three naming convention. 然后在网上找了很久,终于找到了解决方法,我想肯定还有很多人遇到过同样的麻烦,所以现在本人将解决方法帖出来:
对于压缩文件不要解压(这个很重要),而应直接双击压缩文件,再在内部双击setup文件,而安装前还需要做一道工作才能成功进行安装,即右键单击我的电脑,属性,高级,环境变量,将其中的系统变量temp,tmp的值改为c:\temp,并在c盘根目录下建立文件夹temp,这是由于matlab解压的默认缓存文件是c盘根目录的temp,做完这些便可以进行安装了,记住不要解压文件。
安装过程中基本是按默认的一路next下去,有一个叫输入pla,相当于注册码,输入13-22955-32678-26249-06848-40366-39620-03472-09765-20949-30945-19673-43738-38950-44548完成后你会发现打开后一会就自动关闭,不要惊慌,你的机器cpu一定是amd的,在你的安装文件夹下找到atlas_Athlon.dll文件,是用来让amd芯片进行正常工作的。因为当初mathwork公司是以intel芯片为目标的。找到这个文件比如路径是D:MATLAB7 \bin\win32\atlas_Athlon.dll,再次右键单击我的电脑属性,高级,环境变量,系统变量新建 变量名:BLAS_VERSION,值为D:MATLAB7 \bin\win32\atlas_Athlon.dll
到此整个过程完成。
......
图基本操作的实现(2006-12-20 23:22:00)
摘要: 图基本操作的实现
一、【实验内容】
【问题描述】
(1)、选择邻接表作为无向图的存储结构,设计一个程序实现图的基本操作(包括输出、广度遍历、深度遍历)
(2)、选择邻接矩阵作为无向图的存储结构,分别设计用prim求最小生成树和用克鲁斯卡尔求最小生成树的算法。
【基本要求】:
程序的菜单功能项如下:
1、 初始化(图的邻接表存储为空)//可以不要该选项
2、 图邻接表的建立 //针对的图为不带权图
3、 深度优先遍历 //针对的存储结构是2所建立起来的邻接表
4、 广度优先遍历 //针对的存储结构是2所建立起来的邻接表
5、 最小生成树(prim/克鲁斯卡尔)//该项操作要先建立带权图的邻接矩阵,然后才应用prim方法
6、 退出
二、实验目的
1. 掌握图的各种存储结构,特别要熟练掌握邻接矩阵和邻接表存储结构。
2. 遍历是图各种应用的算法的基础,要熟练掌握图的深度优先遍历和广度优先遍历算法,复习栈和队列的应用。
3. 复习类的操作和多文件的实......
哈夫曼编码/译码(2006-12-04 00:37:00)
摘要: 哈夫曼编码/译码
一、【实验内容】
【问题描述】
利用哈夫曼编码进行住处通讯可以大大提高信道利用率,缩短住处传输时间,降低成本,但是,这要求在发送端通过一个编码系统将传输的数据预先编码,在接收端通过一个译码系统对传来的数据进行译码(复原),对于双向传输信息的信道,每端都一个完整的编码译码系统,试为这样的住处收发站写一个哈夫曼友的编码译码系统.
【基本要求】:一个完整的系统应以下功能:
(1) I. 初始化(Initialization)。从终端读入字符集大小n,以及n个字符和n个权值,建立哈夫曼树,并将它存放在文件hfmTree中.
(2) E. 编码(Encoding)。利用已建立好的哈夫曼树(如不在内存,则从文件hfmTree中读入),对文件ToBeTran中的正文进行编码,然后将结果代码存(传输)到文件CodeFile中.
(3) D. 译码(Decoding)。利用已建好的哈夫曼树,对传输到达的CodeFile中的数据代码进行译码,将译码结果存入文件TextFile中.
(4) P. 印文件代码(Print)。将文件CodeFile以紧凑格式显示在终端上,每行50个代码。同时将此字符形式的编码文件写入文件CodePrin中。
(5) T. 印哈夫曼树(TreePrinting)。将已在内存中的哈夫曼树以直观的方式(树或凹入表的形式)显示在终端上,同时将此字符形式的哈夫曼树写入文件TreePrint中。
测试数据:
(1) 利用教科书例6-2中的数据调试程序。
(2) 用下表给出的字符集和频度的计数据建立哈曼树,并实现以下报文的编码和译码:“THIS PROGRAM IS MY FAVORITE”.。......
迷宫问题求解(C++非递归程序)(2006-12-10 13:34:00)
摘要:
一、【实验内容】
【问题描述】
以一个m*n的长方阵表示迷宫,0,1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论,
【基本要求】:首先实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归的程序,求得的通路以三元组(I,j,d)的形式输出,其中(i,j)指示迷宫中的一个坐标,d表示做到下一个坐标的方向。如:对于下列数据的迷宫,输出的一条通路为:(1,1,1),(1,2,2),(2,2,2),
(3,2,3),(3,1,2),……。
迷宫数据从文件中读取出来。
【测试数据】:
迷宫的测试数据如下:左上角(1,1)为入口,右下角(8,9)为出口
1 2 3 4 5 6 7 8
进0 0 0 1 0 0 1 0
0 0 1 0 0 0 1 0
0 0 0 0 1 1 0 1
0 1 1 1 ......
迷宫问题求解(C++递归程序)(2006-11-19 11:26:00)
摘要:#include<iostream>
#include<fstream>
using namespace std;
struct Move
{
int x;
int y;
}move[4]={{0,1},{1,0},{0,-1},{-1,0}};
bool Mazepath(int **maze,int x,int y,int m,int n);
void Restore(int **maze,int m,int n); //恢复路径
int** GetMaze(int &m,int &n);
int main()
{
int m=0,n=0;
int **maze;
maze=GetMaze(m,n);
if(Mazepath(maze,m,n,1,1))
cout<<"("<<m<<','<<n<<')'<<endl;
else cout<<"No path!\n";
return 0;
}
int** GetMaze(int &m,int &n)
//获取迷宫(可从文件中读取,也可输入)
//返回存取迷宫的二维指针
{
int **maze; //定义二维指针存取迷宫
int i=0,j=0;
char Choose; &......
任意长整数加法运算(C++)(2006-11-07 01:01:00)
摘要:
任意长整数加法运算(C++)
一、【实验内容】
【问题描述】
设计一个实现任意长的整数进行加法运算的演示程序
【基本要求】:利用双向循环链表实现长整数的存储,每个结点含一个整形变量。任何整形变量的范围是 -(215 - 1)~(215 - 1)。输入和输出形式:按中国对于长整数的表示习惯,每四位一组,组间用逗号隔开。
【测试数据】:
(1)0;0;应输出“0”。
(2)-2345,6789;-7654,3211;应输出“-1,0000,0000”。
(3)-9999,9999;1,0000,0000,0000;应输出“9999,0000,0001”。
(4)1,0001,0001;-1,0001,0001;应输出“0”。
(5)1,0001,0001;-1,0001,0000;应输出“1”。
(6)-9999,9999,9999;-9999,9999,9999;应输出“1,9999,9999,9998”。
(7)1,0000,9999,9999;1;应输出“1,0001,0000,0000”。
二、实验目的
1、熟悉掌握双向循环链表的基本操作;
2、熟悉任意长字符串的输入,并实现把字符串转化为整数;
3、熟悉任意长整数的加法运算;
4、更进一步掌握有关类的操作
三、实验文档:
长整数加法运算
一、需求分析
1、本程序实现计算任意长的整数的加法运算. 以用户和计算机对话的方式,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入演示程序中规定的运算命令,然后程序就计算并显示出这两个数的运算。
2、本演示程序中,集合的元素限定为数字字符[‘0’~’9’]和字符‘,’与‘;’,......
学生同学录管理系统(2006-10-22 16:43:00)
摘要:[问题描述]
实现学生通讯录管理的几个操作功能(新建、插入、删除、从文件中读取、写入文件和查询、屏幕输出等功能)。通讯录中学生的信息有学号、姓名、出生日期、性别、电话和地址等。
[内容]
1、利用链式存储结构来实现
2、系统的菜单功能项如下:
1----新建学生通讯录
2----向学生通讯录插入学生信息
3----在通讯录删除学生信息
4----在文件中读取通讯录信息
5----向文件中写入学生通讯录信息
6----在通讯录中查询学生信息
7----在屏幕中输出全部学生信息
8----退出
代码如下:
//通讯录.h
#include<iostream>
#include<fstream>
#include<string>
#include<iomanip>
using namespace std;
struct DataType //定义所有信息
{
char number[20]; //学号
char name[20]; //姓名
char birthday[20]; //生日
char sex[6];&nbs......
学生成绩管理系统(2006-09-21 13:49:00)
摘要: 学生成绩管理系统
(1)按顺序输入若干个学生信息
(2)插入一个学生信息(先输入插入位置,再输入学生信息)
(3)删除一个学生信息(先删除插入位置,再删除学生信息)
(4)修改已知学号的学生信息(按学号来找)
(5)查找已知学号的学生信息(按姓名来找)
(6)统计一个学生的总分成绩
(7)按总分从高到低输出学生成绩表
(8)显示所有学生的信息
(9)退出。
代码如下:
#include<iostream>
#include<string>
#include<iomanip>
using namespace std;
struct student
{
char name[15];
int number;
float chinese,math,English;
};
student s[50];
int i=0,n=0;
double allscore[50];
void insert();
void delete1();
void find();
void xiugai();
void tongji();
void sort();
void input();
void output();
void contin()
{
cout<<"是否继续操作(y/n)";
char a; int j;
cin>>a;
while(a!='y'&&a!='n')
cin>>a;
if(a=='y')
{
cout<<"你想继续做什么:";
cin>>j;
......
C++风格与技巧(转)(2006-05-29 00:16:00)
摘要:目录:
我如何写这个非常简单的程序?
为什么编译要花这么长的时间?
为什么一个空类的大小不为0?
我必须在类声明处赋予数据吗?
为什么成员函数默认不是virtual的?
为什么析构函数默认不是virtual的?
为什么不能有虚拟构造函数?
为什么重载在继承类中不工作?
我能够在构造函数中调用一个虚拟函数吗?
有没有“指定位置删除”(placement delete)?
我能防止别人继承我自己的类吗?
为什么不能为模板参数定义约束(constraints)?
既然已经有了优秀的qsort()函数,为什么还需要一个sort()?
什么是函数对象(function object)?
我应该如何对付内存泄漏?
我为什么在捕获一个异常之后就不能继续?
为什么C++中没有相当于realloc()的函数?
如何使用异常?
怎样从输入中读取一个字符串?
为什么C++不提供“finally”的构造?
什么是自动指针(auto_ptr),为什么没有自动数组(auto_array)?
可以混合使用C风格与C++风格的内存分派与重新分配吗?
我为什么必须使用一个造型来转换*void?
我如何定义一个类内部(in-class)的常量?
为什么delete不会将操作数置0?
我能够写“void main()”吗?
为什么我不能重载点符号,::,sizeof,等等?
怎样将一个整型值转换为一个字符串?
“int* p”正确还是“int *p”正确?
对于我的代码,哪一种布局风格(layout style)是最好的?
我应该将“const”放在类型之前还是之后?
使用宏有什么问题?
我如何写这个非常简单的程序?
特别是在一个学期的开始,我常常收到许多关于编写一个非常简单的程序的询问。这个问题有一个很具代表性的解决方法,那就是(在你的程序中)读入几个数字,对它们做一些处理,再把结果输出。下面是一个这样做的例子:
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
vector<double> v;
double d;
while(cin>......
C++编程人员容易犯的10个C#错误(转)(2006-05-29 00:13:00)
摘要:C#的语法与C++非常相似,有些变化引起的错误却很严重,本讨论C++编程人员最容易犯的十个错误。
我们知道,C#的语法与C++非常相似,实现从C++向C#的转变,其困难不在于语言本身,而在于熟悉.NET的可管理环境和对.NET框架的理解。尽管C#与C++在语法上的变化是很小的,几乎不会对我们有什么影响,但有些变化却足以使一些粗心的C++编程人员时刻铭记在心。在本篇文章中我们将讨论C++编程人员最容易犯的十个错误。
陷阱1: 没有明确的结束方法
几乎可以完全肯定地说,对于大多数C++编程人员而言,C#与C++最大的不同之处就在于碎片收集。这也意味着编程人员再也无需担心内存泄露和确保删除所有没有用的指针。但我们再也无法精确地控制杀死无用的对象这个过程。事实上,在C#中没有明确的destructor。
如果使用非可管理性资源,在不使用这些资源后,必须明确地释放它。对资源的隐性控制是由Finalize方法(也被称为finalizer)提供的,当对象被销毁时,它就会被碎片收集程序调用收回对象所占用的资源。finalizer应该只释放被销毁对象占用的非可管理性资源,而不应牵涉到其他对象。如果在程序中只使用了可管理性资源,那就无需也不应当执行Finalize方法,只有在非可管理性资源的处理中才会用到Finalize方法。由于finalizer需要占用一定的资源,因此应当只在需要它的方法中执行finalizer。直接调用一个对象的Finalize方法是绝对不允许的(除非是在子类的Finalize中调用基础类的Finalize。),碎片收集程序会自动地调用Finalize。
从语法上看,C#中的destructor与C++非常相似,但其实它们是完全不同的。C#中的destructor只是定义Finalize方法的捷径。因此,下面的二段代码是有区别的:
~MyClass()
{ // 需要完成的任务
}
MyClass.Finalize() {// 需要完成的任务
base.Finalize();
}
错误2:Finalize和Dispose使用谁?
从上面的论述中我们已经很清楚,显性地调用finalizer是不允许的,它只能被碎片收集程序调用。如果希望尽快地释放一些不再使用的数量有限的非可管理性资......