ТРПОСУ
.docЛабораторная работа №1 Программирование алгоритмов с использованием динамических массивов
Цель работы – научиться использовать операции динамического выделения и освобождения памяти на примере работы с одномерными и двумерными массивами, а также косвенное обращение к элементам массива.
Задание к лабораторной работе
Общая постановка. Составить программы – одномерные массивы : задания 1 – 25, двухмерные массивы: задания 26 – 44. Массивы создаются в динамической области памяти с использованием операций new и delete. Ввод исходных данных: реальный размер массивов и их значения. Обращение к элементам массива – через косвенную адресацию.
12 Вариант. Заданы два массива – А(5) и В(5). Подсчитать в них количество элементов, меньших значения t, и первым на печать вывести массив, имеющий наименьшее их количество.
/ lab1.cpp : Defines the entry point for the console application.
//12. Заданы два массива А(5) и В(5). Подсчитать в них количество элементов, больших значения t
// и первым на печать вывести массив, имеющий наименьшее их количество.
#include "stdafx.h"
#include <stdio.h>
#include <stdio.h>
#include <conio.h>
int main(int argc, char* argv[])
{int n = 5, t;
int i, x = 0, y = 0;
int *A = new int[n];
int *B = new int[n];
printf(" Enter t = ");
scanf("%d",&t);
fflush(stdin);
for (i = 0; i< n;i ++)
{ printf(" Enter A[%d] = ",i);
scanf("%d",&A[i]); }
fflush(stdin);
for (i = 0; i< n;i ++)
{ printf(" Enter B[%d] = ",i);
scanf("%d",&B[i]); }
for (i = 0; i< n;i ++)
{ if (A[i] <t) x++;
if (B[i] <t) y++;}
if (x>y)
for (i = 0; i< n;i ++)
printf("A[%d]=%d\n",i,A[i]);
else for (i = 0; i< n;i ++)
printf("B[%d]=%d\n",i,B[i]);
delete[] A;
delete[] B;
return 0;
getch();}
Выполнение:
Лабораторная работа №3 Классы. Программирование линейных алгоритмов с использованием конструктора, деструктора, friend – функции инициализации set() и функции вывода результатов print()
Цель работы – изучить основные способы работы по созданию конструктора класса с захватом динамической памяти и деструктора для ее освобождения, применение friend – функции и изучение ее особенностей.
Задание к лабораторной работе
Общая постановка. Пользовательский класс Х должен содержать необходимые элементы – данные x, y, а класс Y – переменную z, которые создаются в динамической области памяти, конструкторы для их создания (операция new) и установки их начальных значений соответственно: Х(), Y(), деструкторы: ~ Х(), ~ Y(), friend – функция печати: friend void print(), функция, решающая поставленную задачу: friend void Run().
Код методов и функций – вне пространства определения класса.
12 Вариант:
При x=17,421, y=10,365, z=0,828, f=0,33056.
/Лабораторная работа №3. Классы.
//Программирование линейных алгоритмов с использованием конструктора,
//деструктора, функций-друзей инициализации set() и вывода результатов print()
//Вариант№12.Составить метод Run для вычисления выражения:
//f=(pow(y+pow((x-1),0,3333),0.25))/(|x-y|*(sinz*sinz+tgz));
//При x=17.421, y=0.010365, z=82800 f=0.33056
#include <iostream.h>
#include <conio.h>
#include <math.h>
class lab3
{ double *f,*x,*y,*z;
public:
lab3();
~lab3();
friend void set(lab3 *cl);
friend void print(lab3 *cl);
friend void Run(lab3 *cl); };
lab3::lab3()
{ x=new double;
y=new double;
z=new double;
f=new double; }
lab3::~lab3()
{ delete x;
delete y;
delete z;
delete f; }
void set(lab3 *cl)
{ cout<<"****<|PLEASE|>****"<<endl;
cout<<"Input x:";
cin>>*cl->x;
cout<<"Input y:";
cin>>*cl->y;
cout<<"Input z:";
cin>>*cl->z; }
void print(lab3 *cl)
{ cout<<"Result: f="<<*cl->f<<endl<<endl; }
void Run(lab3 *cl)
{ *cl->f=pow(((*cl->x)-1),0.3333);
*cl->f=pow(((*cl->y)+(*cl->f)),0.25);
*cl->f/=fabs((*cl->x)-(*cl->y))*(pow(sin(*cl->z),2)+tan(*cl->z)); }
int main ()
{ //Priamoy sposob;
lab3 Fun1;
cout<<"Priamoy sposob |>>"<<endl;
set(&Fun1);
Run(&Fun1);
print(&Fun1);
//Kosvenniy sposob
lab3 *p1=&Fun1;
cout<<"Kosvenniy sposob |>>"<<endl;
set(&Fun1);
Run(p1);
print(p1);
//Dinamicheskoe vidilenie pamiati
lab3 *p2=new lab3;
cout<<"Dinamicheskoe videlenie pamiati |>>"<<endl;
set(p2);
Run(p2);
print(p2);
delete p2;
getch();
return 0; }
Выполнение:
Литература
-
Страуструп, Б., Язык программирования С++./ Б. Страуструп. – СПб: Питер, 2005.
-
Бусько, В. Л., Корбит, А. Г., Кривоносова, Т. М. Основы ООП. С++. Лабораторный практикум для студентов всех специальностей и форм обучения БГУИР . – Минск: БГУИР, 2005.
-
Л. Константайн Л., Локвуд Л. Разработка программного обеспечения. ‑ М.: Питер, 2004.
-
Аллен Э. Типичные ошибки проектирования. - М. : Питер, 2003.