Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.04.2010, 20:55   #1
1mposs1ble
Пользователь
 
Регистрация: 24.03.2010
Сообщений: 12
По умолчанию класс массивов

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

Помогите пожалуйсто дописать функции - операций поэлементного сложения и вычитания массивов с одинаковыми границами индексов , умножения и деления , всех элементов массива на скаляр

ВОт что напчиал на сегодняшний день, на консоль в билдере.



#include <iostream.h>
#include <conio.h>
#include <iomanip.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
//Класс массивы
class Massivs{
public:
int x,y,**ptr;//кол-во массивов, эл-ов в них и указатель на массивы
void Vvod();//ввод массивов
void Vuvod(int x1,int y1);//вывод всех массивов
void VuvodMassiv(int x1);//вывод 1 массива
void VuvodElem(int x1,int y1);//вывод эл-та в массиве
};
//-------------------------------------------------------------
void Massivs::Vvod()
{
if(x>0 && y>0)delete ptr; // разрушает объект, на который ссылается указатель , и освобождает область памяти, выделенную для него ранее операцией
cout<<"Vvedite massivbi\n";
cout<<"Kol-vo massivov: ";
cin>>x;
cout<<"Dlina massiva: ";
cin>>y;
ptr=new int*[x];
for(int i=0;i<x;i++){
ptr[i]=new(int[y]);
for(int j=0;j<y;j++)
ptr[i][j]=rand()%9; //рандом
}
}
//------------------------------------------------------------ -
void Massivs::Vuvod(int x1,int y1){
for(int i=0;i<x1;i++){
for(int j=0;j<y1;j++)
cout<<ptr[i][j]<<" ";
cout<<endl;
}
getch();
}
//------------------------------------------------------------------------
void Massivs::VuvodMassiv(int x1){
cout<<"Vvedite nomer massiv: ";
cin>>x1;
if(x1<x){
for(int j=0;j<y;j++)
cout<<ptr[x1][j]<<" ";
cout<<endl;
}
else
cout<<"Max massiv = "<<x-1; //контролm выхода за пределы массива
getch();
}
//-------------------------------------------------------------
void Massivs::VuvodElem(int x1,int y1){
cout<<"Vvedite nomer massiva: ";
cin>>x1;
cout<<"Vvedite nomer elementa massiva: ";
cin>>y1;
if(x1<x && y1<y)
cout<<"Element= "<<ptr[x1][y1]<<endl<<"Massive ";
else
cout<<"Net takogo elementa"<<endl;
//for(int j=0;j<y;j++)
//cout<<ptr[x1][j];
getch();
}

//Главная функция
int main(int argc, char* argv[])
{
Massivs pt;
argc=0;
pt.x=0;pt.y=0;
do{
clrscr();
//вывод меню
cout<<"1- Size massivs and vvod\n2- Vuvod all massivs\n";
cout<<"3- Vuvod massiv\n4- Vuvod element massiv\n";
cout<<"5 - Exit\n";
cin>>argc;//выбор опции меню
//запуск функции класса
switch(argc){
case 1:
pt.Vvod();
break;
case 2:
pt.Vuvod(pt.x,pt.y);
break;
case 3:
pt.VuvodMassiv(0);
break;
case 4:
pt.VuvodElem(0,0);
break;
}
}while(argc!=5);
return 0;
}
//---------------------------------------------
1mposs1ble вне форума Ответить с цитированием
Старый 13.04.2010, 21:50   #2
Гром
Старожил
 
Аватар для Гром
 
Регистрация: 21.03.2009
Сообщений: 2,193
По умолчанию

Насколько я понял, у вас тут двумерные массивы в классе. Для одномерного массива должно быть что-то вроде:
Код:
class Array
{
public:
Array(int size);
Array(int size, int minIndex, int maxIndex);
Array operator*(double a);
//void Mult(double a); //Альтернатива на случай, если вам не нужно перегружать операторы.
//...
private:
double* arr;
int Size;
int MinIndex, MaxIndex;
};

Array Array::operator*(double a)
{
for (int i = 0; i < Size; i++)
 arr[i]*=a;
return *this;
}

void Array::Mult(double a)
Array Array::operator*(double a)
{
for (int i = 0; i < Size; i++)
 arr[i]*=a;
}
Остальные операции - по аналогии.
И используйте тег CODE при оформлении постов.
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта
Тема на форуме, посвященная ему же
Гром вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Класс Chartvit Visual C++ 2 05.01.2011 22:20
класс массивов 1mposs1ble Общие вопросы C/C++ 0 04.04.2010 23:53
КЛАСС 4ika Общие вопросы C/C++ 1 16.03.2010 21:32
Класс Юлёк Фриланс 6 15.06.2008 15:00