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

Void main()

{ int k, i, res; //tab – статичний масив покажчиків

char *str = (char*)malloc(80), * tab[10];

clrscr();

printf(“\nВкажіть кількість імен, не більше 10:”);

scanf(“%d”, &k); //введення кількості імен

printf(“Кількість імен=%d\n”,k); // виведення кількості імен

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

{ printf (“Введіть %d-e ім’я: ”,i+1);

res = scanf(“%s, str”); //введення рядка

if (res==1) //контроль успішності введення рядка

{ tab[i]=(char*) malloc(strlen(str)+1); //виділення ОП рядку

strcopy (tab[i], str); //копіювання рядка в динамічний масив

}

}

printf(“\n Введені такі імена:\n”);

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

{ printf(“%s”, tab[i]); //виведення і-го рядка

free(tab[i]);} //вивільнення ОП і-го рядка

free(str); //вивільнення ОП str

printf(“\n Для завершення натисніть будь-яку клавішу\n”);

getch();

}

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

- tab – ім’я статичного масиву із 10 покажчиків на дані типу char

- tab[i] – елемент масиву tab буде зберігати значення покажчика на початок значення і-го рядка

- str – скалярний покажчик-змінна на дані типу char

- i – змінна для перебору номерів рядків масиву tab

- k – кількість рядків динамічного масиву

- res – змінна для визначення вдалого введення рядка.

Для створення вільного масиву рядків в режимі діалогу з клавіатури вводиться значення k – кількість рядків вільного масиву. Воно повинно бути не більше 10-ти – кількість елементів tab – масиву покажчиків. Потім воно виводиться на екран. Для формування масиву із k вільних рядків організується перебір номерів рядків по і від 0 до (k-1). Для кожного і-го рядка:

  1. в режимі діалогу змінну str вводиться чергове ім’я;

  2. для формування чергового і-го рядка вільного масиву:

А. з допомогою функції malloc виділяється ОП на кількість введеного рядка str, яке визначається за допомогою функції strlen.

Б. адреса розміщення елементів і-го рядка розміщується в tab[i] – елемент масиву покажчиків за допомогою функції malloc.

В. в ОП, виділену для і-го рядка, копіює значення str чергового введеного рядка за допомогою функції strcopy.

Після завершення створення вільного масиву рядків відбувається виведення його значень на екран і вивільнення ОП, виділеної кожному і – му рядку. Для цього перебираються значення і-номерів рядків масиву від 0 до (k-1). Кожне значення виводиться на екран за допомогою printf(“%s”, tab[i]); для кожного і-го рядка ОП вивільняється за допомогою оператора free(tab[i]).

6

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