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

📄 ulti.c

📁 是C++的基础
💻 C
📖 第 1 页 / 共 2 页
字号:
	/*list file specification:
	listLen;
	data1,data2,data3;
	*/
	assertF(len!=NULL,"in readList,pointer len is null\n");
	assertF(listFileName!=NULL,"in readList,listFileName is null\n");
	/*open file*/
	assertF((inputFile=fopen(listFileName,"rb"))!=NULL,"input file error");
	/*read in list len*/
	fscanf(inputFile,"%d;",len);
	printf("len in %s is:%d\n",listFileName,*len);
	/*mem apply*/
	*listArr=(Type*)malloc(sizeof(Type)*(*len));
	assertF((*listArr)!=NULL,"in readList ,listArr apply failure\n");
	/*read in data*/
	for(i=0;i<*len-1;i++)
		fscanf(inputFile,"%f,",&(*listArr)[i]);
	fscanf(inputFile,"%f;",&(*listArr)[i]);
	/*show infomation*/
	showArrListFloat(*listArr,0,*len);
	
	fclose(inputFile);
}

void read2DArrFloat(Type*** twoDArr,int* rowNum,int* colNum,char* inputFileName)
{
	int i=0,j=0;/*iterator values*/
	FILE* inputFile;/*input file name*/
	/*2d arr file specification:
	rowNum,colNum;
	a11,a12,a13;
	...
	a31,a32,a33;
	*/
	assertF(rowNum!=NULL&&colNum!=NULL,"in readList,pointer len is null\n");
	assertF(inputFileName!=NULL,"in readList,listFileName is null\n");
	/*open file*/
	assertF((inputFile=fopen(inputFileName,"rb"))!=NULL,"input file error");
	/*read in colNum and rowNum*/
	fscanf(inputFile,"%d,%d;",rowNum,colNum);
	printf("RowNum and colNum in %s is:(%d,%d)\n",inputFileName,*rowNum,*colNum);
	/*mem apply*/
	twoDArrMemApply(twoDArr,*rowNum,*colNum);
	/*Read in data*/
	for(i=0;i<*rowNum;i++)
	{
		for(j=0;j<*colNum-1;j++)/*attention ,have to minus 1 here*/
			fscanf(inputFile,"%f,",&((*twoDArr)[i][j]));
		fscanf(inputFile,"%f;",&((*twoDArr)[i][j]));
	}
	/*show infomation*/
	show2DArrFloat((*twoDArr),*rowNum,*colNum);
	fclose(inputFile);
}

void read2DArrInt(int*** twoDArr,int* rowNum,int* colNum,char* inputFileName)
{
	int i=0,j=0;/*iterator values*/
	FILE* inputFile;/*input file name*/
	/*2d arr file specification:
	rowNum,colNum;
	a11,a12,a13;
	...
	a31,a32,a33;
	*/
	assertF(rowNum!=NULL&&colNum!=NULL,"in readList,pointer len is null\n");
	assertF(inputFileName!=NULL,"in readList,listFileName is null\n");
	/*open file*/
	assertF((inputFile=fopen(inputFileName,"rb"))!=NULL,"input file error");
	/*read in colNum and rowNum*/
	fscanf(inputFile,"%d,%d;",rowNum,colNum);
	printf("RowNum and colNum in %s is:(%d,%d)\n",inputFileName,*rowNum,*colNum);
	/*mem apply*/
	twoDArrMemApply(twoDArr,*rowNum,*colNum);
	/*Read in data*/
	for(i=0;i<*rowNum;i++)
	{
		for(j=0;j<*colNum-1;j++)/*attention ,have to minus 1 here*/
			fscanf(inputFile,"%d,",&((*twoDArr)[i][j]));
		fscanf(inputFile,"%d;",&((*twoDArr)[i][j]));
	}
	/*show infomation*/
	show2DArrInt((*twoDArr),*rowNum,*colNum);
	fclose(inputFile);
}

/*list ulti operation*/
Type maxValInList(Type* inList,int len)
{
	int i;/*iterator num*/
	Type maxData;
	assertF(inList!=NULL,"in maxValInList,inList is NULL\n");
	maxData=inList[0];
	for(i=1;i<len;i++)
		if(inList[i]>maxData)maxData=inList[i];
	return maxData;
}

Type maxAbsValInList(Type* inList,int len)
{
	int i;/*iterator num*/
	Type maxData;
	assertF(inList!=NULL,"in maxValInList,inList is NULL\n");
	maxData=(Type)fabs(inList[0]);
	for(i=1;i<len;i++)
		if(fabs(inList[i])>maxData)maxData=(Type)fabs(inList[i]);
	return maxData;
}

int listNotZero(Type* inList,int len)
{
	int i=0;/*iterator*/
	int flag;
	float e=(float)0.00001;/*the precise controller*/
	Type sum=0;
	
	assertF(inList!=NULL,"in list not zero,in list is null\n");
	
	sum=0;
	for(i=0;i<len;i++)
		sum+=inList[i];
	
	if(fabs(sum)<=e)flag=0;
	else flag=1;
	
	return flag;
}

/*matrix ulti operation*/
void matrixCopy(Type** sourceMatrix,Type** targetMatrix,int rowNum,int colNum)
{
	int i,j;/*iterator num*/
	assertF(sourceMatrix!=NULL,"in matrixCopy,sourceMatrix is null\n");
	assertF(targetMatrix!=NULL,"in matrixCopy,targetMatrix is null\n");
	for(i=0;i<rowNum;i++)
		for(j=0;j<colNum;j++)
			targetMatrix[i][j]=sourceMatrix[i][j];		
}

