Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПОКАЖЧИКИ 13.ppt
Скачиваний:
19
Добавлен:
30.05.2020
Размер:
2.26 Mб
Скачать

Програма 12. Програма демонструє той факт, що при оголошенні покажчика в програмі можна використовувати змінну з індексом без попереднього виділення динамічній пам'яті.

void main() { int j,s;

int *data;

clrscr();

cout << “В змінній data значення адреси = ” << data << “\n”; cout << "Введи розмір масиву ";

cin >> s;

cout << "\nРазмер массива= “<< s << "\n\n Введи масив з клавиатуры\n“; // Динамічну пам'ять НЕ ВИДІЛЯЄМО!

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

{

cout << "data[" << j << "]= " ;

cin >> data [j]; // Доступ до елементів масиву через індекс.

}

cout << "\nВведен масив: \n"; for (j = 0; j < s; j++)

cout << data[j] << “ “; cout << "\n"; getch(); }

Програма 13. Для виділення динамічній пам'яті під матрицю

використовується покажчик.

void main() { clrscr();

int n,m,i,j;

int *ptr, *mas2; // ptr, mas2 – змінні для адрес (покажчики). FILE *f;

printf("Введіть число рядків матриці: \n"); scanf("%d",&n);

printf("\nВведите число стовпців матриці: \n"); scanf("%d",&m);

mas2 = new int[n*m]; // Виділяємо блок пам'яті під елементи матриці.

//Початкова адреса виділеного блоку пам'яті

//розміщується в змінній mas2.

//Введення матриці з файлу.

f = fopen("t.dat", "r");

ptr = mas2; // Початкову адресу виділеного блоку засилаємо в ptr. for(i = 0; i < n; i++)

for (j = 0; j < m; j++, ptr++)

fscanf(f,"%d",ptr); // Форма доступу до елементів матриці. fclose(f);

ptr = mas2;

// Питання: для чого потрібний цей код програми?

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

 

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

{ptr = mas2 + i * m + j; // Визначуваний адреса елементу з індексами i, j. printf(" %d", *ptr); // Виведення елементу матриці з індексами i, j.

}printf("\n"); }

printf("Введіть номер рядка матриці i = "); scanf("%d",&i);

i--;

// Індекс рядка на 1 менше номера.

printf("Введіть номер стовпця матриці j = ");

scanf("%d",&j);

 

j--;

// Індекс стовпця на 1 менше номера.

ptr = mas2 +i * m + j; // Визначуваний адреса елементу з індексами i, j. printf(" а[%d,%d]= %d",i,j,*ptr); // Виводиться на екран елемент ptr[i][j]. getch(); }

Програма 14. Виділяється динамічна пам'ять під матрицю з використанням масиву покажчиків.

void main() { int n,m,i,j;

int **mas2; // mas2 – покажчик для адрес покажчиків. FILE *f;

clrscr();

printf("Введіть число рядків матриці: \n"); scanf("%d",&n);

printf("\nВведите число стовпців матриці: \n"); scanf("%d",&m);

mas2 = new int *[n]; // Виділяємо блок пам'яті під масив покажчиків. for(i = 0; i < n; i++)

mas2[i]= new int [m]; // Виділяємо блок пам'яті під рядок матриці. f = fopen("t.dat", "r");

for(i = 0; i < n; i++) for(j = 0; j < m; j++)

fscanf(f,“%d” &mas2[i][j]); // Введення елементів матриці з файлу. fclose(f);

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

{

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

printf(" %d", mas2[i][j]); // Виведення елементів матриці на екран. printf("\n");

}

delete [] mas2; getch(); }

Соседние файлы в предмете Объектно ориентированное программирование