Open DaidalosCheung opened 3 years ago
#include <stdio.h>
#include <stdlib.h>
void sorted_cards( unsigned int result, unsigned int* num[], unsigned int* num_size) {
int j = 0;
size_t size = 5;
unsigned int* sorted = malloc( sizeof( unsigned int ) * size );
for ( unsigned int* ptr = sorted; ptr < sorted + size; ptr++ ) *ptr = 0;
for ( int i = 0; i <= 13; i++ ) {
unsigned int extracted = result & (1<<i);
if ( extracted != 0 ) {
num[j++] = extracted; // [1]
}
}
*num = sorted;
*num_size = size;
}
int main(void) {
unsigned int r1 = 2048, r2 = 8, r3 = 1024, r4 = 2, r5 = 8192;
unsigned int* sorted = NULL;
unsigned int sorted_size = 0;
sorted_cards( r1 | r2 | r3 | r4 | r5, &sorted, &sorted_size );
for(int i = 5; i > 0 ; i--) { // [2]
printf( "[%d] = %d\n", i, sorted[i] );
}
free( sorted );
sorted = NULL;
return 0;
}
#include <stdio.h>
#include <stdlib.h>
void dec_to_bi (int num, unsigned int * bi_form); // convert a certain int "num" into binary, and store it int the list "biform"
void show_bi (unsigned int * bi_from); // print the result of binary in list form;
int main (int argc, char * argv[]) {
int num;
unsigned int bi_form [32];
puts("Input an integer and I will convert it into binary: ");
scanf("%d", &num);
dec_to_bi (num, bi_form);
show_bi (bi_form);
return 0;
}
void dec_to_bi (int num, unsigned int * bi_form) {
int mask = 0x1;
for (int i = 31; i >= 0; i--, mask <<= 1 ) {
if ( (num & mask) != 0) {
printf("%d + ", num & mask); // print the "num" in the sum of 2 powers;
bi_form[i] = 1; // implement the list, with certain position of 1;
}
else bi_form[i] = 0;
}
}
void show_bi (unsigned int * bi_form) {
printf("\n[");
for (int i = 0; i < 32; i++) {
printf("%d", bi_form [i]);
if ( (31 - i) % 4 == 0 )
putchar(' ');
}
printf("]\n");
}
kwok_sort5.c