Скачиваний:
53
Добавлен:
01.04.2014
Размер:
61.44 Кб
Скачать

Лабораторная работа №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; }

Выполнение:

Литература

  1. Страуструп, Б., Язык программирования С++./ Б. Страуструп. – СПб: Питер, 2005.

  2. Бусько, В. Л., Корбит, А. Г., Кривоносова, Т. М. Основы ООП. С++. Лабораторный практикум для студентов всех специальностей и форм обучения БГУИР . – Минск: БГУИР, 2005.

  3. Л. Константайн Л., Локвуд Л. Разработка программного обеспечения. ‑ М.: Питер, 2004.

  4. Аллен Э. Типичные ошибки проектирования. - М. : Питер, 2003.