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

📄 param.c

📁 电力系统分析计算 学习调试程序 UNIX / LINUX / CYGWIN 系统使用
💻 C
字号:
/* param.c 030390 */#include <stdlib.h>//#ifndef WINDOWS//#include <stdio.h>//#else#include "pfwstdio.h"//#endif#include <math.h>#include <ctype.h>#include <string.h>#ifdef ANSIPROTO#include <float.h>#endif#include "constant.h"#include "param.h"#include "sparse.h"/* ==================== Global Variables ============================ */int GlobalArgc;char **GlobalArgv;#ifdef WINDOWSextern CString dir;#endif/* ========================== SetArguments ========================== */#ifdef ANSIPROTOvoid SetArguments(int argc,char **argv)#elsevoid SetArguments(argc,argv)int argc;char **argv;#endif{  GlobalArgc = argc;  GlobalArgv = argv;}/* ========================== ExistParameters ======================= */#ifdef ANSIPROTOBOOLEAN ExistParameter(char ch)#elseBOOLEAN ExistParameter(ch)char ch;#endif{  int i;  /* BEGIN */  for (i=1; i<GlobalArgc; i++) {    if (GlobalArgv[i][0] == '-') {      if (GlobalArgv[i][1] == ch) return(TRUE);    }  }  return(FALSE);}/* ============================ TrueParamStr ========================== */#ifdef ANSIPROTOchar * TrueParamStr(int Item)#elsechar * TrueParamStr(Item)int Item;#endif{  int i,k;  char * TempPtr;  /* BEGIN */  k = 0;  for (i=1; i<GlobalArgc; i++) {    if (GlobalArgv[i][0] != '-') k++;    if (k >= Item) {#ifdef WINDOWS      TempPtr = new char[strlen(GlobalArgv[i])+1];#else      TempPtr = (char *) malloc((strlen(GlobalArgv[i])+1)*sizeof(char));#endif      if (GlobalArgv[i][0]!='>') strcpy(TempPtr,GlobalArgv[i]);      else strcpy(TempPtr,&GlobalArgv[i][1]);      return(TempPtr);    }  }  return(NULL);}/* =========================== HelpRequested ======================= */BOOLEAN HelpRequested(){  return(ExistParameter('h'));}/* =========================== DetermineOutputPrecision ============= */int DetermineOutputPrecision(){  int i;  int precis;  /* BEGIN */  for (i=1; i<GlobalArgc; i++) {    if (GlobalArgv[i][0] == '-') {      if (GlobalArgv[i][1] == 'p') {        sscanf(&GlobalArgv[i][2],"%d",&precis);        return(precis);      }    }  }  return(7);}/* =========================== NameParameter ========================= */#ifdef ANSIPROTOchar *NameParameter(char ch)#elsechar *NameParameter(ch)char ch;#endif{  int I;  /* BEGIN */  for (I=1; I<GlobalArgc; I++) {    if (GlobalArgv[I][0] == '-') {      if (GlobalArgv[I][1] == ch) {        return((char *) &GlobalArgv[I][2]);      }    }  }  return(NULL);}/* =========================== IntegerParameter ======================== */#ifdef ANSIPROTOint IntegerParameter(char ch,int Default,int MinVal,int MaxVal)#elseint IntegerParameter(ch,Default,MinVal,MaxVal)char ch;int Default,MinVal,MaxVal;#endif{  int I,TempVal,val;  /* BEGIN */  for (I=1; I<GlobalArgc; I++) {    if (GlobalArgv[I][0] == '-') {      if (GlobalArgv[I][1] == ch) {        if(!(val=sscanf(&GlobalArgv[I][2],"%d",&TempVal)) || val == EOF) return(Default);        if (TempVal < MinVal) return(MinVal);        if (TempVal > MaxVal) return(MaxVal);        return(TempVal);      }    }  }  return(Default);}/* ============================ IntegerPosParam ======================== */#ifdef ANSIPROTOint IntegerPosParam(int Item,int Default)#elseint IntegerPosParam(Item,Default)int Item,Default;#endif{  int i,k;  int TempVal;  /* BEGIN */  k = 0;  for (i=1; (i<GlobalArgc) && (k!=Item); i++) {    if (GlobalArgv[i][0] != '-') k++;  }  i--;  if (k == Item) {    if (sscanf(GlobalArgv[i],"%d",&TempVal)) {      return(TempVal);    }  }  return(Default);}/* ======================== RealParameter ============================== */#ifdef ANSIPROTOvoid RealParameter(char ch,double *deflt,double MinVal,double MaxVal)#elsevoid RealParameter(ch, deflt, MinVal, MaxVal)char ch;double *deflt, MinVal, MaxVal;#endif{  int I;  /* BEGIN */  for (I=1; I<GlobalArgc; I++) {    if (GlobalArgv[I][0] == '-') {      if (GlobalArgv[I][1] == ch) {        sscanf(&GlobalArgv[I][2],"%lf",deflt);        if (*deflt < MinVal) *deflt = MinVal;        if (*deflt > MaxVal) *deflt = MaxVal;        return;      }    }  }  return;}/* =========================== RealPosParam =========================== */#ifdef ANSIPROTOvoid RealPosParam(int Item,double *deflt)#elsevoid RealPosParam(Item, deflt)int Item;double *deflt;#endif{  int i,k;  /* BEGIN */  k = 0;  for (i=1; (i<GlobalArgc) && (k!=Item); i++) {    if ( (GlobalArgv[i][0] != '-') ||        ((GlobalArgv[i][0] == '-') && (isdigit(GlobalArgv[i][1])!=0)) ) k++;  }  i--;  if (k == Item) sscanf(GlobalArgv[i],"%lf",deflt);}/* ================================ DisplayReal ======================= */#ifdef ANSIPROTOchar * DisplayReal(double value,int precision,char *buff)#elsechar * DisplayReal(value,precision,buff)double value;int precision;char *buff;#endif{  char format[80];  int decimals;  ELEMENTVALUETYPE power10;  /* BEGIN */  decimals = precision - 2;  if (value < 0.0) decimals--;  power10 = (ELEMENTVALUETYPE) 10.0;  while ((decimals > 0) && (fabs(value) > power10)) {    decimals--;    power10 = power10 * 10;  }  sprintf(format,"%%-%d.%dg",precision,decimals);  sprintf(buff,format,value);  return buff;}/* ================================ NullName ========================== */#ifdef ANSIPROTOBOOLEAN NullName(char *Name)#elseBOOLEAN NullName(Name)char *Name;#endif{  if (Name == NULL) return(TRUE);  if (strcmp(Name,"") == 0)     return(TRUE);  else     return(FALSE);}/* =============================== OpenInput ========================== *///Opens a file with file name 'Name' for reading. Returns the input stream pointer#ifdef ANSIPROTOFILE * OpenInput(char * Name)#elseFILE * OpenInput(Name)char * Name;#endif{  FILE * InputFile;  char s[80];#ifdef WINDOWS  char charDir[300];  strcpy(charDir, dir.GetBuffer(dir.GetLength()));#endif  if (!NullName(Name)) {#ifdef WINDOWS      if ((InputFile = fopen(strcat(charDir, Name),"rt")) == NULL) {#else      if ((InputFile = fopen(Name,"rt")) == NULL) {#endif         sprintf(s,"No input data file -> %s",Name);         ErrorHalt(s);         stopExecute(ERROREXIT);         /* fCustomPrint(stderr,"Input from standard input\n");         InputFile = stdin;*/      }   } else {    sprintf(s,"No input data file -> %s",Name);    ErrorHalt(s);    stopExecute(ERROREXIT);    /* InputFile = stdin;*/  }  return(InputFile);}/* ============================== OpenOutput ========================== */#ifdef ANSIPROTOFILE * OpenOutput(char * Name)#elseFILE * OpenOutput(Name)char * Name;#endif{  FILE * OutputFile;#ifdef WINDOWS  char charDir[300];  strcpy(charDir, dir.GetBuffer(dir.GetLength()));#endif  if (!NullName(Name)) {#ifdef WINDOWS    if ((OutputFile = fopen(strcat(charDir, Name),"wt")) == NULL) {#else    if ((OutputFile = fopen(Name,"wt")) == NULL) {#endif       fCustomPrint(stderr,"Output to standard output\n");#ifdef WINDOWS	   OutputFile = NULL;#else	   OutputFile = stdout;#endif	   //explanation for above: a really strange bug where stdout gets initialized to something 	   //by itself. I(that is, Shu) really couldn't figure it out so I set OutputFile to NULL instead which will	   //print to screen anyways.     }  }  else#ifdef WINDOWS	   OutputFile = NULL;#else	   OutputFile = stdout;#endif  return(OutputFile);}#ifdef ANSIPROTOint SizeParameter(char ch,int i,int imax)#elseint SizeParameter(ch,i,imax)char ch;int i,imax;#endif{  double TempSize;  TempSize = 1.0;  RealParameter(ch,&TempSize,(double) 0.02,(double) imax);  if (TempSize > (double) 1.0) return(IntegerParameter(ch,i,50,imax));  else                         return((int) (TempSize * (double) imax));}

⌨️ 快捷键说明

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