Extract the numbers

You have an int array with n elements and a structure with
three int members.
ie
struct No
{
unsigned int no1;
unsigned int no2;
unsigned int no3;
};
Point1.Lets say 1 byte in the array element is represented
like this - 1st 3 bits from LSB is one number, next 2 bits
are 2nd no and last 3 bits are 3rd no.

Now write a function, struct No* ExtractNos(unsigned int *,
int count)
which extracts each byte from array and converts LSByte in
the order mentioned in point1.and save it the structure
no1, no2, no3.

in the function struct No* ExtractNos(unsigned int *, int
count), first parameter points to the base address of array
and second parameter says the no of
elements in the array.

For example: if your array LSB is Hex F7 then result no1 =
7, no2 = 2, no3 = 7. In the same way convert all the
elements from the array and save the result in array of
structure.

Comments

  1. #include
    struct No* ExtractNos(unsigned int *p, unsigned int count);

    struct No
    {
    unsigned int no1;
    unsigned int no2;
    unsigned int no3;
    };

    int main()
    {
    unsigned int array[20],*p, count, i;
    struct No *r;
    printf("ENTER THE NO OF ELEMENTS IN THE ARRAY: \n");
    scanf("%d", &count);

    printf("ENTER TH ELEMENTS IN THE ARRAY:\n");
    for(i = 0; ino1, r->no2, r->no3);
    r++;
    }

    return 0;
    }

    struct No* ExtractNos(unsigned int *p, unsigned int count)
    {
    int i;
    struct No *q;
    q = (struct No*)malloc(sizeof(struct No)*count);
    if(p != NULL && q != NULL && count > 0)
    {
    for(i = 0; ino1 = (*p & 0x07);
    q->no2 = (*p & 0x18) >> 3;
    q->no3 = (*p & 0xE0) >> 5;
    q++;
    p++;
    }
    }
    return (q - count);
    }

    ReplyDelete

Post a Comment

Popular posts from this blog