向你这样的特殊需要,还是另外设计输入界面的好,用Edit很难控制;当然,仅就Edit本身的应用来说,就是GetWindowText/SetWindowText,中间处理一下字符串就可以了。
解决方案 »
- MFC用GDI+加载png格式图片
- 自定义函数如何跳回主函数
- 请教大家一个问题:如何在结构体中使用stl的vector,附代码
- MFC画图结果保存时,如何定义自已的文件扩展名???(回答既有分!)
- 谁能给个用com做的插件的例子
- 一个语句的意思
- 能够提供用delphi开发asp组件的资料么(尤其是和数据库相关的)
- 怎么样才能得到控件是disabled状态
- csv转换为excel,如何保持文本格式
- 请问如何做这样的菜单:在一个基于对话框的程序中,上面有一个保存按钮,我想在按这个按钮的时候,就在旁边弹出“保存类型一”、“保存类型二”等,程序中再根据相关的选择进行操作。谢谢!
- VC对话框程序加入CWebBrowser2控件,判断返回状态问题
- 请大虾进来: 为什么SetUnhandledExceptionFilter有时捕获不到错误?
#include <iostream>
#include <fstream>
#include <conio.h>
using namespace std;struct step //定义一个栈
{
int x,y,n; //x,y表示步子坐标,n表示步数
};void change(char **maze,int hang,int lie) //改变以下迷宫的样子,就为了好看点
{
for(int i=0;i<hang+2;i++)
{
for(int j=0;j<lie+2;j++)
switch(maze[i][j])
{
case '1': maze[i][j]='#';break;
case '+': maze[i][j]='+';break;
case '0': maze[i][j]='0';break;
case '.': maze[i][j]=' ';break;
}
}
}void step_to_step(char **maze,step *Step,int hang,int lie,int n)
{ //单步输出
for(int k=0;k<=n;k++)
{
for(int i=0;i<hang+2;i++)
{
for(int j=0;j<lie+2;j++)
{
if(Step[k].x==i&&Step[k].y==j)//????????????????????????
cout<<"."<<" ";
else cout<<maze[i][j]<<" ";
}
cout<<endl;
}
cout<<"这是第"<<k+1<<"步"<<endl<<endl;
getch();
}
}void out(char **maze,int hang,int lie,int i,int j) //输出所走的路程
{
if(i==1&&j==1) //若回到原点则表明无出路
{
cout<<endl;
cout<<"************************************************************"<<endl;
cout<<"|-------------此迷宫没有出路,所走路线如下图---------------|"<<endl;
cout<<"************************************************************"<<endl;
}
else //否则有出路
{
cout<<endl;
cout<<"************************************************************"<<endl;
cout<<"|----------------找到迷宫出路,如图所示--------------------|"<<endl;
cout<<"************************************************************"<<endl;
}
for(i=0;i<hang+2;i++) //输出步子
{
for(j=0;j<lie+2;j++)
cout<<maze[i][j]<<" ";
cout<<endl;
}
}void cure(char **maze,int hang,int lie)
{
int i=1,j=0,n=-1;
char Q;
step *Step; //定义一个存储路程的栈
Step=new step [hang*lie]; //事先给其分配一定的空间,[hang*lie]表示空间足够
if(maze[1][1]=='1')
{
cout<<"555..我进不去!!!"<<endl<<endl;
getch();
exit(0);
}
else while(maze[hang][lie]!='.') //由右、下、左、上的顺序判断是否走通
{ //'1'表示走不通,'+'表示已经走过但不通又回来的步子,'.'表示已经走过并通了的步子
if(maze[i][j+1]!='1'&&maze[i][j+1]!='.'&&maze[i][j+1]!='+')
{
if(i==1&&j==0)
{
cout<<"入口"<<endl;
}
else
cout<<"右"<<endl;
maze[i][j+1]='.';
j=j+1;
n++;
Step[n].x=i;
Step[n].y=j;
cout<<i<<","<<j;
} else if(maze[i+1][j]!='1'&&maze[i+1][j]!='.'&&maze[i+1][j]!='+')
{
cout<<"下"<<endl;
maze[i+1][j]='.';
i=i+1;
n++;
Step[n].x=i;
Step[n].y=j;
cout<<i<<","<<j;
}
else if(maze[i][j-1]!='1'&&maze[i][j-1]!='.'&&maze[i][j-1]!='+')
{
cout<<"左"<<endl;
maze[i][j-1]='.';
j=j-1;
n++;
Step[n].x=i;
Step[n].y=j;
cout<<i<<","<<j;
}
else if(maze[i-1][j]!='1'&&maze[i-1][j]!='.'&&maze[i-1][j]!='+')
{
cout<<"上"<<endl;
maze[i-1][j]='.';
i=i-1;
n++;
Step[n].x=i;
Step[n].y=j;
cout<<i<<","<<j;
} else //若走不通则返回上一步
{
if(i==1&&j==1) //当回到入口时,说明无通路,结束循环
break;
else
{
maze[i][j]='+'; //将走不通的点置为+
n--;
i=Step[n].x; //返回上一个点
j=Step[n].y;
cout<<"返回"<<endl<<i<<","<<j; //输出返回信息
}
}
if(i==hang&&j==lie)
cout<<"(出口)"<<" "<<"(共"<<n+1<<"步"<<")";
}
out(maze,hang,lie,i,j);
cout<<endl<<endl<<endl;
cout<<"是否单步输出(y/n):";
cin>>Q;
cout<<endl<<endl;
if(Q=='y')
{
change(maze,hang,lie);
step_to_step(maze,Step,hang,lie,n);
}
}int main()
{
char **maze; //定义一个迷宫,空间可动态
int hang,lie,i,j;
char Q;
cout<<"希望手动输入还是文件读入(s:手动输入,w:文件读入):";
cin>>Q;
cout<<endl<<endl;
if(Q=='s')
{
cout<<"请输入矩阵的行列"<<endl;
cout<<"行数:";
cin>>hang;
cout<<"列数:";
cin>>lie;
cout<<endl;
maze=new char *[hang+2]; //分配连续空间给迷宫
for(i=0;i<hang+2;i++)
maze[i]=new char [lie+2];
cout<<"请输入迷宫,0表示通路,1表示墙"<<endl;
for(i=1;i<=hang;i++)
for(j=1;j<=lie;j++)
cin>>maze[i][j];
}
else if(Q=='w')
{
ifstream infile("C:\\kadinu.txt",ios::in); //可用文件外部输入
infile>>hang;
infile>>lie;
maze=new char *[hang+2]; //分配连续空间给迷宫
for(i=0;i<hang+2;i++)
maze[i]=new char [lie+2];
for(i=1;i<=hang;i++)
for(j=1;j<=lie;j++)
infile>>maze[i][j];
cout<<"文件读取成功!"<<endl;
}
for(i=0;i<hang+2;i++) maze[i][0]='1';
for(i=0;i<lie+2;i++) maze[0][i]='1';
for(i=0;i<lie+2;i++) maze[hang+1][i]='1';
for(i=0;i<hang+2;i++) maze[i][lie+1]='1';
cout<<endl<<endl;
cout<<"********************您输入的迷宫为******************************"<<endl;
cout<<"行数:"<<hang<<" "<<"列数:"<<lie;
cout<<" "<<"入口:"<<"1,1"<<" "<<"出口:"<<hang<<","<<lie<<endl;
for(i=0;i<hang+2;i++)
{
for(j=0;j<lie+2;j++)
cout<<maze[i][j]<<" ";
cout<<endl;
}
cout<<endl<<endl<<"所走的步骤如下:"<<endl;
cure(maze,hang,lie);
cout<<endl<<endl;
getch();
return 0;
}
怎么转为MFC(exe)里的代码,
并且有输入0-1矩阵,和输出迷宫的界面
CString str_in;
m_edit_in.GetWindowText(str_in);
CString str_out = str_in;
str_out.Replace('1','*');
m_edit_out.SetWindowText(str_out);这段代码放到button响应函数里就行了
我找不到任何一点思路,那位高手指点指点l.....