📄 ulti.c
字号:
#include "Global.h"
#include "MyAssert.h"
#include "Ulti.h"
#include <stdlib.h>
#include <math.h>
#include <stdio.h>
#include <time.h>
void swap(Type* a,Type* b)
{
Type tmpV;
assertF(a!=NULL,"in swap,a is NULL");
assertF(b!=NULL,"in swap,b is NULL");
tmpV=*a;
*a=*b;
*b=tmpV;
}
/*swap array data*/
void swapArrData(Type* arr,int pos1,int pos2)
{
Type tmpData;
assertF(arr!=NULL,"In swapArrData,arr is NULL\n");
tmpData=arr[pos1];
arr[pos1]=arr[pos2];
arr[pos2]=tmpData;
}
void outputListArrFloat(Type* arr,long startPos,long len,FILE* outputFile)
{
long i=0;/*iterator num*/
assertF(len-startPos>0,"in outputListArrFloat len-startPos<=0\n");
assertF(arr!=NULL,"In outputListArrFloat,arr is NULL\n");
assertF(outputFile!=NULL,"in outputListArrFloat ,outputFile is NULL\n");
for(i=startPos;i<len;i++)
{
fprintf(outputFile,"%10.5f ",arr[i]);
if((i+1)%10==0)
fprintf(outputFile,"\r\n");
}
fprintf(outputFile,"\r\n");
}
extern void outputListArrInt(Type* arr,long startPos,long len,FILE* outputFile)
{
long i=0;/*iterator num*/
assertF(len-startPos>0,"in outputListArrFloat len-startPos<=0\n");
assertF(arr!=NULL,"In outputListArrFloat,arr is NULL\n");
assertF(outputFile!=NULL,"in outputListArrFloat ,outputFile is NULL\n");
for(i=startPos;i<len;i++)
{
fprintf(outputFile,"%3d",arr[i]);
if((i+1)%10==0)
fprintf(outputFile,"\r\n");
}
fprintf(outputFile,"\r\n");
}
extern void outputListArrInt2(int* arr,int startPos,int len,char* outputFileName)
{
FILE* outputFile;/*the outputFile for the data output*/
int i;/*iterator number*/
/*assertion*/
assertF(len-startPos>0,"in outputListArrFloat2 len-startPos<=0\n");
assertF(arr!=NULL,"In outputListArrFloa2t,arr is NULL\n");
assertF(outputFileName!=NULL,"in outputListArrFloat2,listFileName is null\n");
/*open file*/
assertF((outputFile=fopen(outputFileName,"wb"))!=NULL,"output file open error\n");
for(i=startPos;i<len;i++)
{
fprintf(outputFile,"%10d",arr[i]);
if((i+1)%10==0)
fprintf(outputFile,"\r\n");
}
fprintf(outputFile,"\r\n");
fclose(outputFile);
}
void outputListArrFloat2(Type* arr,int startPos,int len,char* outputFileName)
{
FILE* outputFile;/*the outputFile for the data output*/
int i;/*iterator number*/
/*assertion*/
assertF(len-startPos>0,"in outputListArrFloat2 len-startPos<=0\n");
assertF(arr!=NULL,"In outputListArrFloa2t,arr is NULL\n");
assertF(outputFileName!=NULL,"in outputListArrFloat2,listFileName is null\n");
/*open file*/
assertF((outputFile=fopen(outputFileName,"wb"))!=NULL,"output file open error\n");
for(i=startPos;i<len;i++)
{
fprintf(outputFile,"%10.5f ",arr[i]);
if((i+1)%10==0)
fprintf(outputFile,"\r\n");
}
fprintf(outputFile,"\r\n");
fclose(outputFile);
}
void outputListArrIntToMatlab(int* arr,int startPos,int len,char* outputFileName)
{
FILE* outputFile;/*the outputFile for the data output*/
int i;/*iterator number*/
/*assertion*/
assertF(len-startPos>0,"in outputListArrFloat2 len-startPos<=0\n");
assertF(arr!=NULL,"In outputListArrFloa2t,arr is NULL\n");
assertF(outputFileName!=NULL,"in outputListArrFloat2,listFileName is null\n");
/*open file*/
assertF((outputFile=fopen(outputFileName,"wb"))!=NULL,"output file open error\n");
fprintf(outputFile,"arr=[");
for(i=startPos;i<len;i++)
fprintf(outputFile,"%d ",arr[i]);
fprintf(outputFile,"]\r\n");
fclose(outputFile);
}
void outputListArrFloatToMatlab(Type* arr,int startPos,int len,char* outputFileName)
{
FILE* outputFile;/*the outputFile for the data output*/
int i;/*iterator number*/
/*assertion*/
assertF(len-startPos>0,"in outputListArrFloat2 len-startPos<=0\n");
assertF(arr!=NULL,"In outputListArrFloa2t,arr is NULL\n");
assertF(outputFileName!=NULL,"in outputListArrFloat2,listFileName is null\n");
/*open file*/
assertF((outputFile=fopen(outputFileName,"wb"))!=NULL,"output file open error\n");
fprintf(outputFile,"arr=[");
for(i=startPos;i<len;i++)
fprintf(outputFile,"%f ",arr[i]);
fprintf(outputFile,"]\r\n");
fclose(outputFile);
}
void output2DArrInt(Type** arr,int col,int row,FILE* outputFile)
{
int i=0,j=0;/*iterator value*/
assertF(arr!=NULL,"In output2DArr,arr is NULL\n");
assertF(outputFile!=NULL,"in output2DArr, outputFile is NULL");
for(i=0;i<col;i++)
{
for(j=0;j<row-1;j++)
{
fprintf(outputFile,"%d,",arr[i][j]);
}
fprintf(outputFile,"%d;\r\n",arr[i][j]);
}
}
void output2DArrFloat(Type** arr,int col,int row,FILE* outputFile)
{
int i=0,j=0;/*iterator value*/
assertF(arr!=NULL,"In output2DArr,arr is NULL\n");
assertF(outputFile!=NULL,"in output2DArr, outputFile is NULL");
for(i=0;i<col;i++)
{
for(j=0;j<row-1;j++)
{
fprintf(outputFile,"%f,",arr[i][j]);
}
fprintf(outputFile,"%f;\r\n",arr[i][j]);
}
}
void show2DArrInt(Type** arr,int col,int row)
{
int i=0,j=0;/*iterator value*/
int pos=0;/*output control*/
assertF(arr!=NULL,"In showArr,arr is NULL\n");
for(i=0;i<col;i++)
{
for(j=0;j<row-1;j++)
{
printf("%d,",arr[i][j]);
pos++;
if(pos>10)
{
printf("\n");
pos=0;
}
}
printf("%d;\n",arr[i][j]);
pos=0;
}
printf("\n");
}
void show2DArrFloat(Type** arr,int col,int row)
{
int i=0,j=0;/*iterator value*/
int pos=0;/*output control*/
assertF(arr!=NULL,"In showArr,arr is NULL\n");
for(i=0;i<col;i++)
{
for(j=0;j<row-1;j++)
{
printf("%f,",arr[i][j]);
pos++;
if(pos>10)
{
printf("\n");
pos=0;
}
}
printf("%f;\n",arr[i][j]);
pos=0;
}
printf("\n");
}
void showArrListInt(Type* arr,int startPos,int len)
{
int i=0;/*iterator num*/
assertF(len-startPos>0,"in sumArr len-startPos<=0\n");
assertF(arr!=NULL,"In showArrListFloat,arr is NULL\n");
for(i=startPos;i<len-1;i++)
printf("%d,",arr[i]);
printf("%d;\n",arr[i]);
}
void showArrListFloat(Type* arr,int startPos,int len)
{
int i=0;/*iterator num*/
assertF(len-startPos>0,"in sumArr len-startPos<=0\n");
assertF(arr!=NULL,"In showArrListFloat,arr is NULL\n");
for(i=startPos;i<len-1;i++)
printf("%f,",arr[i]);
printf("%f;\n",arr[i]);
}
Type sumArr(Type* inArr,int len)
{
int i=0;/*iterator num*/
Type ans=0;
assertF(inArr!=NULL,"in sumArr,inArr is NULL\n");
for(i=0;i<len;i++)
ans+=inArr[i];
return ans;
}
void arrEachBy(Type* firstArr,Type* secondArr,Type** ansArr,int len)
{
int i=0;/*iterator num*/
/*assertion*/
assertF(firstArr!=NULL,"in arrEachBy,firstArr is NULL\n");
assertF(secondArr!=NULL,"in arrEachBy,secondArr is NULL\n");
assertF(ansArr!=NULL,"in arrEachBy,ansArr is NULL\n");
for(i=0;i<len;i++)
(*ansArr)[i]=firstArr[i]*secondArr[i];
}
void reverseArr(Type** arr,int len)
{
int i=0,j=0;/*iterator num*/
Type* tmpArr;/*tmp arr*/
assertF(*arr!=NULL,"in reverseArr,arr is NULL\n");
/*memory apply*/
tmpArr=(Type*)malloc(len*sizeof(Type));
assertF(tmpArr!=NULL,"in reverseArr,tmpArr is NULL\n");
for(i=0;i<len;i++)
tmpArr[i]=(*arr)[i];
/*rever operator*/
j=len;
for(i=0;i<len;i++)
{ j--;
(*arr)[i]=tmpArr[j];
}
free(tmpArr);
}
void twoDArrMemApply(Type*** inArr,int rowNum,int colNum)
{
int i=0;/*iterator vaule*/
(*inArr)=(Type**)malloc(sizeof(Type*)*rowNum);
for(i=0;i<rowNum;i++)
(*inArr)[i]=(Type*)malloc(sizeof(Type)*colNum);
assertF(*inArr!=NULL,"in twoDArrMemApply,inArr at last is null\n");
}
void twoDArrMemFree(Type*** inArr,int rowNum)
{
int i=0;/*iterator value*/
assertF((*inArr)!=NULL,"in 2d arr mem free,in arr is null\n");
for(i=0;i<rowNum;i++)
free((*inArr)[i]);
free((*inArr));
}
void listArrMemApply(Type** inArr,int len)
{
int i=0;/*iterator vaule*/
(*inArr)=(Type*)malloc(sizeof(Type)*len);
assertF(*inArr!=NULL,"in listArrMemApply,inArr at last is null\n");
}
void readListFloat(Type** listArr,int* len,char* listFileName)
{
int i=0;/*iterator value*/
FILE* inputFile;/*input file pointer*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -