Скачиваний:
1
Добавлен:
08.08.2022
Размер:
11.19 Кб
Скачать
яю// HW1.cpp : -B>B D09; A>45@68B DC=:F8N "main". 45AL =0G8=05BAO 8 70:0=G8205BAO 2K?>;=5=85 ?@>3@0<<K.

//



#include "pch.h"

#include <iostream>



const int SIZE = 3;



class Node

{

	float arr[SIZE];

public:

	Node *pNext;



	Node() {

		this->pNext = nullptr;

		for (int i = 0; i < SIZE; i++)

			arr[i] = 0.0;

	}

	

	void show();	

	float summ();	

	float getMin();	



	float* get() {

		return arr;

	}

	void set(float arr[]) {

		for (int i = 0; i < SIZE; i++)

			this->arr[i] = arr[i];

	}



	~Node() {};

};



// K2>4 =0 M:@0=

void Node::show()

{

	for (int i = 0; i < SIZE; i++)

		std::cout << arr[i] << "\t";

	std::cout << std::endl;

}



//  0AG5B AC<<K 3E M;-B>2 <0AA820

float Node::summ()

{

	return (arr[0] + arr[1] + arr[2]);

}



// 0E>48< <8=8<C< A@548 3E M;-B>2 <0AA820

float Node::getMin()

{

	float min = arr[0]; // int i = 1, B.:. "=C;52>9 M;5< 27O;8 70 <8="

	for (int i = 1; i < SIZE; i++) {

		if (arr[i] < min)

			min = arr[i];

	}

	return min;

}



class List

{

public:

	Node *pHead;

	Node *pTail;



	List() {

		this->pHead = nullptr;

		this->pTail = nullptr;

	}

	List(int size);

	List(float arr[][SIZE], int size) { // >=AB@C:B>@ (A>740=85 + 70?>;=5=85)

		for (int i = 0; i < size; i++)

			this->pushBack(arr[i]);

	}//List

	List(const List &other);



	void show();

	void pushBack(float arr[]);

	float avg();



	friend float minInList(List &list);



	~List();

};



// >=AB@C:B>@ A :>;-2>< M;-B>2

List::List(int size)

{

	pHead = new Node;

	pTail = pHead;



	for (int i = 1; i < size; i++) { // i = 1 B.:. >48= M;5<5=B C65 A>740=

		pTail->pNext = new Node;

		pTail = pTail->pNext;

	}//for

	pTail->pNext = nullptr;

}



// >=AB@C:B>@ :>?8@>20=8O

List::List(const List &other)

{

	Node * otherList = other.pHead;			// 15@5< 3>;>2C 87 List'a, A :>B>@>3> 1C45< :>?8@>20BL



	while (otherList) {					

		this->pushBack(otherList->get());	// >102;O5< <0AA82, ?>;CG5==K9 getter'><, 2 :>=5F =>2>3> List'a 

		otherList = otherList->pNext;		// 5@5E>48< : A;54. M;-BC List'a, A :>B>@>3> 1C45< :>?8@>20BL.

	}

}



// >102;O5< =>2K9 Node 2 :>=5F A?8A:0 A 8=8F80;870F59

void List::pushBack(float arr[])

{

	if (!pHead) {					// @01>B05< A "3>;>2>9". A;8 =8G53> =5B, B> A>7405<

		pHead = new Node;

		pHead->set(arr);			// 70?>;=5=85 <0AA820 40==K<8, :>B>@K5 225; ?>;L7>20B5;L

		pHead->pNext = nullptr;		// A;54 C:070B5;L C:07K205B =0 nullptr



		pTail = pHead;				// ?>A;54=89 M;5<5=B - 3>;>20

		return;

	}//if



	pTail->pNext = new Node;		// @01>B05< A ?>A;54=8< M;5<5=B><. !>7405< ?>A;54=89->pNext = new Node;

	pTail->pNext->set(arr);			// 70?>;=5=85 <0AA820 40==K<8

	pTail->pNext->pNext = nullptr;

	pTail = pTail->pNext;			// 5@5E>4 =0 A>740==K9 M;5<5=B

}



//  0AG5B A@54=53> 0@8D<5B8G5A:>3> 2> 2A5< A?8A:5

float List::avg()

