Скачиваний:
78
Добавлен:
15.06.2014
Размер:
3.66 Кб
Скачать
#include <iostream>
#include <conio.h>
#include <time.h>
#include <iomanip>
using namespace std;

class Array
{
	double * arr;	//непосредственно массив
	unsigned size;	//размер массива
public:
	void init(unsigned);
	void delarray();
	void Set(int, double);
	void Get(double);
	int size_mas();
	friend void print(Array);
};

void main()
{
	unsigned size_mas;
	int qq,nomer;
	double znach;
	cin.exceptions(cin.failbit);
 
        while ( true ){
                try {
							cout<<"vvedite razmer massiva: ";
							cin>>size_mas;
							cout << endl;
							if ((size_mas>0)&&(size_mas<52428800)) break;
							else cout << "CHISLO DOLGNO BIT >0 i <52428800"<<	endl;

					}
				 catch( std::istream::failure e )
					 {
							cerr << "Error vvoda, vvedi pravilnor znachenie" << std::endl;
							std::cin.clear();
							std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
					 }
						}
	Array mas;
	mas.init(size_mas);
	while (true)
	{
	cout<<"viberete deistvie:"<< endl<<endl;
	cout<<"1) Vivesti massiv"<<endl;
	cout<<"2) Izmenit element"<<endl;
	cout<<"3) Dobavit element"<<endl;
	cout<<"4) Ochistit"<<endl;
	cout<<"5) Exit"<<endl<<endl;
	
	 while ( true ){
                try {
							cout<<"Vvedite chislo (1..5): ";
							cin>>qq;
							if ((qq>0)&&(qq<=5)) break;
							else cout << "CHISLO DOLGNO BIT >0 i <=5"<<	endl;

					}
				 catch( std::istream::failure e )
					 {
							cerr << "Error vvoda, vvedi pravilnor znachenie" << std::endl;
							std::cin.clear();
							std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
					 }
						}
	 switch(qq)
	{
	case 1:
		print(mas);
		break;
	case 2:
		while ( true ){
                try {
							cout<<"Vvedite nomer elementa: "; cin>>nomer;cout<<endl;
							cout<<"Vvedite znachenie elementa: "; cin>>znach;cout<<endl;
							if ((nomer>0)&&(nomer<=(mas.size_mas()-1))) break;
							else cout << "CHISLO DOLGNO BIT >0 i <=5"<<	endl;
					}
				 catch( std::istream::failure e )
					 {
							cerr << "Error vvoda, vvedi pravilnor znachenie" << std::endl;
							std::cin.clear();
							std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
					 }
						}
		mas.Set(nomer,znach);
		break;
	case 3:
		while ( true ){
                try {
							cout<<"Vvedite znachenie elementa: "; cin>>znach;cout<<endl;
							break;
					}
				 catch( std::istream::failure e )
					 {
							cerr << "Error vvoda, vvedi pravilnor znachenie" << std::endl;
							std::cin.clear();
							std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
					 }
						}
		mas.Get(znach);
		break;
	case 4:
		system("cls");
		break;
	case 5:
		mas.delarray();
		exit(1);
		break;
	}
	}
}

void Array::init(unsigned size_mas)
{
	size=size_mas;
	srand(time_t(NULL));
	arr=new double[size];
	for (int i=0; i<size; i++)
		arr[i]=double (rand()%1000)/1000+rand()%1000;
	cout<<"Massiv sozdan"<<endl<<endl;
}

void Array::Get(double znach)
{
	size++;
	double* ar;
	ar=new double[size];
	for (int i=0; i<size-1; i++)
		ar[i]=arr[i];
	delete[] arr;
	ar[size-1]=znach;
	arr=new double[size];
	for (int i=0; i<size; i++)
		arr[i]=ar[i];
	delete[] ar;
	cout<<"Znacenie dobavleno"<<endl<<endl;
}

void Array::Set(int nom, double znach)
{
	arr[nom-1]=znach;
	cout<<"Znacenie izmeneno"<<endl<<endl;
}

void print(Array obj)
{
	for (int i=0; i < obj.size; i++)
	{
		cout<<i+1<<setw(10)<<obj.arr[i]<<endl;
	}
	cout<<endl;
}

void Array::delarray()
{
	delete[] arr;
}

int Array::size_mas()
{
	return size;
}
Соседние файлы в папке laba5_shakur_12
  • #
    15.06.20143.66 Кб78laba5_shakur_12.cpp
  • #
    15.06.20143.94 Кб77laba5_shakur_12.vcxproj
  • #
    15.06.2014964 б77laba5_shakur_12.vcxproj.filters
  • #
    15.06.2014143 б77laba5_shakur_12.vcxproj.user