Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АМК_практ_зан.docx
Скачиваний:
4
Добавлен:
20.11.2019
Размер:
530.41 Кб
Скачать

Додаток

Функції визначення цифр заданого цілого числа х

Результати : цифра як ціле число записується у масив z ,починаючи з його кінця ; код цифри як символ записується у масив sz ,починаючи з його кінця .

void define_digit (unsigned int x, unsigned int *z, char*sz)

{ unsigned int a, b;

repeat: a = x / 10;

b = x – a * 10; //цифра

*z-- = b;

*sz-- = b + 48; //код цифри

x = a;

if ( x > 9 ) goto repeat;

*z-- = a;

*sz-- = a + 48;

}

void define_digit1(unsigned int x, unsigned int *z, char*sz)

{

int b;

while ( x >= 10)

{

b = x % 10; //цифра

x = ( x – b ) / 10; *z-- = b;

*sz-- = b + 48; //код цифри

}

*z-- = x;

*sz-- = x + 48;

}

Опис змінних у головній функції :

unsigned int a , w[n] = {0,0,…0}; char sw[n+1] = “ \0”;

Приклад звернення до функції

define_digit (a, w+n-1, sw+n-1);

Наприклад, для a = 1234 , n = 4

w[0] = 1, w[1] = 2 , w[2] = 3 , w[3] = 4 ,

sw = “1234” , sw[0] = ‘1’ (0x0031) , sw[1] = ‘2’ (0x0032) , sw[2] = ‘3’(0x0033) , sw[3] = ‘4’ (0x0034)

Розрахунок значення числа за його цифрами

a = (( w[0]*10 + w[1] ) *10 + w[2] )*10 + w[3]

Визначення кількості цифр числа а для створення відповідних масивів

( n для масиву цифр unsigned int z[n] , m для символьного масиву кодів цифр unsigned char sz[m]

if (a < 100) {n = 2; m = 3;}

else if (a < 1000) {n = 3; m = 4;}

else if (a<10000) {n = 4; m = 5;}

else if (a<100000) {n = 5; m = 6;} //int

else if (a<1000000 {n = 6; m = 7;} //unsigned int

else if (a<10000000 {n = 7; m = 8;}

else if (a<100000000) {n = 8; m = 9;}

else if (a<1000000000) {n = 9; m = 10;} //long

else {n = 10; m = 11;} //unsigned long

Динамічні масиви

unsigned int *z = new unsigned int [n]; //створення

unsigned char *sz = new unsigned char [m];

delete [n] z; delete [m] sz; //видалення

80