Monday, July 27, 2009

How can i convert while loop statement of the Turbo C program below in "for loop statement"?

this is the program i need to convert while loop statement into for loop statement. I already tried my best, but it does not work. Please help me. Thanks





#include %26lt;stdio.h%26gt;


#include %26lt;conio.h%26gt;


#define true 1


#define false 0





main()


{


clrscr();


int arr[5],a;


int location=0;


int const max=5;





printf("\nEnter 5 Numbers:\n");


for(a=0;a%26lt;max;a++)


{


printf("\nArray[%d]\t",a);


scanf("%d",%26amp;arr[a]);


}


int key=0,low=0,high=0,mid=0;


printf("\nEnter the value we need to look for:\n");


scanf("\n%d",%26amp;key);


low=0,high=max,mid=(low+high)/2;


int found=false;





while((low%26lt;=high)%26amp;%26amp;(!found))


{


if(key%26gt;arr[mid])


low=mid+1;


else


if(key%26lt;arr[mid])


high=mid+1;


else


{


found=true;


location=mid;


}


mid=(low+high)/2;


}


if(found)


{


printf("\nThe value was found in \n");


printf("\nArray[%d]\t",location);


}


else


{


printf("\nThe value was not found\n");


}


getch();


return(0);


}

How can i convert while loop statement of the Turbo C program below in "for loop statement"?
just change foll lines to








while((low%26lt;=high)%26amp;%26amp;(!found))


{





//**********************************


this -----


//*****************************


for(;low %26lt;=high;)


if(found) break;


{
Reply:Well, that doesn't look like it's well suited for a for loop, but here's what I would do:





Change:





while((low%26lt;=high)%26amp;%26amp;(!found))


{


if(key%26gt;arr[mid])


low=mid+1;


else


if(key%26lt;arr[mid])


high=mid+1;


else


{


found=true;


location=mid;


}


mid=(low+high)/2;


}





To:





for (


low=0;


(low%26lt;=high)%26amp;%26amp;(!found);


(key%26gt;arr[mid])?


low=mid+1:high=mid+1)


{


if(key==arr[mid])


{


found=true;


location=mid;


}


mid=(low+high)/2;


}





(Sorry about the random line breaks, Yahoo puts in stupid elipsis.)





Or maybe just to:





for (;(low%26lt;=high)%26amp;%26amp;(!found);)


{


if(key%26gt;arr[mid])


low=mid+1;


else


if(key%26lt;arr[mid])


high=mid+1;


else


{


found=true;


location=mid;


}


mid=(low+high)/2;


}





But that last one is sort of just cheating. :P Like I said, this doesn't seem like something that could benefit from a for loop...

survey monkey

No comments:

Post a Comment