С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

Составить описание класса для определения одномерных массивов целых чисел( устранение ошибок) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Указатель на массив http://www.cyberforum.ru/cpp-beginners/thread694063.html
Подскажите пожалуйста, как создать указатель на массив, если длина массива записана в переменной? Т.е проблема в том что в квадратных скобочках при определении массива должно стоять константное...
C++ Разложение матрицы А Всем доброй почти ночи! Работаю над алгоритмом разложения матрицы А на матрицы Q и R Пользуюсь данным алгоритмом И вот такой у меня вышел код: #include <stdio.h> #include <math.h> #define N... http://www.cyberforum.ru/cpp-beginners/thread694052.html
C++ Наименьшее количество квадратов в прямоугольнике
Дан прямоугольник размерностью NxM. Нужно заполнить его наименьшим количеством квадратов. Я погуглил на данную тему, но нигде не нашёл внятного решения. Собственно проблема не в самой реализации, а в...
Вычисления выражений C++
Здравствуйте, пожалуйста, помогите составить программы. В первом скрине, вычисление выражения. Во втором, вычисление с применением условного оператора.
C++ Двумерные массивы с использованием функций http://www.cyberforum.ru/cpp-beginners/thread694044.html
вот сама задача: Составить функцию преобразования матрицы A в новую матрицу путем вычеркивания строки с номером L. Составить также функцию печати исходной матрицы, а рядом - полученной. Использовать...
C++ Как просчитать шаги от домов до магазина Готовлюсь к олимпиаде (уже будет 2 декабря) и на тренировочных курсах попалась такая задача : Не могу понять, как просчитать шаги от домов до магазина. Может надо вычитать индексы массива? Кто... подробнее

Показать сообщение отдельно
Vlai
0 / 0 / 0
Регистрация: 04.03.2012
Сообщений: 19

Составить описание класса для определения одномерных массивов целых чисел( устранение ошибок) - C++

10.11.2012, 20:32. Просмотров 544. Ответов 0
Метки (Все метки)

Составить описание класса для определения одномерных массивов целых чисел (векторов). Предусмотреть возможность обращения к отдельному элементу массива с контролем выхода за пределы массива, возможность задания произвольных границ индексов при создании объекта и выполнения операций поэлементного сложения и вычитания массивов с одинаковыми пределами индексов, умножения и деления всех элементов массива на скаляр, вывода на экран элемента массива по заданному индексу и всего массива.


