char* selecta(char* a[],int p,int r,int i,int size)
{ 
    if(p==r)
        return a[p];
    int q=partition(a,p,r,size);
    int k=q-p+1;
    if(i==k)    
        return a[q];//pivot
    else
    {
        if(i<k)
            return selecta(a,p,q-1,i,size);
        else
            return selecta(a,q+1,r,i-k,size);     
     }
}     
Example #2
0
File: qlrn.c Project: galoissys/qv1
int qlearning(){
	
	/*  Q値の構造体  */
	Qvalue qv, *pqv;
	pqv = &qv;
	
	/*  Q値の初期化   */
	initqvalue(pqv);
	
	printqvalue(pqv);
	
	
	/*  学習の本体  */
	int i=0;
	int s=0;  /*  状態  */
	int t=0;  /*  時刻  */
	
	for(i=0; i < GENMAX; ++i){
		s = 0;
		for(t=0; t < 3; ++t){
			/*  行動選択  */
			s = selecta(s, pqv);
			
			/*  Q値の更新   */
			pqv->qvalue[s] = updateq(s, pqv);
			
		}
		printf("*** Learnnig count = %d ***\n", i);
		printqvalue(pqv);
	}
	
	
	return 0;
}
int main()
{   
     
 
    char c;int count=0;
    FILE* f=fopen("text.txt","r");
     while((c=getc(f))!=EOF)
    {
        if((c==' ')||(c=='\n'))
        count++;
    
    } fclose(f);
    FILE *input;
char words[count][30];
int i;
     
input=fopen("text.txt","r");
if(input==(FILE*)NULL)
{
printf("no files");
return(0);

}

//read contents of file into array
else{
for(i=0;i<count;i++)
fscanf(input,"%s",&words[i]);}
//printf("^%s^",words[9]);
char* g[count];

for(i=0;i<count;i++)
{
    g[i]=words[i];
}

int size=count;//printf("^^%d ",size);
           
int k=0;
  do                               
  {  
     printf("\nenter k: ");
     scanf("%d",&k);
     if(k<=0)
             exit(1);
     else if(k > count)
              printf("words are less than k");
     else 
     {
          char* s= selecta(g,0,size-1,count-k+1,size);
          printf("\n %s \n ",s);
     }
     }while(k>0);   
  return 0;
}