Type sumSomeRow(Type** inMatrix,int rowIndex,int colStart,int colEnd)
{
	Type sum;
	int j;
	
	assertF(inMatrix!=NULL,"in sumSomeRow,inMatrix is null\n");
	
	sum=0;
	for(j=colStart;j<=colEnd;j++)
		sum+=inMatrix[rowIndex][j];
	
	return sum;
}

Type sumSomeRowPower(Type** inMatrix,int rowIndex,int colStart,int colEnd,int powNum)
{
	Type sum;
	int j;
	
	assertF(inMatrix!=NULL,"in sumSomeRowPower,inMatrix is null\n");
	
	sum=0;
	for(j=colStart;j<=colEnd;j++)
		sum+=(Type)pow(inMatrix[rowIndex][j],powNum);
	
	return sum;
}


Type sumTwoRowBy(Type** inMatrix,int rowIndex1,int rowIndex2,int colStart,int colEnd)
{
	Type sum;
	int j;
	
	assertF(inMatrix!=NULL,"in sumSomeRowBy,inMatrix is null\n");
	
	sum=0;
	for(j=colStart;j<=colEnd;j++)
		sum+=inMatrix[rowIndex1][j]*inMatrix[rowIndex2][j];
	
	return sum;
}

Type sumArr_JKByList_K(Type** inMatrix,Type* inList,int rowIndex,int colStart,int colEnd)
{
	Type sum;
	int j;
	
	assertF(inMatrix!=NULL,"in sumSomeRow,inMatrix is null\n");
	assertF(inList!=NULL,"in sumSomeRow,inList is null\n");
	
	sum=0;
	
	for(j=colStart;j<=colEnd;j++)
		sum+=inMatrix[rowIndex][j]*inList[j];
	
	return sum;
}

Type sumArr_KJByList_K(Type** inMatrix,Type* inList,int colIndex,int rowStart,int rowEnd)
{
	Type sum;
	int i;
	
	assertF(inMatrix!=NULL,"in sumSomeRow,inMatrix is null\n");
	assertF(inList!=NULL,"in sumSomeRow,inList is null\n");
	
	sum=0;
	
	for(i=rowStart;i<=rowEnd;i++)
		sum+=inMatrix[i][colIndex]*inList[i];
	
	return sum;
	
	
}

Type sumArr1_IKByArr2_JK(Type** inMatrix1,Type** inMatrix2,int rowIndex1,int rowIndex2,int colStart,int colEnd)
{
	Type sum;
	int j;
	
	assertF(inMatrix1!=NULL,"in sumArr1_IKByArr2_IK,inMatrix1 is null\n");
	assertF(inMatrix2!=NULL,"in sumArr1_IKByArr2_IK,inMatrix2 is null\n");
	
	sum=0;
	
	for(j=colStart;j<=colEnd;j++)
		sum+=inMatrix1[rowIndex1][j]*inMatrix2[rowIndex2][j];
	
	return sum;
}
/*list data copy*/
void listArrCopy(Type* sourceListArr,Type* targetListArr,int len)
{
	int i;/*iterator num*/
	assertF(sourceListArr!=NULL,"in listArrCopy,sourceListArr is null\n");
	assertF(targetListArr!=NULL,"in listArrCopy,targetListArr is null\n");
	for(i=0;i<len;i++)
		targetListArr[i]=sourceListArr[i];
}

void listArrCopy2(Type* sourceListArr,Type* targetListArr,long sourceStartPos,long targetStartPos,long len)
{
	long i;/*iterator num*/
	long p1,p2;
	assertF(sourceListArr!=NULL,"in listArrCopy2,sourceListArr is null\n");
	assertF(targetListArr!=NULL,"in listArrCop2y,targetListArr is null\n");
	
	p1=sourceStartPos;
	p2=targetStartPos;
	/*init */
	i=0;
	while(i<len)
	{
		targetListArr[p2]=sourceListArr[p1];
		p1++;p2++;
		i++;
	}
}

/*random list data fill in*/
void radnomDataFillToList(Type* listArr,long length)
{
	Type tmpData;
	int i;/*iterator num*/
	
	assertF(listArr!=NULL,"in randomDataFillToList,listArr is null\n");
	srand((unsigned int) time (NULL));
	for(i=0;i<length;i++)
	{
		tmpData=((float)rand()/(float)32767)*(float)10000.0;
		listArr[i]=tmpData;
	}
}

Type eRandom(int upLimit)
{
	Type tmpData;
	Type tmpData2;
	do
	{
		tmpData2=rand();
		
		tmpData=((Type)tmpData2/(Type)32767)*(Type)upLimit;
	//	printf("%f ",tmpData);
	}
	while(tmpData>upLimit);
	//printf("%f ",tmpData);
	return tmpData;
}

/*ulti file operation*/
	extern FILE* createFile(char mode,char* fileName)
	{
		FILE* mFile;
		
		assertF(fileName!=NULL,"in createFile,listFileName is null\n");
		assertF(mode=='w'||mode=='r',"in create,mode pass in is error\n");
		if(mode=='w')
			assertF((mFile=fopen(fileName,"wb"))!=NULL,"in create file,output file open error\n");
		else 
			assertF((mFile=fopen(fileName,"rb"))!=NULL,"in create file,output file open error\n");
		
		return mFile;
	}

⌨️ 快捷键说明

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