Added functions to print integers

Added functions:
  public:
    void kprint_int(int integer);
      - prints integer variables
  private:
    int get_int_length(int i);
      - gets integer length
    int get_digit(int number, int position);
      - gets digit at specified position
    void print_digit(int digit);
      - prints one digit
pull/7/head
misebek 8 years ago
parent a8c7cb4e5d
commit 5d57c63ff4

@ -10,6 +10,9 @@ int print_char(char c, int col, int row, char attr);
int get_offset(int col, int row);
int get_offset_row(int offset);
int get_offset_col(int offset);
int get_int_length(int i);
int get_digit(int number, int position);
void print_digit(int digit);
/**********************************************************
* Public Kernel API functions *
@ -52,6 +55,13 @@ void kprint_backspace() {
}
void kprint_int(int integer) {
int length = get_int_length(integer);
for (int i = 1; i <= length; i++)
print_digit(get_digit(integer, i));
}
/**********************************************************
* Private kernel functions *
**********************************************************/
@ -144,6 +154,46 @@ void clear_screen() {
set_cursor_offset(get_offset(0, 0));
}
void print_digit(int digit) {
if (digit == 0) kprint("0");
else if (digit == 1) kprint("1");
else if (digit == 2) kprint("2");
else if (digit == 3) kprint("3");
else if (digit == 4) kprint("4");
else if (digit == 5) kprint("5");
else if (digit == 6) kprint("6");
else if (digit == 7) kprint("7");
else if (digit == 8) kprint("8");
else if (digit == 9) kprint("9");
}
int get_digit(int number, int position) {
int length = get_int_length(number);
if (position > length) return 10; // nenapise nic, protoze pise jen od 0 do 9
position = length - position + 1;
int i;
int j = 1;
for (i = 1; i < position; i++)
j *= 10;
int digit = ((number % (j * 10)) - (number % j)) / j;
return digit;
}
int get_int_length(int i) {
int length = 1;
int j = 10;
if (i < 0)
i *= -1;
while(i >= j) {
length++;
if (j > 999999999)
break;
j *= 10;
}
return length;
}
int get_offset(int col, int row) { return 2 * (row * MAX_COLS + col); }
int get_offset_row(int offset) { return offset / (2 * MAX_COLS); }

Loading…
Cancel
Save