| Глава 3 | стр 29 |
Теперь, когда мы считали префикс и получили все необходимые переменные,
можно вывести рисунок на экран.
Для преобразования и вывода десятичного числа в 16-ричное число
напишем функцию. В параметры ей передадим 10-чное число и две
символьных переменных. Затем число препарируем и выводим при помощи
двух символьных переменных как 16-ричное.
Функция не смотря на свой размер достаточно простая для понимания:
void filter(int chislo, char &first_val, char &second_val){
int rez_h = 0;
int rez_l = 0;
rez_h = chislo/16;
if(rez_h>9){
switch(rez_h){
case 10 :
first_val = 'A';
break;
case 11 :
first_val = 'B';
break;
case 12 :
first_val = 'C';
break;
case 13 :
first_val = 'D';
break;
case 14 :
first_val = 'E';
break;
case 15 :
first_val = 'F';
break;
default:
break;
}
}
else{
switch(rez_h){
case 0 :
first_val = '0';
break;
case 1 :
first_val = '1';
break;
case 2 :
first_val = '2';
break;
case 3 :
first_val = '3';
break;
case 4 :
first_val = '4';
break;
case 5 :
first_val = '5';
break;
case 6 :
first_val = '6';
break;
case 7 :
first_val = '7';
break;
case 8 :
first_val = '8';
break;
case 9 :
first_val = '9';
break;
default:
break;
}
}
rez_l = chislo%16;
if(rez_l>9){
switch(rez_l){
case 10 :
second_val = 'A';
break;
case 11 :
second_val = 'B';
break;
case 12 :
second_val = 'C';
break;
case 13 :
second_val = 'D';
break;
case 14 :
second_val = 'E';
break;
case 15 :
second_val = 'F';
break;
default:
break;
}
}
else{
switch(rez_l){
case 0 :
second_val = '0';
break;
case 1 :
second_val = '1';
break;
case 2 :
second_val = '2';
break;
case 3 :
second_val = '3';
break;
case 4 :
second_val = '4';
break;
case 5 :
second_val = '5';
break;
case 6 :
second_val = '6';
break;
case 7 :
second_val = '7';
break;
case 8 :
second_val = '8';
break;
case 9 :
second_val = '9';
break;
default:
break;
}
}
}
Вызывается функция следующим образом:
int k = 0;
for(int i=54;i < size_file;i++){
if(temp<0)
to1 << first_ch << second_ch ;
k++;
if(k==dlina_str){//перевод строки
to1<< " " << endl ;
Сначала в temp десятичное значение из buf. Затем, если число отрицательное,
преобразуем его в положительное. Затем, при помощи вызова функции filter()
преобразуем это значение в 16-ричный вид и в таком виде выводим в файл.
Периодически осуществляем перевод строки.
Рисунок вывелся правильно.
Изумительно! И программу эту мы написали намного быстрее чем на ассемблер.
Полный код данной программы - на следующей странице.
Назад |
Начало урока |
Вверх |
Вперед
Содержание