Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lexzii_08 / lexs_3_mas_A.doc
Скачиваний:
14
Добавлен:
17.05.2015
Размер:
80.9 Кб
Скачать

Void main ()

{ int i, k, *p; clrscr(); // - очистити екран

printf ("\nВведіть кількість елементів масиву : ");

scanf ( "%d", &k); // - введення k - кількості елементів масиву

printf("Кількість елементів масиву = %d\n", k);

p = (int*) malloc(k * sizeof(int)); // - запит на ОП k-елементам

for (i = 0; i <k; i++)

{ printf ("Введіть %d-e значення : ", i) ;

// Введення значення чергового елементу:

scanf ( "%d",(p+i)); }

// или: (р + i), или: &p[i] }

printf ("Введеня значення: \n");

//p = p - k; // - встановлення покажчика р на початок масиву

for ( i = 0; i < k; i++)

printf ( "%d ", *(p+i)); // або: *(p + i), або: p[i] printf("\n");

free(p); //- звільнення ОП

printf ("\nДля завершення програми натисніть будь-яку клавішу\n");

getch(); // - натиснути будь-яку клавішу

}

/* У випадках "або" покажчик р не змінювати: тобто прибрати оператор установки його на початок масиву і не змінювати його при звільненні ОП */

Результати виконання програми:

Введіть кількість елементів масиву : 3

Кількість елементів масиву = 3

Введіть 0-е значення 1

Введіть 1-е значення 2

Введіть 2-е значення 3

Введені значення:

1 2 3

У програмі лістингу 3 використовуються змінні: i – для перебору номерів елементів масиву; k – кількість елементів масиву; р – покажчик на дані типу int. У режимі діалогу з клавіатури вводиться значення k – кількості елементів масиву. Потім виділяється ОП для до значень типу int. Потім в режимі діалогу з клавіатури вводяться значення елементів масиву. Після введення всього масиву його значення виводяться на екран.

У лістингу 4 приведений приклад програми для оголошення, введення і виведення значень елементів динамічного двовимірного масиву значень типу int. Процес роботи з масивом аналогічний викладеному для масиву в лістингу 3.

Лістинг 4. Робота з двовимірним динамічним масивом. Кількість його рядків, стовпців і значення елементів вводяться з клавіатури.

#include <stdio.h>

#include <alloc.h>

#include <conio.h>

Void main()

{ int *p, i, j, ik, jk; clrscr(); // - очистити екран

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

scanf ("%d", &ik);

printf ("Кількість рядків матриці = %d", ik);

printf("\nВведіть кількість значень в рядку : ");

scanf("%d", &jk);

printf ("Кількість значень в рядку = %d", jk);

p = (int*) malloc(( ik * jk ) * sizeof (int));

for (i=0; i < ik; i++)

{ printf("\n Вводиться %d-й рядок\n", i + 1);

for (j = 0; j < jk; j++)

{ printf ("Введіть %d-e значення : ", j + 1);

scanf ( "%d", (p+jk*i+j) ); // або: p+i*jk+j або: &p[i*jk+j]

}

}

printf ("\nВведена матриця таких значень: \n");

// p позначає значення покажчика на 0-елемент 0-рядка матриці:

// p = p - ik * jk; // - це прибрати для "або"

for (i = 0; i < ik; i++)

{ for ( j = 0; j < jk; j++)

printf ( "%d ",*(p+j+i*jk)); // або: *(p+i*jk+j) або: p[i*jk+j]);

printf("\n");

}

free( p); // - звільнення ОП, починаючи з 0-елементу

// для "або": free (p);

printf("\nДля завершення програми натисніть будь-яку клавішу\n");

getch(); // - натиснути будь-яку клавішу

}

Результати виконання програми:

Введіть кількість рядків матриці : 2

Кількість рядків матриці = 2

Введіть кількість значень в рядку : 3

Кількість значень в рядку = 3

Вводиться 1-а - рядок

Введіть 1-е значення : 1

Введіть 2-е значення : 2

Введіть 3-е значення : 3

Вводиться 2-а - рядок

Введіть 1-е значення : 4

Введіть 2-е значення : 5

Введіть 3-е значення : 6

Введена матриця таких значень:

1 2 3

4 5 6

У програмі листинга 4 використовуються змінні:

- i, j – для перебору номерів рядків і стовпців елементів масиву;

- ik, jk – кількість рядків і стовпців в рядку масиву;

- р – покажчик на дані типу int.

У режимі діалогу з клавіатури вводяться значення ik і jk – кількості рядків і стовпців масиву. Виділяється ОП для (ik *jk) значень типу int . Потім в режимі діалогу з клавіатури вводяться значення елементів масиву. Після введення всього масиву його значення виводяться на екран.

Соседние файлы в папке lexzii_08