2 ahelianthuss AHelianthuss 于 2014.07.05 13:30 提问

如何讲一段C++代码放入C#的windows窗体应用程序中做可视化界面

光纤铺设问题 我想用c#做张地图在上面画出最优铺设线路,C#画图我会,C++部分代码也完成了 我只是需要如何把C++代码放入C#中 。。。。不知道我的表达清不清晰
#include
#include
#include
#include
#include
#include
#define STATUS int
#define OK 1
#define ERROR 0
#define INFINITY INT_MAX
#define VERTEX_NUM 13
char a[VERTEX_NUM][20]={"信息楼","网络中心","图书馆","理学院","国际交流学院","体育馆","采矿馆","冶金馆","大成教学馆","综合楼","逸夫楼","何世礼教学馆","汉卿会堂"};
//建筑数组
typedef struct ArcCell
{
int distance;
bool pushe;//是否铺设的bool型变量
}ArcCell,DisMatrix[VERTEX_NUM][VERTEX_NUM];

typedef struct
{
char* name;
}VertexType;

typedef struct
{
VertexType vexs[VERTEX_NUM];
DisMatrix dist;
int vexnum;
}MGraph;//图结构

typedef struct
{
int adj;

}NODE;//堆排序数组

NODE Heap[25];
typedef struct UFSet
{
int x;
int y;
}UFSet;//并查集结构体

typedef struct
{
string name;
double x,y;
}Building;

