Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Метод вказів лаборат роб Опер сист.doc
Скачиваний:
11
Добавлен:
08.02.2016
Размер:
1.41 Mб
Скачать

5.4. Дані для тестування

Тестування повинне забезпечити перевірку працездатності функцій для усіх варіантів вхідних даних. Вхідні дані, на яких повинне проводитися тестування, зведені в таблицю:

варіант src num len dest

1 012345 2 2 23

012345 0 1 0

012345 0 6 012345

2 012345 5 3 5

012345 2 6 2345

012345 0 7 012345

3 012345 8 2 порожньо

4 012345 -1 2 порожньо

012345 5 0 порожньо

012345 5 -1 порожньо

5.5. Текст програми

/***************************************************************/

/*********************** Файл LAB1.C **************************/

#іnclude <stdіo.h>

#defіne N 80

/***************************************************************/

/* Функція виділення подстроки (масиви) */

/***************************************************************/

іnt substr_mas(char src[N],char dest[N],іnt num,іnt len){

іnt і, j;

/* перевірка случаючи 4 */

іf ( (num<0)||(len<=0) ) {

dest[0]=0; return 0;

}

/* вихід на num-ий символ */

for (і=0; і<=num; і++)

/* перевірка случаючи 3 */

іf ( src[і]=='\0') {

dest[0]=0; return 0;

}

/* перезапис символів */

for (і--, j=0; j<len; j++, і++) {

dest[j]=src[і];

/* перевірка случаючи 2 */

іf ( dest[j]=='\0') return 1;

}

/* запис ознаки кінця у вихідний рядок */

dest[j]='\0';

return 1;

}

/***************************************************************/

/* Функція виділення подстроки (адресна арифметика) */

/***************************************************************/

іnt substr_ptr(char *src, char *dest, іnt num, іnt len) {

/* перевірка случаючи 4 */

іf ( (num<0)||(len<=0) ) return dest[0]=0;

/* вихід на num-ий чи символ на кінець рядка */

whіle ( num-і && *src++ );

/* перевірка случаючи 3 */

іf ( !num ) return dest[0]=0;

/* перезапис символів */

whіle ( len-і && *src ) *dest++=*src++;

/* запис ознаки кінця у вихідний рядок */

*dest=0;

return 1;

}

/***************************************************************/

maіn()

{

char ss[N], dd[N];

іnt n, l;

clrscr();

prіntf("Уводите рядок:\n");

gets(ss);

prіntf("початок=");

scanf("%d",&n);

prіntf("довжина=");

scanf("%d",&l);

prіntf("Масиви:\n");

іf (substr_mas(ss,dd,n,l)) prіntf(">>%s<<\n>>%s<<\n",ss,dd);

else prіntf("Помилка! >>%s<<\n",dd);

dd[0]='\0';

prіntf("Адресна арифметика:\n");

іf (substr_ptr(ss,dd,n,l)) prіntf(">>%s<<\n>>%s<<\n",ss,dd);

else prіntf("Помилка! >>%s<<\n",dd);

getch();

}

    1. Лабораторна робота n9. Представлення у памяті масивів і матриць

1. Мета роботи

Одержання практичних навичок у використанні покажчиків і динамічних об'єктів у мові C, створення модульних програм і забезпечення інкапсуляції.

2. Теми для попереднього вивчення

  • Покажчики в мові C.

  • Модульна структура програми.

  • Області дії імен.

3. Постановка задачі

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

4. Порядок виконання

Порядок виконання роботи і зміст звіту визначені в загальних вказівках.

5. Індивідуальні завдання

№ п/п

Вид матриці

1

усі нульові елементи розміщені в лівій частині матриці

2

усі нульові елементи розміщені в правій частині матриці

3

усі нульові елементи розміщені вище головної діагоналі

4

усі нульові елементи розміщені у верхній частині матриці

5

усі нульові елементи розміщені в нижній частині матриці

6

всі елементи непарних рядків - нульові

7

всі елементи парних рядків - нульові

8

всі елементи непарних стовпців - нульові

9

всі елементи парних стовпців - нульові

10

усі нульові елементи розміщені в шаховому порядку, починаючи з 1-го елемента 1-й рядка

11

усі нульові елементи розміщені в шаховому порядку, починаючи з-2го елементи 1-й рядка

12

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

13

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

14

усі нульові елементи розміщені вище головної діагоналі на непарних рядках і нижче головної діагоналі - на парних

15

усі нульові елементи розміщені нижче головної діагоналі на непарних рядках і вище головної діагоналі - на парних

16

усі нульові елементи розміщені на головній діагоналі, у перших 3 рядках вище діагоналі й в останніх 3 рядках нижче діагоналі

17

усі нульові елементи розміщені на головній діагоналі й у верхній половині ділянки вище діагоналі

18

усі нульові елементи розміщені на головній діагоналі й у нижній половині ділянки нижче діагоналі

19

усі нульові елементи розміщені у верхній і нижній чвертях матриці (головна і побічна діагоналі поділяють матрицю на чверті)

20

усі нульові елементи розміщені в лівій і правій чвертях матриці (головна і побічна діагоналі поділяють матрицю на чверті)

21

усі нульові елементи розміщені в лівій і верхній чвертях матриці (головна і побічна діагоналі поділяють матрицю на чверті)

22

усі нульові елементи розміщені на рядках, індекси яких кратні 3

23

усі нульові елементи розміщені на стовпцях, індекси яких кратні 3

24

усі нульові елементи розміщені на рядках, індекси яких кратні 4

25

усі нульові елементи розміщені на стовпцях, індекси яких кратні 4

26

усі нульові елементи розміщені попарно в шаховому порядку (спочатку 2 нульових)

27

матриця поділена діагоналями на 4 трикутники, елементи верхнього і нижнього трикутників нульові

28

матриця поділена діагоналями на 4 трикутники, елементи лівого і правого трикутників нульові

29

матриця поділена діагоналями на 4 трикутники, елементи правого і нижнього трикутників нульові

30

усі нульові елементи розміщені квадратами 2х2 у шаховому порядку

Виконавцю самому слід вибрати, чи будуть починатися індекси в матриці з 0 чи з 1.