#include <iostream.h>
#include <stdlib.h>
#include <time.h>
class Massiv{
int *a;
public:
void Sozd(int k);
void Vvod_Sl(int k,int k1,int k2);
void Obrash(int k1, int k2);
void Slozh(Massiv b,Massiv c,int k1,int k2,int h1,int h2);
void Vichit(Massiv b, Massiv c,int k1, int k2, int h1, int h2);
void Umnozh(int k1, int k2);
void Delen(int k1, int k2);
void Print_el(int k1, int k2);
void Print(int k1, int k2);
void Del();
};
void main()
{
Massiv a,b,c;
int n,m,n1,n2,m1,m2;
randomize();
int punkt;
cout<<"MENU:"<<endl;
cout<<"sozdat massiv______________________(1)"<<endl;
cout<<"Obrashenie k elementu massiva______(2)"<<endl;
cout<<"Slozhenie__________________________(3)"<<endl;
cout<<"Vichitanie_________________________(4)"<<endl;
cout<<"Umnozhenie_________________________(5)"<<endl;
cout<<"Delenie____________________________(6)"<<endl;
cout<<"Vivod elementa massiva_____________(7)"<<endl;
cout<<"Vivod massiva______________________(8)"<<endl;
cout<<"Udalenie massiva___________________(9)"<<endl;
cout<<"Otmena_____________________________(0)"<<endl;
cout<<endl;
cout<<"Viberite punkt menu ";
cin>>punkt;
cout<<endl;
while (punkt != 0)
{
switch (punkt)
{
case 1:
{
cout << "vvedite nachalnuu granizu indeksa massiva1: ";
cin >> n1;
cout << "vvedite konechnuu granizu indeksa massiva1: ";
cin >> n2;
n=n2-n1+1;
cout << "vvedite nachalnuu granizu indeksa massiva2: ";
cin >> m1;
cout << "vvedite konechnuu granizu indeksa massiva2: ";
cin >> m2;
m=m2-m1+1;
a.Vvod_Sl(n,n1,n2);
b.Vvod_Sl(m,m1,m2);
};break;
case 2:
{
cout<<"Viberite massiv (1 or 2): ";
int r;
cin>>r;
switch (r)
{
case 1:
{
a.Obrash(n1,n2);
}; break;
case 2:
{
b.Obrash(m1,m2);
}; break;
default:cout<<"Massivov s takimi nomerami net"<<endl;
}
cout<<endl;
};break;
case 3:
{
c.Vvod_Sl(n,n1,n2);
a.Slozh(b,c,n1,n2,m1,m2);
c.Del();
};break;
case 4:
{
c.Vvod_Sl(n,n1,n2);
a.Vichit(b,c,n1,n2,m1,m2);
};break;
case 5:
{
cout<<"Viberite massiv (1 or 2): ";
int r;
cin>>r;
switch (r)
{
case 1:
{
a.Umnozh(n1,n2);
}; break;
case 2:
{
b.Umnozh(m1,m2);
}; break;
default:cout<<"Massivov s takimi nomerami net"<<endl;
}
};break;
case 6:
{
cout<<"Viberite massiv (1 or 2): ";
int r;
cin>>r;
switch (r)
{
case 1:
{
a.Delen(n1,n2);
}; break;
case 2:
{
b.Delen(m1,m2);
}; break;
default:cout<<"Massivov s takimi nomerami net"<<endl;
}
//a.Delen();
};break;
case 7:
{
cout<<"Viberite massiv (1 or 2): ";
int r;
cin>>r;
switch (r)
{
case 1:
{
a.Print_el(n1,n2);
}; break;
case 2:
{
b.Print_el(m1,m2);
}; break;
default:cout<<"Massivov s takimi nomerami net"<<endl;
}
cout<<endl;
//a.Print_el();
};break;
case 8:
{
cout<<"1-ii massiv:"<<endl;
a.Print(n1,n2);
cout<<endl;
cout<<"2-oi massiv:"<<endl;
b.Print(m1,m2);
};break;
case 9:
{
a.Del();
b.Del();
};break;
case 0:
{
punkt=0;
};break;
default:cout<<"Vi nechego ne vibrali. Prilozhenie bydet zakrito"<<endl;
}
cout<<endl;
cout<<"sozdat-(1), Obr-(2), Slozh-(3), Vich-(4), Umn-(5), Delen-(6), Viv_el-(7),
Viv-(8), Ud-(9), Otm-(0)"<<endl;
cout<<endl;
cout<<"Viberite punkt menu ";
cin>>punkt;
cout<<endl;
}
}
void Massiv::Sozd(int k)
{
a=(int *) malloc (sizeof(int) * (k+3));
}
void Massiv :: Vvod_Sl(int k,int k1 ,int k2)
{
Sozd(k);
for (int i=k1; i <= k2; i++)
{ *(a+i)= random(10); }
}
void Massiv :: Obrash(int k1, int k2)
{
int in;
cout<<"Vvedite indeks vivodimogo el-ta";
cin>>in;
if ((in>=k1)&&(in<=k2))
{
cout<<"element s indeksom ";cout<<in; cout<<" : ";
cout << *(a+in) << " ";
}
else
cout<<"Vi vishli za granici indeksa"<<endl;
}

void Massiv :: Slozh(Massiv b,Massiv c,int k1, int k2, int h1, int h2)
{
if ((k1==h1)&&(k2==h2))
{
for (int i=k1; i<=k2; i++)
{
(c.a[i])=(*(a+i))+(b.a[i]);
}
cout<<"res:"<<endl;
c.Print(k1,k2);
}
else
cout<<"Indeksi massivov ne sovpadaut"<<endl;
}
void Massiv :: Vichit(Massiv b, Massiv c, int k1, int k2, int h1, int h2)
{
if ((k1==h1)&&(k2==h2))
{
for (int i=k1; i<=k2; i++)
{
(c.a[i])=(*(a+i))-(b.a[i]);
}
cout<<"res:"<<endl;
c.Print(k1,k2);
}
else
cout<<"Indeksi massivov ne sovpadaut"<<endl;
}
void Massiv :: Umnozh(int k1, int k2)
{
int k;
cout<<"Vvedite skalyar: ";
cin>>k;
for (int i=k1; i <= k2; i++)
{ *(a+i)= *(a+i)*k; }
}

void Massiv :: Delen(int k1, int k2)
{
int k;
cout<<"Vvedite skalyar: ";
cin>>k;
while (k==0)
{
cout<<"Delenie na nul nevozmozhno. Vvedite drugoe znachenie.";
cin>>k;
}
for (int i=k1; i <= k2; i++)
{ *(a+i)= *(a+i)/k; }
}
void Massiv :: Print_el(int k1, int k2)
{
int k;
cout<<"Vvedite nomer el-ta, kot-ii sled-et vivesti: ";
cin>>k;
if ((k>=k1)&&(k<=k2))
{
cout<<"element s indeksom ";
cout<<k;
cout<<" :";
cout<< *(a+k)<<endl;
}
else cout<<"Vi vishli za granici indeksa"<<endl;
}
void Massiv::Print(int k1, int k2)
{
for (int i=k1; i <= k2; i++) { cout << *(a+i) << " ";}
cout << endl;
}
void Massiv :: Del()
{ free(a); }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.