Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KURSAK.docx
Скачиваний:
10
Добавлен:
23.03.2015
Размер:
648.16 Кб
Скачать

1.2.3. Опис алгоритму програми

signed int massive - заданий масив цілих типів даних с фіксованим значенням {13, 41, -513, 53, -41, 12, -425, 52, 21} виводиться на екран користувачеві за допомогою printf, з поміткою «Before», тобто те, що задано начально. Далі у функції worker(int arg[]) відбувається проголошення проголошення змінної i, яка при умові, що доки i менше довжини массиву i<sizeof(arg) ,визначається знак та проводяться побітові функції до кожного значення під номером i в масиві, який ми передали раніше. Сама функція здвигу відображаються в программі як >> та “<<” в залежності від напряму здвигу. У нашому випадку біти негативних чисел здвигаються вправо, тобто arg[i] >> 2, біти 0 і 4 позитивних чисел скидає, тобто arg[i]|=(0<<0)|(0<<4). Далі в printer(int arg[]) відбувається друк результатів з поміткою "This is hex and dec values after conversion", дані після здвигу та конвертації. За допомогою параметрів printf: %d\n (друк у десятковому форматі), 0x%X\n (друк у шістнадцятирічному форматі) виводяться результати перетворень та здвигів на екран.

Детальніше розглянути блок-схему алгоритму побітових операцій можно у додатку А.

1.2.4. Тестування роботи програми

Так як вхідних даних, які вводить безпосередньо користувач у програмі немає, то достатньо тільки запустити програму task1.exe і дочекатися виводу на екран проведених операцій із масивом {13, 41, -513, 53, -41, 12, -425, 52, 21}. Для виходу достатньо натиснути будь-яку кнопку на клавіатурі.

Рис. 1.6 – Тест task 1

Як ми бачимо на екрані, програма використовує заданий масив та робить побітове зрушення, після чого відображає на екран результати DEC (десяткові) та HEX (шістнадцятирічні) значення.

    1. Робота з функцією заміни у рядку символів.

1.3.1. Умова завдання

Скласти функцію, яка замінює в рядку символів першу букву кожного слова великою літерою, якщо вона є рядковою. Функція відображує кількість зроблених змін на екран користувачеві.

1.3.2. Опис методу рішення

Бібліотека обробки рядків в MS Visual Studio забезпечує багато корисних функцій для роботи із строковими даними, наприклад, порівняння рядків, пошук в рядках символів і інших підрядків, розмітку рядків (розподіл рядків на логічні шматки) і визначення довжини рядка.

Якщо функція повинна приймати аргументи, то в її оголошенні слід декларувати параметри, які набудуть значень цих аргументів. Як видно з оголошення наступної функції, оголошення параметрів стоять після імені функції.

Приклад 1:

/* /* Повертає 1, якщо символ c входить в рядок s;

і 0 інакше. */

int is_in(char *s, char c)

{

while(*s)

if(*s==c) return 1;

else s++;

return 0;

}

Функція is_in() має два параметри: s і d. Якщо символ c входить в рядок s, то ця функція повертає 1, інакше вона повертає 0.

Хоча параметри виконують спеціальне завдання, - набувають значень аргументів, що передаються функції, - вони все одно поводяться так, як і інші локальні змінні. Формальним параметрам функції, наприклад, можна привласнювати які-небудь значення або використовувати ці параметри в яких-небудь виразах.

Виклики за значенням і по посиланню: у мовах програмування є два способи передачі значень підпрограмі. Перший з них - виклик за значенням. При його застосуванні у формальний параметр підпрограми копіюється значення аргументу. У такому разі зміни параметра на аргумент не впливають.

Другим способом передачі аргументів підпрограмі являється виклик по посиланню. При його застосуванні в параметр копіюється адреса аргументу. Це означає, що, на відміну від виклику за значенням, зміни значення параметра призводять до таких самих змін значення аргументу. За невеликою кількістю виключень, в мові Сі для передачі аргументів використовується виклик за значенням. Зазвичай це означає, що код, що знаходиться усередині функції, не може змінювати значень аргументів, які використовувалися при виклику функції.

Виклик функцій за допомогою масивів: коли в якості аргументу функції використовується масив, то функції передається його адреса. У цьому і полягає виключення по відношенню до правила, яке свідчить, що при передачі параметрів використовується виклик за значенням. У разі передачі масиву функції її внутрішній код працює з реальним вмістом цього масиву і цілком може змінити цей вміст. Але ця программа не працює із символами кирилиці.

Приклад 2:

printf("Введіть рядок символів : ");

gets(s);

print_upper(s);

printf("\ns тепер на верхньому регістрі: %s", s);

return 0;

}

/* /* Друкувати рядок на верхньому регістрі. */

void print_upper(char *string)

{

register int t;

for(t=0; string[t]; ++t) {

string[t] = toupper(string[t]);

putchar(string[t]);

}

}

Ось що буде виведене у разі фрази "This is a test":

Введіть рядок символів : This is a test.

THIS IS A TEST.

s тепер у верхньому регістрі: THIS IS A TEST.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]