Использование указателей bc++

Страницы работы

Содержание работы

Раздел 4. ЛАБОРАТОРНЫЕ РАБОТЫ

10. ИСПОЛЬЗОВАНИЕ УКАЗАТЕЛЕЙ BC++

Цель работы:

·  Изучить указатели на объекты и на функции;

·  Изучить арифметику указателей;

·  Научиться использовать указатели в С-программах.

Задание: Разработать программы, содержащие следующие задачи:

      Задача 1. Составить программу на языке С/С++, содержащую:

·  объявления и инициализацию указателей на различные типы объектов: переменные, массивы, структуры;

·  объявления и инициализацию указателей с различными модификаторами (const, near, far, huge);

·  преобразования указателей различных типов, в том числе типа void.

      Задача 2. Составить программу на языке С/С++, содержащую:

·  простейшие действия с одномерными массивами (как числовыми, так и символьными), используя указатели, методы доступа к элементам массивов через указатели;

·  простейшие действия с многомерными массивами (как числовыми, так и символьными), используя указатели, методы доступа к элементам массивов через указатели;

·  всевозможные операции с указателями.

Задача 3. Составить программу на языке С/С++, содержащую:

·  объявления указателей на функции и передачи аргументов с помощью указателей;

·  доступ к содержимым по указателям.

Задача 4. Составить программу на языке С/С++, содержащую:

·  динамическое размещение массивов;

·  интерпретацию составных описателей.

      Примечание: предметную область задач выбрать самостоятельно. При решении задач использовать материалы лекции 9. В разработанных программах должен соблюдаться стиль программирования, каждый раздел ее должен быть прокомментирован, программы должны носить индивидуальный характер.

В качестве примера приведем некоторые фрагменты программы решения задачи 1 на использование указателей.

// Задача 1(фрагмент)

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

void main(void)

{

clrscr();  // Очистка экрана

{  // Указатели на целое:

int *prt, tmp=10;

prt=&tmp; // Инициализация указателя

printf("Адрес - %p, Значение - %d\n",prt,*prt);

*prt+=5;  // Декремент значения указателя

printf("Адрес - %p, Значение - %d\n",prt,*prt);

}

// Указатель на одномерный массив:

{

int i,mass1[ ]={9,8,7,6,5,4,3,2,1};

int *pM1=&(mass1[0]); // Инициализация указателя

for (i=0;i<9;i++) printf("%2d",*(pM1+i)); // Доступ к элементам массива

printf("\n");

}

{  Указатель на двумерный массив (матрицу):

int **A,n,i,j; // Объявлен указатель на указатель

printf("Введите порядок матрицы:\n n = ");

scanf("%d",&n); //  Запрос порядка матрицы

for(i=0;i<n;i++) A[i]=(int *)calloc(n,sizeof(int)); // Выделение памяти под матрицу

printf("Введите элементы матрицы:\n");

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

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

{

printf("A(%d,%d) = ",i+1,j+1);

scanf("%d",&(*(*(A+i)+j))); // Инициализация матрицы

}

printf("\n\tИсходная матрица:\n");

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

{

for (j=0;j<n;j++) printf("%d\t",*(*(A+i)+j)); // Вывод исходной матрицы на экран

printf("\n");

}

printf("\n\Транспонированная матрица:\n");

for(i=0;i<n;i++) // Определяем выходную матрицу

{

for (j=0;j<n;j++) printf("%d\t",*(*(A+j)+i)); // Доступ к элементам матрицы

printf("\n");

}

getch(); // Ожидание нажатия клавиши

{     // Указатель на структуру:

struct MyStruct

{

char *name,

*phone_number;

int  age;

} *pMyFriend;

pMyFriend->name="Олег"; // Доступ к элементам структуры

pMyFriend->phone_number="3-40-08";

pMyFriend->age=18;

printf("\nИмя: %s\n", pMyFriend->name);

printf("\nНомер телефона: %s\n", pMyFriend->phone_number);

printf("\nВозраст: %d\n",pMyFriend->age);

}

}

}

Тестирование программы:

Адрес – FFF4,  Значение – 10

Адрес – FFF4,  Значение – 15

9   8   7   6   5   4   3   2   1

Введите порядок матрицы:

n = 2

Введите элементы матрицы:

А(1,1) =1

А(1,2) =2

А(2,1) =32

А(2,2) =4

Исходная матрица:

1  2

32  4

Транспонированная матрица:

1  32

2  4

Имя:  Олег

Номер телефона:  3 – 40 – 08

Возраст:   18

Примечание: в задаче 1 представлены только отдельные ее фрагменты. Аналогично должны быть разработаны и представлены остальные задачи на указатели. Отчет должен содержать титульный листок, постановку задач, алгоритм их решения, отлаженные программы на алгоритмическом языке и результаты расчета. На кафедру сдать отчет на бумажной основе, выполненный  в Word’e и исходные файлы программ.

11. РАЗРАБОТКА РЕКУРСИВНЫХ ПРОГРАММ

Цель работы:

·  Изучить описание рекурсии математическими терминами;

Похожие материалы

Информация о работе