UFSet set[25];
int rank[VERTEX_NUM];
int father[VERTEX_NUM];
STATUS ShowAllGraph(MGraph &G);//显示所有线路分布
STATUS CreateGraph(MGraph &G);//创建校园节点图
STATUS MiniSpanTree_KRUSCAL2(MGraph &G);//最小生成树KR2
void heapsort(int n);//排序
void Heapadjust(int i, int n);//调节大顶堆
void MakeSet(int x);//初始化并查集
int Find_set(int x);//查找父节点
void Uion_set(int x, int y);
void showMap(MGraph &G);
int menu();
STATUS ShowDist(int a,int b,MGraph &G)
{
printf("%s--%s(%d)\n",G.vexs[a],G.vexs[b],G.dist[a][b].distance);
return OK;
}
STATUS ShowAllGraph(MGraph &G)//显示所有节点及线路
{
int i,j;
for(i=0;i {
for (j=i+1;j {
if (G.dist[i][j].distance!=INFINITY) ShowDist(i,j,G);
}
}
return OK;
}
void heapsort(int n)//排序
{
int i,e;
for(i=(n-1)/2;i>=0;--i)
{
Heapadjust(i,n);
}

for(i=n-1;i>=1;--i)
{
e=Heap[0].adj;
Heap[0].adj=Heap[i].adj;
Heap[i].adj=e;
Heapadjust(0,i-1);
}
}
void Heapadjust(int s, int m)//调节大顶堆
{
int j;
int e=Heap[s].adj;
for(j=2*s;j<=m;j*=2)
{
if(j ++j;
if(e>=Heap[j].adj)
break;
Heap[s].adj=Heap[j].adj;
s=j;
}
Heap[s].adj=e;
}
void MakeSet(int x)//初始化并查集
{
father[x]=x;
rank[x]=0;
}
int Find_set(int x)//查找父节点
{
if (x != father[x])
{
father[x] = Find_set(father[x]);
}
return father[x];
}
void Uion_set(int x, int y)
{

if (x == y) return;
if (rank[x] > rank[y])
{
father[y] = x;
}
else
{
if (rank[x] == rank[y])
{
rank[y]++;
}
father[x] = y;
}
}

STATUS CreateGraph(MGraph &G)//创建一个图
{
int i,j,k;
G.vexnum =VERTEX_NUM;
for( i=0;i<VERTEX_NUM;i++)
{
G.vexs[i].name=a[i];
}

for(i=0;i<VERTEX_NUM;i++)
{
for (j=0;j<VERTEX_NUM;j++)
{
G.dist[i][j].distance=INFINITY;
G.dist[i][j].pushe=false;
}
}
G.dist[0][1].distance=103;
G.dist[0][2].distance=113;
G.dist[0][4].distance=170;
G.dist[1][2].distance=115;
G.dist[1][3].distance=128;
G.dist[2][3].distance=105;
G.dist[2][4].distance=154;
G.dist[2][6].distance=165;
G.dist[2][7].distance=288;
G.dist[2][9].distance=271;
G.dist[3][9].distance=240;
G.dist[3][11].distance=247;
G.dist[3][12].distance=229;
G.dist[4][5].distance=159;
G.dist[4][6].distance=97;
G.dist[5][6].distance=182;
G.dist[6][7].distance=151;
G.dist[7][8].distance=156;
G.dist[7][9].distance=173;
G.dist[8][9].distance=170;
G.dist[8][10].distance=354;
G.dist[9][10].distance=224;
G.dist[9][11].distance=153;
G.dist[10][11].distance=73;
G.dist[11][12].distance=267;
for(i=0;i<VERTEX_NUM;i++)
{
for (j=i+1;j<VERTEX_NUM;j++)
{
if (G.dist[i][j].distance!=INFINITY) G.dist[j][i].distance=G.dist[i][j].distance;
}
}
return OK;
}
STATUS MiniSpanTree_KRUSCAL2(MGraph &G)//最小生成树KR2
{
int i,j,k,m,n,x,y,z,a,b,c,d;
k=0;
m=0;
z=0;
for(i=0;i<G.vexnum;i++)
{
for(j=i;j<G.vexnum;j++)
{
if(G.dist[i][j].distance!=INFINITY)
{
Heap[k].adj=G.dist[i][j].distance;
k++;
}
}
}
for(i=0;i<G.vexnum;i++)
{
for(j=i;j<G.vexnum;j++)
{
if(G.dist[i][j].distance!=INFINITY)
{
set[z].x=i;
set[z].y=j;
z++;
}
}
}
for(a=0;a<G.vexnum;a++)
{
MakeSet(a);
}
heapsort(k);
while(m<25)
{
for(i=0;i<G.vexnum;i++)
{
for(j=i;j<G.vexnum;j++)
{
if(Heap[m].adj==G.dist[i][j].distance)
{
x=i;
y=j;
d=0;
while(d<25)

{
if(set[d].x==x&&set[d].y==y)
{
b=Find_set(set[d].x);
c=Find_set(set[d].y);
if(b==c)
{
Heap[m].adj=0;
}
else
{
Uion_set(b, c);
}
}
d++;
}
m++;
}
}
}
}
heapsort(k);
return 0;
}

void showMap(MGraph &G)
{

int i,j,k,x,y;
k=0;

while(Heap[k].adj==0)
{
k++;
}
while(k<25)
{
for(i=0;i<G.vexnum;i++)
{
for(j=i;j<G.vexnum;j++)
{
if(Heap[k].adj==G.dist[i][j].distance)
{
x=i;
y=j;
printf("%s--%s(%d)",G.vexs[x].name,G.vexs[y].name,Heap[k].adj);
printf("\n");
k++;
}
}
}
}
}

int menu()
{
char i;
printf(" ***************************************************************\n");
printf(" ***************************************************************\n");
printf(" 1.显示东大楼距 \n");
printf(" 2.克鲁斯卡尔二 \n");
printf(" 3.退出 \n");
printf(" ***************************************************************\n");
printf(" ***************************************************************\n");

return 0;

}
int main()
{
MGraph G;
int i;
CreateGraph(G);
while(1)
{
menu();
printf("Please press[1,2,3]to chose:");
scanf_s("%d",&i);
switch(i)
{
case 1:
ShowAllGraph(G);
break;
case 2:
MiniSpanTree_KRUSCAL2(G);
showMap(G);
break;
case 3:
return 0;
}
}
}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
C#编写简单窗体计算器
说起来话长......     大一学习了一年C++了,一直想做一个 GUI的简单计算器,但是在经理各种折磨之后决定放弃。。。。。     因为偶然的机会开始借出学习C#,或许因为有C++的基础,感觉上手还算容易!     在自学窗体后,又突然想起了曾经这个美妙的想法!话不多说,说做就做,在借鉴几篇博客之后,结果如下。     由于本人水平有限,大神莫见笑。 效果图:
c#经典编程实例(四窗体应用程序)
一:.NET中窗体应用程序就是一种GUI程序 窗体创建的两种方式: (1)自动生成的是: Application.Run(new Form1()); 相当于: Form1 f = new Form1(); Application.Run(f); (2)显示新的窗体 Form2 f = new Form2( ); f.Show(); 二
c语言开发窗口应用程序
1.学会制作带窗口界面的程序。 2.学会软件开发中常用的各种技术,如网络编程,多线程编程,数据库编程。 3.项目实战,让您知道软件是怎么一步一步制作的。可以学会c语言的模块化编程以及一些编程习惯和思路。
C#做的超市进销存管理系统(Windows窗体应用程序)
以前无聊做的个系统,用VS2005写的 bug肯定还是有的.功能不是很全 刚用VS2008运行一遍正常.有个2005备份的 .如果装了SQL2005,可以直接登录运行 里面有Word文档和PPT介绍. 账号:admin密码:123 1.进货管理 记录采购进货,采购退货,且可以查看所有的进货记录 2.销售管理 记录商品销售,顾客退货,可以查看仓库。 3.库存管理 记录商品变动情况,可以查看仓库。 4.日常管理 供货商管理,售后管理。 5.系统设置 操作员设置,仓库设置,返回主界面等
C# 一步一步完成一个简单的计算器 第一步---搭建计算器界面
这是本人第一篇文章谢谢大家关照,本人能力有限,麻烦大家轻喷. 正文开始 1.  创建项目 打开 Visual Studio(下文用VS 代替 Visual Studio ) , 文件->新建->项目.(如下图) 接下来,VS会打开名为"新建项目"的窗口  找到 Visual C# ->Windows -> 经典桌面 -> Windows 窗口应用程序 ,然后在窗口的下方 “名称
C#windows窗体猜数字小游戏
windows窗体开发的猜数字小游戏,休闲,益智。
C#学习笔记四 Windows窗体应用程序
窗体是程序与用户交互的可视界面,窗体也是对象,窗体类定义了生成窗体的模版,实例化一个窗体类就产生了一个窗体。.NET框架类库的System.Windows.Forms命名空间中定义的Form类是所有窗体类的基类。1、常用属性属性:图标、标题、位置、背景等可在窗体属性面板设置,也可以代码实现。(1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体。(2)WindowS
C#控制台与窗体应用程序
【C#之控制台与窗体应用程序】 标签: c#窗体应用程序.控制台应用程序 2016-02-18 16:56 1050人阅读 评论(10) 收藏 举报 本文章已收录于: 分类: ●【编程语言】(34) 作者同类文章X ———【C#】(8) 作者同类文章X 版权声明:
Windows窗体图书管理系统
关于图书管理系统数据库附加的说明 1、首先保证计算机上已经成功安装SQL Server 2005。 2、将数据库文件附加到数据库中。 3、如果当前计算机装有多个SQL Server 2005实例,请在BookManageSystem目录下打开app.config程序文件,将程序数据库连接字符串localhost改为localhost\你的数据库实例名。如果仅有一个实例,就不用修改了。 4、编译运行即可。
实现c#中winform窗体嵌入并操作可视化Excel表格
http://hi.baidu.com/softhiman/blog/item/9eca310732cd11c77a894747.html 本文讲的这个技术是把Excel表格嵌入到自己开发程序的Form窗体中进行操作,给客户一个不用切换窗口的操作界面,似乎更好。这在VC中用OLE技术很容易实现,但是在C#中方法就不一样啦。下面将就此进行阐述。一、首先简要回顾一下如何操作Excel表