Добавил:
Kaz
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лаба 1-6 Лабы С++ [Вариант 3, 4, 4, 1, 12, 12] / laba5_shakur_12 / laba5_shakur_12 / laba5_shakur_12
.cpp#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