Міністерство освіти і науки, молоді та спорту України
Одеський національний політехнічний університет
Кафедра ІТПЕТ
Лабораторна работа №4
з дисципліни «Алгоритмізація та програмування»
«Використання вказивників у програмах на мові С++»
Варіант 9
Виконав:
студент групи РІ-111
Степаненко А. В.
Перевірив:
Доц. Андріянов А. В.
2012 рік
Цель: использование указателей в программах на языке C++
Исходный код программы
Задание 1
#include<iostream>
using namespace std;
void main()
{
setlocale(LC_ALL,"russian");
int iNum1;
int iNum2;
int iResult;
int *pNum1;
int *pNum2;
iNum1=2;
iNum2=3;
pNum1=&iNum1;
pNum2=&iNum2;
iResult=*pNum1+*pNum2;
cout << "Рузультат=" << iResult << endl;
system("pause");
}
Задание 2
#include <iostream>
using namespace std;
Void main()
{
setlocale(LC_ALL,"russian");
const char SIZE=10;
float numbers[SIZE]={0.0, 1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9};
float *nPtr;
int i;
/*п.3. Напечатать элементы массива numbers используя запись индексов*/
cout << "п.3. Напечатать элементы массива numbers используя запись индексов" << endl;
for(i=0;i<10;i++)
cout << numbers[i] << " ";
cout << endl<< endl;
//п.4. Приведите 2 различных оператора, которые присваивают начальный адрес переменной указателю
nPtr=&numbers[0];
cout << "Адрес numbers[0]: " << nPtr << endl;
nPtr=(numbers+0); // или nPtr=numbers;
cout << "Адрес (numbers+0): " << nPtr << endl;
cout << endl;
/*п.5. Напечатать элементы массива numbers используя указатель nPtr*/
cout << "п.5. Напечатать элементы массива numbers используя указатель nPtr" << endl;
for(i=0;i<10;i++)
{
cout << *(nPtr+i) << " ";
}
cout << endl<< endl;
/*п.6. Напечатать элементы массива numbers используя запись указатель-смещение с именем массива как указателем*/
cout << "п.6. Напечатать элементы массива numbers используя запись указатель-смещение с именем массива как указателем" << endl;
for(i=0;i<10;i++)
cout << *(numbers+i) << " ";
cout << endl<< endl;
/*п.7. Напечатать элементы массива numbers используя индексацию указателя nPtr*/
cout << "п.7. Напечатать элементы массива numbers используя индексацию указателя nPtr" << endl;
for(i=0; i<10; i++)
cout << nPtr[i] << " ";
cout << endl<< endl;
/*п.8. Напечатать элементы массива numbers используя запись индексов*/
cout << numbers[3] << endl;
/*п.8. Напечатать элементы массива numbers используя запись указатель-смещение с именем массива как указателем*/
cout << *(numbers+3) << endl;
/*п.8. Напечатать элементы массива numbers используя индексацию указателя nPtr*/
cout << nPtr[3] << endl;
/*п.8. Напечатать элементы массива numbers используя указатель nPtr*/
cout << *(nPtr+3) << endl << endl;
/*п.9. Определить на какой адресс ссылается nPtr*/
cout << "Адрес nPtr сейчас: " << nPtr << endl<< endl;
/*п.10. Предположить что nPtr указывает на начало массива numbers, определить адрес nPtr+8, определить значение*/
cout << "Адрес nPtr+8: " << nPtr << endl << "Значение nPtr+8: " << *(nPtr+8)<< endl<< endl;
/*Предпологая что nPtr=&numbers[5] определите на какой адрес будет ссылаться nPtr после выполнения nPtr-=4. Определить значение на этом адресе*/
nPtr=&numbers[5];
nPtr-=4;
cout << "nPtr-=4: " << nPtr << endl << "Значение nPtr-=4: " << *(nPtr)<< endl<< endl;
system("pause");
}
Задание 3
#include <iostream>
#include <stdio.h>
using namespace std;