תודה רבה אחי..
מה הקוד הזה אמור לעשות??
On 23 יוני, 16:56, Hershky <[email protected]> wrote:
> היי,
> הנה חלק הקוד שאני משתמש בו,
> מקווה שיעזור לך והמון בהצלחה!
>
> /*********************************************************************
> * findMedian help func of RectangleLand
> * Description:
> * finding the median of the 5 inputs
> * First - find the minimum, and than find the maximum,
> * than narrow your search to understand, which is the median
> * according to the max and the min.
> *
> * Inputs:
> * int first,second,third,fourth,fifth
> *
> * Output:
> * minimum of (first,second,third)
> *
>
> *********************************************************************/
> int RectangleLand::findMedian(int first,int second,int third,int
> fourth,int fifth)
> {
> int result;
> int min=first;
> int last=0;
>
> if(second<min)
> min=second;
> if(third<min)
> min=third;
> if(fourth<min)
> min=fourth;
> if(fifth<min)
> min=fifth;
>
> if(min==first)
> first=0;
> else if(min==second)
> second=0;
> else if(min==third)
> third=0;
> else if(min==fourth)
> fourth=0;
> else if(min==fifth)
> fifth=0;
>
> if(first==0)
> last=second;
> else
> last=first;
>
> if(second!=0 && second<last)
> last=second;
> if(third!=0 && third<last)
> last=third;
> if(fourth!=0 && fourth<last)
> last=fourth;
> if(fifth!=0 && fifth<last)
> last=fifth;
>
> if(first==last)
> first=0;
> else if(second==last)
> second=0;
> else if(third==last)
> third=0;
> else if(fourth==last)
> fourth=0;
> else if(fifth==last)
> fifth=0;
> /*Now find the median*/
> if((first==0) && (second==0))
> result=third;
> else if(first!=0)
> result=first;
> else
> result=second;
>
> if((first!=0) && (first<result))
> result=first;
> if((second!=0) && (second<result))
> result=second;
> if((third!=0) && (third<result))
> result=third;
> if((fourth!=0) && (fourth<result))
> result=fourth;
> if((fifth!=0) && (fifth<result))
> result=fifth;
>
> return result;}
>
> /*********************************************************************
> * moduleSelection help func of RectangleLand
> * Description:
> * In order to compute execute the MosnterAttack func in O(n+m),
> * we are using "Selection" algorithm to find in O(n),
> * implemented as described in the Lecture.
> *
> * Inputs:
> * int* aray,int Idx,int n
> *
> * Output:
> * the desired element we searched.
> *
>
> *********************************************************************/
> int RectangleLand::moduleSelection(int* array,int index,int n)
> {
> int result;
>
> if(n==1)
> return array[0];
>
> int a=0, b=0, c=0, d=0, e=0; /*used to find the median*/
> int counter=0,number=0,low,high;
> int median=0, small=0, Idx=0, jdx=0;
> int count=0;
> int v=(int)(n/5);
> v=v+1;
>
> int *medians=new int[v];
>
> while( counter < n )
> {
> if(a!=0 && b!=0 && c!=0 && d!=0 && e!=0)
> {
> median=findMedian(a,b,c,d,e); /*Median of medians*/
> medians[count]=median;
> count++;
> a=b=c=d=e=0;
> }
> if(a==0)
> a=array[counter];
> else if(b==0)
> b=array[counter];
> else if(c==0)
> c=array[counter];
> else if(d==0)
> d=array[counter];
> else if(e==0)
> e=array[counter];
>
> counter++;
> }
> if(a!=0)
> {
> medians[count]=a;
> count++;
> }
>
> if(b!=0)
> {
> if(a<b)
> medians[count-1]=a;
> else
> medians[count-1]=b;
> }
>
> if(c!=0)
> medians[count-1]=minimal(a,b,c);
> if(d!=0)
> medians[count-1]=minimal(a,b,c,d);
> if(e!=0)
> {
> median=findMedian(a,b,c,d,e);
> medians[count-1]=median;
> }
>
> number=moduleSelection(medians,(int)(count/2),count);
> delete[] medians;
>
> low=high=counter=0;
>
> while(counter<n)
> {
> if(array[counter]<=number)
> low++;
> counter++;
> }
>
> high=n-low;
> int *LeftArr=new int[low];
> int *RightArr=new int[high];
> LeftArr=create(array,n,LeftArr,0,number);
> RightArr=create(array,n,RightArr,1,number);
>
> if(low<n)
> {
> if(index<=low)
> result=moduleSelection(LeftArr,index,low);
> else
> result=moduleSelection(RightArr,index-low,high);
> delete[] RightArr;
> delete[] LeftArr;
> return result;
> }
> else
> {
> Idx=0;
> small=LeftArr[0];
>
> while(Idx<low)
> {
> if(LeftArr[Idx]<small)
> small=LeftArr[Idx];
> Idx++;
> }
> //small=smallest number
> counter=Idx=0;
> while(Idx<low)
> {
> if(LeftArr[Idx]==small)
> counter++;
> Idx++;
> }
> if((counter>=index )||((counter>=n) && (n<=index)))
> {
> delete[] LeftArr;
> delete[] RightArr;
> return small;
> }
> else
> {
> int *tmpArr=new int[low];
> Idx=0;
> jdx=0;
> while(Idx<low)
> {
> if(LeftArr[Idx]!=small)
> {
>
> tmpArr[jdx]=LeftArr[Idx];
> jdx++;
> }
> Idx++;
> }
>
> result=moduleSelection(tmpArr,index-counter,jdx);
> delete[] LeftArr;
> delete[] RightArr;
> delete[] tmpArr;
> return result;
> }
> }
>
> }
>
> ר.ה.
>
> On 22 יוני, 21:38, Aviel Avraham <[email protected]> wrote:
>
> > מישהו יכול לתת לי פונקציה שמבצעת select ?? שלנו לא עובד ככ טוב..
> > תודה מראש [email protected]
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Technion References" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/reference-technion?hl=en
-~----------~----~----~----~------~----~------~--~---