Розробити підпрограми роботи з деком. Дек організований на масиві із циклічним заповненням та із зсувом. Операції виконуються з обох кінців дека. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Розробити підпрограми роботи з деком. Дек організований на масиві із циклічним заповненням та із зсувом. Операції виконуються з обох кінців дека.



Текст програми

#include <iostream.h>

#include <conio.h>

#define n 10

Class Dec// оглошуємо клас

{

public:

void revers(int dec[n]){

char v;

do {// заповнення дека

for(int i=0;i<n;i++) dec[i]=dec[i+1];

cin>>dec[n];

cout<<"Continue(y/n)"; cin>>v;

clrscr();

}

while(v!='n');

}

void not_revers(int dec[n]){

char v;

do {

for(int i=n;i>=0;i--) dec[i]=dec[i-1];

cin>>dec[0];

cout<<"Continue(y/n)"; cin>>v;

clrscr();

}

while(v!='n');

}

void Pocaz_Dec(int dec[n]){

for(int i=0;i<n;i++) cout<<dec[i]<<"\t";

getch();

}

};

void main(){

Dec asdf;

int dec[n];

int v;

for(int i=0;i<n;i++) dec[i]=0;

start:clrscr();

cout<<"1-S konca\n";

cout<<"2-S nachala\n";

cout<<"3-Pokazat` Dec\n";

cout<<"4-Exit\n";

cout<<"Sdelaite vibor-> "; cin>>v;

switch(v){

case 1:asdf.revers(dec); goto start;

case 2:asdf.not_revers(dec); goto start;

case 3:asdf.Pocaz_Dec(dec); goto start;

}

getch();

}

Результат роботи програми:

Рисунок 1.2


Індивідуальне завдання 3

Створити клас матриця. Даний клас містить покажчик на int,

Розмір рядків і стовпців і стан помилки. Визначити конструктор без

Параметрів, конструктор з одним параметром і конструктор з двома

Параметрами, деструктор. Визначити методи доступу: повертати значення

Елемента (i, j) і адресу цього елемента. Визначити функцію друку. визначити

Функції додавання і віднімання (матриці з матрицею), множення матриці на

Матрицю. Визначити множення матриці на число. Перевірити роботу цього

Класу. У разі нестачі пам'яті, невідповідності розмірностей, виходу за

Межі встановлювати код помилки.

Текст програми

#include "iostream.h"

using namespace std;

class Matrix {

public:

int **A; //вказівник

int N;

Matrix () {}

Matrix(int N,int M) // заповнюємо матрицю

{ A= new int*[N];

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

A[i] = new int[N];

for (int i = 0; i < N; i++) {

for (int j = 0; j < M; j++) {

A[i][j]=rand()%10; }}

}// виконання операцій

void Show(Matrix &obj,int N,int M){

int i,j;

for(i=0; i<N; i++){

for(j=0; j<M; j++){

cout<<" "<<A[i][j];}

cout <<endl; }

cout <<endl;

}

Matrix Matrix::Add(Matrix obj,int N,int M){

Matrix result(N,M);

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

for(int j=0;j<M;j++) { result.A[i][j]=0;

result.A[i][j]+=A[i][j] + obj.A[i][j];}

return result;

}

Matrix Matrix::Sub(Matrix obj,int N,int M){

Matrix result(N,M);

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

for(int j=0;j<M;j++) { result.A[i][j]=0;

result.A[i][j]+=A[i][j] - obj.A[i][j];}

return result;

}

Matrix Matrix::Mul_nf(int N,int M,int num){

Matrix result(N,M);

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

for(int j=0;j<M;j++) { result.A[i][j]=0;

result.A[i][j]+=A[i][j]*num;}

return result;

}

Matrix Matrix::Mul_ns(Matrix obj,int N,int M,int num){

Matrix result(N,M);

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

for(int j=0;j<M;j++) { result.A[i][j]=0;

result.A[i][j]+=obj.A[i][j]*num;}

return result;

}

Matrix Matrix::Mul(Matrix obj,int N,int M){ // моження матриці на матрицю

Matrix result(N,M);

for(int k=0; k<N;k++)

for(int i=0;i<M;i++) { result.A[k][i]=0;

for(int j=0;j<M;j++)

result.A[k][i]+=A[k][j] * obj.A[j][i];}

return result;

}

int accept(int i,int j) {return A[i][j]; }

int* accept_ad(int i,int j) {return &A[i][j]; }

};

void main(void) // тіло програми

{

int n_,m_,num,n,m;

char cs;

srand(time(0));

Matrix result; // виводимо результат на екран

system("cls");

cout<<"Size:"<<endl<<"Rows: ";

cin>>n;

cout<<"Cols: ";

cin>>m;

system("cls");

Matrix first(n,m); // перша матриця

Matrix second(n,m); // друга матриця

do { system("cls");// очистка вікна

first.Show(first,n,m);

second.Show(second,n,m);

cout << "1.Add.\n"

<< "2.Sub.\n"

<< "3.Mult.\n"

<< "4.Mult on number(first matrix).\n"

<< "5.Mult on number(second matrix).\n"

<< "6.Accept to element(first matrix).\n"

<< "7.Accept to element(second matrix).\n"

<< "0.Exit.\n";

cout<<endl<<"Enter: ";cin>>cs;

cout<<endl<<"Result:"<<endl;

switch(cs)

{

case'1':{ result=first.Add(second,n,m); result.Show(result,n,m);break;}

case'2':{ result=first.Sub(second,n,m); result.Show(result,n,m);break;}

case'3':{ result=first.Mul(second,n,m); result.Show(result,n,m);;break;}

case'4':{ cout<<"Enter number: "; cin>>num; result=first.Mul_nf(n,m,num); result.Show(result,n,m);;break;}

case'5':{ cout<<"Enter number: "; cin>>num; result=first.Mul_ns(second,n,m,num); result.Show(result,n,m);;break;}

case'6':{ cout<<"Row: "; cin>>n_; cout<<"Col: "; cin>>m_; cout<<"A[Row][Col] = "<<first.accept(n_,m_)<<endl;

cout<<"&A[Row][Col] = "<<first.accept_ad(n_,m_)<<endl; break;}

case'7':{ cout<<"Row: "; cin>>n_; cout<<"Col: "; cin>>m_; cout<<"A[Row][Col] = "<<second.accept(n_,m_)<<endl;

cout<<"&A[Row][Col] = "<<second.accept_ad(n_,m_)<<endl; break;}

default:exit(1);

}

system("PAUSE");} while(1);

}

Результат роботи програми:

Рисунок 1.3


 

Індивідуальне завдання 4

Створити клас матриця. Даний клас містить покажчик на int,

Розмір рядків і стовпців і стан помилки. Визначити конструктор без

Параметрів, конструктор з одним параметром і конструктор з двома



Поделиться:


Последнее изменение этой страницы: 2016-09-13; просмотров: 221; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 52.15.59.163 (0.018 с.)