⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 d.cpp

📁 1、提取原蛋白质相互作用网络的所有节点 2、分别计算原蛋白质相互作用网络每个节点的度 3、从所有节点中选择具有最高度的节点
💻 CPP
字号:
#include<iostream>
#include<fstream>
#include<ctime>
#include<string>
#define NUM 40
using namespace std;
struct data
{
	string dip1;
	string dip2;
};
struct degree
{   string s;
	int t;
};
void sort(degree de1[NUM],int &m)
{
	int i;
	string na;
	int n;
	for(i=0;i<m-1;i++)
		for(int j=0;j<m-1-i;j++)
			if(de1[j+1].t>de1[j].t)
			{
				na=de1[j].s;
				n=de1[j].t;
			    de1[j].s=de1[j+1].s;
				de1[j].t=de1[j+1].t;
			    de1[j+1].s=na;
				de1[j+1].t=n;
			}
}
int Random (int a, int b)
{
 int area=0;
 int ret=0;
 //生成区间
 area=b-a+1;
 ret=(int)(rand()*area/(1.0 * RAND_MAX)+a);
 return ret;
}

void getrand(data d1[],degree de1[],int &m)
{
	int i,a=0,k;
	for(i=0;i<NUM;i++)
		{
		    if(de1[a].t==0) a++;
		    if(a==m) break;
		     k=Random(a+1,m-1);
		     d1[i].dip1=de1[a].s;
	         de1[a].t--;
             d1[i].dip2=de1[k].s;
			 de1[k].t--;
		     if(de1[k].t==0)
				{	
					for(int n=k;n<m-1;n++)
					{
						de1[n].s=de1[n+1].s;
					    de1[n].t=de1[n+1].t;
					}
				    m--;
				}
			//	cout<<i<<" "<<d1[i].dip1<<" "<<d1[i].dip2<<endl;
			}

}
int main()
{
    data d[NUM+1];
	string d1;
	string d2;
	int i=0;
	ifstream infile("huzuo2.dat");
	if(!infile)
	{
		cerr<<"open error!"<<endl;
		abort();
	}
    while(infile) 
	{		
		 infile>>d1>>d2;
	     d[i].dip1=d1;
	     d[i++].dip2=d2;
		}	
	infile.close();
    
	degree de[2*NUM];
	//string s2[40];
	int k=0,j=0;
	string ch=d[0].dip1;
	for(i=0;i<NUM+1;i++)
	{
		if(d[i].dip1==ch) k++; 
		else 
		{
		//	cout<<ch<<"  "<<k<<endl;
			de[j].s=ch;
			de[j++].t=k;
			ch=d[i].dip1;
		    k=1;
		}
    }

	int n=j-1,b=0;
	for(i=0;i<NUM;i++)
	{
		for(int a=0;a<n;a++) 
			if(d[i].dip2==de[a].s) {de[a].t++;i++;}
		for(int l=n;l<j;l++) 
			if(d[i].dip2==de[l].s) i++;
		for(int m=i+1;m<NUM;m++)
		  if(d[i].dip2==d[m].dip2) k++; 
		    de[j].s=d[i].dip2;
			de[j++].t=k;
		    k=1;	
	}
    sort(de,j);
    for(i=0;i<j;i++)  cout<<de[i].s<<"  "<<de[i].t<<endl;
    srand((unsigned)time(NULL));
	getrand(d,de,j);
	for(i=0;i<NUM;i++)  cout<<i<<" "<<d[i].dip1<<"    "<<d[i].dip2<<endl;
    ofstream outfile("negative.dat",ios::out);
	if(!outfile)
	{
		cerr<<"open error!"<<endl;
		abort();
	}
	for(i=0;i<NUM;i++)
		outfile<<d[i].dip1<<"    "<<d[i].dip2<<endl;
	outfile.close();
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -