Example #1
0
char* en_en::getVerbPastProgressive(int v,int f,int s,int st,char* midadverb){
 char t = getVerbType(v,st);
 if (st<6 && t!='4')
 {
  int bl,il;
  bl=getVerbLength(1,f,s,st-2,&blank);
  char* preadd=getVerbPreAdd(v);
  il=strlen(preadd);   
  char* gerund = NULL;
  char* buffer = NULL;
  if (question==0)
  {
   buffer = (char*)calloc(bl+il+5,sizeof(char));
   gerund = buffer;
  }
  else if (question==1)
  {
   buffer = (char*) calloc(bl+1,sizeof(char));
   QuestionVerb1 = (char*) calloc(il+5,sizeof(char));
   gerund = QuestionVerb1;
  }
  strcat(buffer,getVerb(1,f,s,st-2,&blank));
  strcat(gerund,midadverb);
  strcat(gerund,preadd);
  strcat(gerund,"ing ");
  return buffer;
 }else if(st<10 && t!='4'){
   int bl,il;
  bl=getVerbLength(2,f,s,1,&blank);
  bl+=getVerbLength(1,0,s,3,midadverb);
  char* preadd=getVerbPreAdd(v);
  il=strlen(preadd);
  char* gerund = NULL;
  char* buffer = NULL;
  if (question==0)
  {
   buffer = (char*)calloc(bl+il+5,sizeof(char));
   gerund = buffer;
  }
  else if (question==1)
  {
   buffer = (char*) calloc(bl+1,sizeof(char));
   QuestionVerb1 = (char*) calloc(il+5,sizeof(char));
   gerund = QuestionVerb1;
  }
  strcat(buffer,getVerb(2,f,s,1,&blank));
  strcat(gerund,getVerbPast(1,0,s,3,midadverb));
  strcat(gerund,preadd);
  strcat(gerund,"ing ");
  return buffer;
 }else if (t=='4'){
   return getVerbPast(v,f,s,4,(char*)"");
 }
 else{
  printf("OOPS");
 }
}
Example #2
0
char* en_en::getVerbPreAdd(int v){
 FILE* rFile=fopen(DICTIONARY EN_EN_FOLDER "verb_present","r");
 gotoline(rFile,v);
 char* buffer=(char*)malloc(BUFFER_SIZE);
 fgets(buffer,BUFFER_SIZE-1,rFile);
 fclose(rFile);
 char t=buffer[0];
 if (t=='1'){
  //Look up second word form
  int u=0,i=0;
  while (u<2){
   if (buffer[i]=='_')
    u++;
   else if (buffer[i]==0)
    break;
   else if (buffer[i]=='\n')
    break;
   i++;
  }
  u=0;
  while (buffer[i]!='_' && buffer[i]!=0 && buffer[i]!='\n')
   buffer[u++]=buffer[i++];
  buffer[u++]=0;
 }else if (t=='0'){
  char* b=getVerb(v,10,0,1,&blank);
  int i=0;
  while (b[i]!=0) i++;
  //[(space)] [\0]
  //We are removing the space here, because it is added in getVerb because the function thinks we will just add it straight to the sentence.
  b[i-1]=0;
  return b;
 }else{
  int i=0;
  while(buffer[i]!='_' && buffer[i]!=0 && buffer[i]!='\n') i++;
  i++;
  int u=0;
  while (buffer[i]!='_' && buffer[i]!=0 && buffer[i]!='\n')
   buffer[u++]=buffer[i++];

  //Now follow all the english rules
  //http://www.oxforddictionaries.com/words/verb-tenses-adding-ed-and-ing
  //http://www.grammar.cl/Notes/Spelling_ING.htm
  if (buffer[u-1]=='e' && buffer[u-2]=='i'){
   u-=2;
   buffer[u++]='y';
  }
  else if (buffer[u-1]=='e' && (buffer[u-2]!='e' && buffer[u-2]!='y' && buffer[u-2]!='o'))
   u-=1;
  else if (buffer[u-1]=='c'){
   buffer[u++]='k';
  }
  else if (!isVowel(buffer[u-3])&&isVowel(buffer[u-2])&&!isVowel(buffer[u-1])&&buffer[u-1]!='x'&&buffer[u-1]!='y'&&buffer[u-1]!='z'&&buffer[u-1]!='w'){
   buffer[u]=buffer[u-1];
   u++;
  }
  buffer[u++]=0;
 }
 return buffer;
}
Example #3
0
char* en_en::getVerbFuturePastProgressive(int v, int f, int s, int st, char* midadverb){
  char* verb;
  verb = getVerb(v,f,1,8,midadverb);
  char* buf = (char*)calloc(sizeof(verb) + sizeof(EN_EN_FUTURE) + 1,sizeof(char));
  strcat(buf,EN_EN_FUTURE);
  strcat(buf,verb);
  return buf;
}
Example #4
0
char* en_en::getVerbPassivePresent(int v,int f,int s,int st, char* midadverb){
  if (st > 25) f = 0;
  char* fv = getVerb(1,f,s,st - 16,&blank);
  char* sv = getVerbPast(v,f,s,true,midadverb);
  char* buf = (char*) calloc(sizeof(fv) + sizeof(sv) + 1,sizeof(char));
  strcat(buf,fv);
  strcat(buf,sv);
  return buf;
}
Example #5
0
std::string de::createSentence(){
 int a=0;
 char endchar = '.';
 if (question == 1){
  data|=0x01;
  endchar = '?';
 }
 else if (question > 1)
 {
  buf[a++] = &de_question_words[question-2][0];
  endchar = '?';
  data |= 0x01;
 }
 if (punctuation == false)
  endchar = NULL;
 if(verb1>0){
  parseVerb(0,verb1);
  verb1=0;
 }
 if (verb2>0){
  parseVerb(1,verb2);
  verb2=0;
 }
 char debug='a';

 hasEndVerb=false;
 verbs[0]=v1;
 verbs[1]=v2;
 verbs[2]=v3;
 bool verb=false;
 bool splural=(snum>0) | s[0].plural;
 if(v1!=0) verb=true;
 if(data&0x1){
  if(verb) buf[a++]=getVerb(v1,-1,splural?8:s[0].id,st);
  verb = false;
 }
 /*if (prepos_prepos[2]>0){
  buf[a++]=getPreposObject(prepos_prepos[2],prepos_object[2].id,prepos_object[2].num,prepos_object[2].plural,prepos_object[2].typ);
  if(verb) buf[a++]=getVerb(v1,-1,splural?8:s[0].id,st);
  verb = false;
 }*/
 for(int sc=0;sc<16;sc++){
  if (s[sc].id>0){
   if (sc>0) buf[a++]=", ";
   if (sc == snum && snum>0 && sctype==0) buf[a++]=DE_UNDNOMEN;
   else if (sc == snum && snum>0) buf[a++]=DE_ODERNOMEN;
   buf[a++]=getNounString(&s[sc]);
  }
 }
 if(verb)buf[a++]=getVerb(v1,-1,splural?8:s[0].id,st);
 for (int objid=0;objid<8;objid++){
  for (int oc=0;oc<16;oc++){
   if (obj[objid][oc].id>0){
    if (oc>0) buf[a++]=", ";
    if (oc == objnum[objid] && objnum[objid]>0 && octype[objid]==0) buf[a++]=DE_UNDNOMEN;
    else if (oc == objnum[objid] && objnum[objid]>0) buf[a++] = DE_ODERNOMEN;    
    buf[a++]=getNounString(&obj[objid][oc]);
   }
  }
 }
 if (neg){
  buf[a++]=de_nicht;
 }
 if (getPreVerb2(v1)==1)
  buf[a++]=de_zu;
 if (v2!=0)
  buf[a++]=getOtherVerb(v1,v2);
 if (hasEndVerb)
  buf[a++]=endVerb;
 if(subClause!=NULL && conjunction > 0)
 {
  buf[a++]=getSubClause();
 }
 int sl=0;
 for (int i=0;i<NUM_BUF;i++){
  if(buf[i]!=NULL)
   sl+=strlen(buf[i]);
 }
 char* buffer = (char*)calloc(sl+4,sizeof(char));
 for (int i=0;i<NUM_BUF;i++){
  if(buf[i]!=NULL)
  {
   strcat(buffer,buf[i]);
  }
 }
 if (clause==false){
  char* buf2 = buffer;
  buffer = (char*) calloc(strlen(buf2)+2,sizeof(char));
  int len = strlen(buf2);
  int i=1;
  int j=1;
  char c;
  c = buf2[0];
  if (c >= 'a' && c <= 'z')
   buffer[0]=c-32;
  else buffer[0]=c;
  while (i<len){
   if (buf2[i]!=' '){
    buffer[j++]=buf2[i++];
   }else if (buf2[i+1]==','){
    buffer[j++]=',';
    i=i+2;
   }else if (buf2[i+1]==0){
    buffer[j++]=endchar;
    i++;
   }else buffer[j++]=buf2[i++];
  }
 }
 return std::string(buffer);
}
Example #6
0
std::string de::createSubClause(){
 if(verb1>0){
  parseVerb(0,verb1);
  verb1=0;
 }
 if (verb2>0){
  parseVerb(1,verb2);
  verb2=0;
 }
 int a=0;
 hasEndVerb=false;
 verbs[0]=v1;
 verbs[1]=v2;
 verbs[2]=v3;
 bool splural=(snum>0) | s[0].plural;
/* if (prepos_prepos[2]!=0){
  buf[a++]=getPreposObject(prepos_prepos[2],prepos_object[2].id,prepos_object[2].num,prepos_object[2].plural,prepos_object[2].typ);
 }*/
 for(int sc=0;sc<16;sc++){
  if (s[sc].id>0){
   if (sc>0) buf[a++]=", ";
   if (sc == snum && snum>0 && sctype==0) buf[a++]=DE_UNDNOMEN;
   else if (sc == snum && snum>0) buf[a++]=DE_ODERNOMEN;
   buf[a++]=getNounString(&s[sc]);
  }
 }
 for (int objid=0;objid<8;objid++){
  for (int oc=0;oc<16;oc++){
   if (obj[objid][oc].id>0){
    if (oc>0) buf[a++]=", ";
    if (oc == objnum[objid] && objnum[objid]>0 && octype[objid]==0) buf[a++]=DE_UNDNOMEN;
    else if (oc == objnum[objid] && objnum[objid]>0) buf[a++] = DE_ODERNOMEN;
    buf[a++]=getNounString(&obj[objid][oc]);
   }
  }
 }

 if (neg){
  buf[a++]=de_nicht;
 }
 if (getPreVerb2(v1)==1)
  buf[a++]=de_zu;
 if (v2!=0)
  buf[a++]=getOtherVerb(v1,v2);
 //Get hasEndVerb
 getVerb(v1,-1,splural?8:s[0].id,st);
 if (hasEndVerb)
  buf[a++]=endVerb;
 //Verb goes at the end

 buf[a++]=getVerb(v1,-1,splural?8:s[0].id,st);
 
 if(subClause!=NULL && conjunction > 0)
 {
  buf[a++]=getSubClause();
 }
 int sl=0;
 for (int i=0;i<NUM_BUF;i++){
  if(buf[i]!=NULL)
   sl+=strlen(buf[i]);
 }
 char* buffer = (char*)calloc(sl+4,sizeof(char));
 for (int i=0;i<NUM_BUF;i++){
  if(buf[i]!=NULL)
   strcat(buffer,buf[i]);
 }
 return buffer;
}
Example #7
0
// command line argument(s) should be verbosity (optional) and input file
int main(int argv, char * argc[])
{
  int verbose = 0; // 0 = non-verbose, 1 = verbose, 2 = show-rand
  FILE * fp = 0;
  
  int numArgs = argv;
  
  // get file pointer and verbosity argument
  if(numArgs == 2){
    fp = fopen(argc[1], "r");
  }
  else if(numArgs == 3){
    verbose = getVerb(argc[1]);
    fp = fopen(argc[2], "r");
  }
  // check for invalid file
  if(fp == NULL){
    printf("FATAL ERROR: invalid file given\n");
    exit(1);
  }

  char nextChar = ' ';
  int NUMOFPROCS = 0;
  while(NUMOFPROCS == 0){
    nextChar = fgetc(fp);
    if(isdigit(nextChar)){
      NUMOFPROCS = nextChar - '0'; // subtracts the ascii value for 0 from int value
    }
  }

  int i = 0;
  struct process procs[NUMOFPROCS];
  
  while(i < NUMOFPROCS){
    procs[i].a = getNextInt(fp);
    procs[i].b = getNextInt(fp);
    procs[i].c = getNextInt(fp);
    procs[i].io = getNextInt(fp);
    i++;
  }
  
  fclose(fp);
  
  // sort processes by order of start time
  
  struct process sortedprocs[NUMOFPROCS];
  int sortflags[NUMOFPROCS]; // array to flag which processes have been sorted by time
  for(i = 0; i < NUMOFPROCS; i++){
  	sortflags[i] = 0; // set all to zero
  }
  int sortcount;
  int j;
  for(sortcount = 0; sortcount < NUMOFPROCS; sortcount++){
  	int minind;
  	int mintime = INT_MAX;
  	for(j = 0; j < NUMOFPROCS; j++){ // cycle through, checking each start against min
			if(procs[j].a < mintime && sortflags[j] == 0){
				minind = j;
				mintime = procs[j].a;
			}
  	}
  	// add it to the appropriate place in the sortedprocs array
  	sortedprocs[sortcount] = procs[minind];
  	sortflags[minind] = 1;
  }
  
  // ****** DO NOT EDIT PROCS OR SORTEDPROCS ******
  // actual scheduling here
  
	//runUni(verbose, NUMOFPROCS, &procs, &sortedprocs);
	//runfcfs(verbose, NUMOFPROCS, &procs, &sortedprocs);
	runsjf(verbose, NUMOFPROCS, &procs, &sortedprocs);
  //runrr(verbose, NUMOFPROCS, &procs, &sortedprocs);
  
}
Example #8
0
char* en_en::getVerbPresent(int v,int f,int s,int st,char* midadverb){
  if (f==-1){
   int t=getNounType(s);
   f=getVerbFormFromSubjectType(t,s);
  }
  if (st==1){
   FILE* rFile = fopen(DICTIONARY EN_EN_FOLDER "verb_present","r");
   gotoline(rFile,v);
   char* buffer = (char*)malloc(BUFFER_SIZE);
   fgets(buffer,BUFFER_SIZE-1,rFile);
   fclose(rFile);
   char vt=buffer[0];
   char of=f;
   if (vt!='0') f=0;
   int u=0;
   int i=0;
   while (u<=f){
    char c=buffer[i];
    if (c=='_') u++;
    else if (c=='\n'){
     printf("Warning:\nThe form %d doesn't exist for verb %d!\nUsing form 0\n",f,v);
     return getVerb(v,0,s,1,midadverb);
    }
    i++;
   }
   //i should be at the start of form we want
   //copy form to start of buffer
   u=0;
   while (buffer[i]!='_' && buffer[i]!='\n' && buffer[i]!=0){
    buffer[u++]=buffer[i++];
   }
   //Now if SIMPLE tense on a regular verb, add conjugation
   if (vt!='0' && vt!='3' ){
    if (of>2 && of<6){
     if (buffer[u-1]=='o' || (buffer[u-1]=='s' && buffer[u-2]=='s') || (buffer[u-1]=='h' && buffer[u-2]=='s') || (buffer[u-1]=='h' && buffer[u-2]=='c') || (buffer[u-1]=='z' && buffer[u-2]=='z') || buffer[u-1]=='x')
      buffer[u++]='e';
     buffer[u++]='s';
    }
   }
   buffer[u++]=' ';
   buffer[u++]=0;
   if (neg && (vt=='3' || vt=='0')){
    strcat(buffer,negativestmt);
   }
   char* ret=(char*)calloc(BUFFER_SIZE,sizeof(char));
   strcat(ret,midadverb);
   if (neg && vt!='3' && vt!='0'){
    if (of>2 && of<6)
     strcat(ret,EN_EN_DOESNOT);
    else
     strcat(ret,donot);
   }
   strcat(ret,buffer);
   return ret;
  }
  else if (st==0){
   char t=getVerbType(v,st);
   if (t=='4'||t=='3'){
   // printf("Can not create progressive tense with type %c verbs!\nUsing simple tense instead.\n",t);
    return getVerb(v,f,s,1,midadverb);
   }
   int bl,il;
   bl=getVerbLength(1,f,s,1,&blank);
   char* preadd=getVerbPreAdd(v);
   il=strlen(preadd);
   char* gerund=NULL;
   char* buffer = NULL;
   if (question==0)
   {
    buffer = (char*)calloc(bl+il+5,sizeof(char));
    gerund = buffer;
   }
   else if (question>0)
   {
    buffer = (char*) calloc(bl+1,sizeof(char));
    QuestionVerb1 = (char*) calloc(il+5,sizeof(char));
    gerund = QuestionVerb1;
   }
   strcat(buffer,getVerb(1,f,s,1,&blank));
   strcat(buffer,midadverb);
   strcat(gerund,preadd);
   strcat(gerund,"ing ");
   return buffer;
  }
}
Example #9
0
int en_en::getVerbLength(int v,int f,int s,int st,char* midadverb){
  char* buffer=getVerb(v,f,s,st,midadverb);
  int l=strlen(buffer);
  return l;
}
Example #10
0
char* en_en::getVerbPast(int v,int f, int s,bool dr,char* midadverb)
{
 FILE* rFile = fopen(DICTIONARY EN_EN_FOLDER "verb_past","r");
 gotoline(rFile,v);
 char* buffer=(char*)malloc(BUFFER_SIZE); 
 fgets(buffer,BUFFER_SIZE-1,rFile);
 fclose(rFile);
 char vt=buffer[0];
 //just return preadd + (vt=='2' ? 'd' : 'ed' )
 if (vt=='2' || vt=='3')
 {
  int el=vt-'1';
  char* preadd=getVerbPreAdd(v);
  int il=strlen(preadd);
  char* buffer2=(char*)calloc(il+el,sizeof(char));
  strcat(buffer2,midadverb);
  strcat(buffer2,preadd);
  if (vt=='3') strcat(buffer2,"e");
  strcat(buffer2,"d ");
 // free(buffer);
  return buffer2;
 }
 else if (vt=='1')
 {
  int i=1;
  int f=dr?2:1;
  int u=0;
  while (u<f)
  {
   if (buffer[i]=='_')
    u++;
   if (buffer[i]=='\n')
    break;
   i++;
  }
  char* buffer2=(char*)calloc(BUFFER_SIZE,sizeof(char));
  strcat(buffer2,midadverb);
  u=strlen(buffer2);
  while(1){
   buffer2[u]=buffer[i];
   i++;
   u++;
   if(buffer[i]=='\n' || buffer[i]=='_')
    break;
  }
  buffer2[u++]=' ';
  buffer2[u++]=0;
  return buffer2;
 }
 else if (vt=='0' || vt=='4'){
  if (f==-1){
   int t=getNounType(s);
  f=getVerbFormFromSubjectType(t,s);
  }
  char of=f;
  if (dr) f = 0;
  int u=0;
  int i=0;
  while (u<=f){
   char c=buffer[i];
   if (c=='_') u++;
   else if (c=='\n'){
    printf("Warning:\nThe form %d doesn't exist for verb %d!\nUsing form 0\n",f,v);
    return getVerb(v,0,s,1,&blank);
   }
   i++;
  }
  //i should be at the start of form we want
  //copy form to start of buffer
  char* buffer2=(char*)calloc(BUFFER_SIZE,sizeof(char));
  strcat(buffer2,midadverb);
  u=strlen(buffer2);
  while (buffer[i]!='_' && buffer[i]!='\n' && buffer[i]!=0){
   buffer2[u++]=buffer[i++];
  }
  buffer2[u++]=' ';
  buffer2[u++]=0;
  return buffer2;
 }
 else{
  printf("ERROR:\n");
 }
 return (char*)"failure in en_en::getVerbPast() ";
}