Simple Mapping

Currently there are a lot of instances that we need to map data from the user interfaces or user interfaces to data.

premise #1: That greater number is divisible by the lower number.

#X = number of X elements

#Y = number of Y elements

Xr = X ratio against Y

Yr = Y ratio against X

R = range of single element of greater size

M = map


 

if #X == #Y, mapping is 1:1

if #X > #Y, mapping is Xr:Yr, where Xr > Yr

if #X < #Y, mapping is Xr:Yr, where Xr < Yr

Constant R is:

        X/Y, where X > Y or

        Y/X, where X < Y

Mapping from X -> Y, where X > Y:

        X/R = q,    if q has zero remainder then M is q or

                If q has a remainder then M is q+ 1

                until X=1

Mapping from X -> Y, where X < Y:

X*R = p,    M is p - (R-1)

Example 1:

    If X=20, Y=5

    R = 20/5 = 4

    M, X->Y :

20/4=5     = q , then 20 -> 5

19/4=4.? = q+1, then 19->5

18/4=4.? = q+1, then 18->5

17/4=4.? = q+1, then 17->5

    So, 20,19,18,17 ->5

16/4=4 = q, then 16->4

15/4=3 = q+1, then 15->4

14/4=3.? = q+1, then 14->4


7/4=1.? = q+1, then 7->2


4/4=1 = q, then 4->1

¾= 0 = q+1, then 3->1

2/4 =0 = q+1, then 2->1

¼=0 = q+1, then 1->1


 

    So, 4,3,2,1 -> 1


 

Example 2:

    If X=3, Y=15

    R = 15/3 = 5

    X*R = 3*5=15

        15-(R-1) = 15-(5-1)=11

        15-(4-1-1) = 15-(4-1)=12

        15-(3-1) = 15-(3-1) = 13

        …

        15-(1-1) = 15-(1-1)=15

    So, 3 -> 11,12,13,14,15

    If X=1,

    X*R = 1*5=5

        5-(5-1)=1

        5-(4-1)=2

        5-(3-1)=3

        5-(2-1)=4

        5-(1-1)=5

    So, 1 -> 1,2,3,4,5

Sample Code:

Int main()
{

UINT x=300,y=5;

        CMapping mapper;

        mapper.StartMap(x,y);

        mapper.DisplayMapToTerminal();


 

        CArray<UINT,UINT> map;

        mapper.FindMap(3,map);

        mapper.DisplayFindMap(map);


 

        UINT z=0;

        mapper.FindMap(108,z);

        cout << "\n" << z << "\n";

        system("PAUSE");

}

Comments

Post a Comment

Popular posts from this blog

Creating tray application and popup context menu in Windows

How to statically link applications to wxWidgets via Visual Studio 2008 and in Linux

How to put an image to wxPanel using wxWidgets