views:

154

answers:

4

Hii ,

I was asked this question in one of my interviews with a MNC recently . The question was

" We need to display a screen in which a text scrolls at the bottom of the screen and the remaining screen is empty . How would you accomplish this in C ? What data structures would you use ..?? "

Any ideas please ...!

A: 

Making a number of assumptions of which you should make the interviewer aware or ask them about:

Place the text in a circular buffer, from the current index print n characters where n is the console width. Print a '\r' to return to the start of the same line. After a time interval, increment the buffer index and repeat.

So the data structure they may have been angling for is a circular or ring buffer

Without any console library other than stdio, you would get to the bottom of the blank screen simply by printing h newlines, where h is >= the console height

Clifford
+2  A: 

Assuming this is a console application, you could print new lines some 24 times, which puts you at the bottom.

The string to be printed gets stored on fixed size array/vector of 81 chars (\0 terminated at position 81), which gets updated by some feeding routine. This could potentially come from a socket, typing, a file, calling process, etc...

At feeding time (timer callbacks, when file changes, socket buffer not empty, whatever), you then need to rotate text one char at a time. Assuming rotation is right to left, copy all chars from 1 (not 0) till 80 to i-1 preceding position. Write the new char on position 80.

The key graphical trick here would be to terminate your printf with \r instead of \n. \r is a modifier for return carriage: cursor returns to column 0, and will not go to the next line. That allows re-print of the same line.

jpinto3912
A: 

first question is good..but it doesnt provide as much info.

there are may other ways..but i m telling you that u can make this in BGI Graphics used in Borland Compilers...

you can do following:

Simple just put a narrow bar(length is less then height of screen) at the right side of the screen..and then u have to enable Mouse pointer by Using Interrupt...one more thing the color of the scroll bar should be different from background...and now take the mouse pointer to the bar and just apply getPixel(x,y) func. (here x and y are coordinate of mouse pointer)..
it will give u the color of that perticular pixel and compare it with ur color of the scroll bar...if it matches then u got the scroll bar..and u can move upward and downward ...

and u can use Linked List in this...

if u need any help with BGI..let me know..thanx...

Vizay Soni
A: 

When I had to make it in my C end-of-year project around 3-4 years ago, I remmber that I used Two-Sided Linked List to support forward and backward scrolling. Vert and Horz implementations. How does it implements : each "Page" is a diffrent node in the Linked-List which saves pointer to previous page and next page. setting currsor position is pure math calcs.

I'm sure that it is not the best way, but it is a way.

Hope that it helped,

Ran.

Ran