{

	Node *current = pHead;

	float avg = 0.0;

	int count = 0;



	while (current) {

		avg += current->summ();

		count++;

		current = current->pNext;

	}//while



	return avg / (count * SIZE);

}



// K2>4 =0 M:@0=

void List::show()

{

	Node *current = pHead;				// A>740Q< 2A?><>30B5;L=CN ?5@5<5==CN.

	while (current) {

		current->show();

		current = current->pNext;

	}

}



// 5AB@C:B>@

List::~List()

{

	Node *temp;



	while (pHead) {

		temp = pHead;

		pHead = pHead->pNext;

		delete temp;

	}//while

	//delete pHead;

	//std::cout << "~List();" << std::endl;

}



// friend DC=:F8O =0E>645=8O min M;-B0 2 A?8A:5

float minInList(List &list)

{

	float min = list.pHead->getMin();	// ?CABL <8=8<C< - ?5@2K9 M;-B

	Node *temp = list.pHead;



	while (temp) {

		if (temp->getMin() < min)		// 5A;8 =0945< M;-B <5=LH5, G5< min, B> MB>B M;5< AB0=>28BAO min'><

			min = temp->getMin();

		temp = temp->pNext;

	}//while



	return min;

}





int main()

{

	List x;		//  01>B0 :>=AB@C:B>@0 ?> C<>;G0=8N

	List y(5);	//  01>B0 :>=AB@C:B>@0 (A>740=85 5 M;-B>2 157 70?>;=5=8O 40==K<8)



	std::cout << "y.show (construct y(5)):" << std::endl;

	y.show();



	float arr[5][3] = { { -10, 20, 30  }, { 1, 2, 3 }, { 555, 666, 777}, { 11, 22, 33}, { 3, 2 , 1} };



	x.pushBack(arr[0]);

	x.pushBack(arr[1]);

	x.pushBack(arr[2]);

	//x.pushBack(arr[4]);



	std::cout << "x.show:" << std::endl;

	x.show();



	float min = minInList(x);	// 0E>48< <8=<C< 2> 2A5< A?8A:5

	std::cout << "\nMin: " << min << std::endl;

	std::cout << "avg List: " << x.avg() << std::endl;



	std::cout << "-----------------------------" << std::endl;

	

	//List z(x);

	List z = x; //  01>B0 :>=AB@C:B>@0 :>?8@>20=8O

	std::cout << "z.show (copy construct z = x):" << std::endl;

	z.show();



	std::cout << "-----------------------------" << std::endl;



	List r(arr, 3); //  01>B0 :>=AB@C:B>@0(A>740=85 3 M;-B0 + 70?>;=5=85 40==K<8)

	r.show();

}



// 0?CA: ?@>3@0<<K: CTRL+F5 8;8 <5=N "B;04:0" > "0?CA: 157 >B;04:8"

// B;04:0 ?@>3@0<<K: F5 8;8 <5=N "B;04:0" > "0?CAB8BL >B;04:C"



// !>25BK ?> =0G0;C @01>BK 

//   1.  >:=5 >1>7@520B5;O @5H5=89 <>6=> 4>102;OBL D09;K 8 C?@02;OBL 8<8.

//   2.  >:=5 Team Explorer <>6=> ?>4:;NG8BLAO : A8AB5<5 C?@02;5=8O 25@A8O<8.

//   3.  >:=5 "KE>4=K5 40==K5" <>6=> ?@>A<0B@820BL 2KE>4=K5 40==K5 A1>@:8 8 4@C385 A>>1I5=8O.

//   4.  >:=5 "!?8A>: >H81>:" <>6=> ?@>A<0B@820BL >H81:8.

//   5. >A;54>20B5;L=> 2K15@8B5 ?C=:BK <5=N "@>5:B" > ">1028BL =>2K9 M;5<5=B", GB>1K A>740BL D09;K :>40, 8;8 "@>5:B" > ">1028BL ACI5AB2CNI89 M;5<5=B", GB>1K 4>1028BL 2 ?@>5:B ACI5AB2CNI85 D09;K :>40.

//   6. 'B>1K A=>20 >B:@KBL MB>B ?@>5:B ?>765, 2K15@8B5 ?C=:BK <5=N "$09;" > "B:@KBL" > "@>5:B" 8 2K15@8B5 SLN-D09;.



Соседние файлы в папке УТС 5 семестр