Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Сдвигается циклически вправо на 1 позицию, в противном случае.




 

//arb2015_mas_bool

#include<iostream>

#include<fstream>

#include<cmath>

using namespace std;

////////////////////////////////////

void create(ifstream &f,int** x, int n)

{

int i,j;

for(i=0;i<n;i++)

for(j=0;j<n;j++)

f>>x[i][j];

 

}

///////////////////////////

void show(ofstream &f,int** x, int n)

{

int i,j;

for(i=0;i<n;i++)

{

for(j=0;j<n;j++)

f<<x[i][j]<<' ';

f<<endl;

}

 

}

///////////////////////////

int sum_cifr(int x)

{

int s=0;

while(x>0)

{

s=s+x%10;

x=x/10;

}

return s;

 

}

/////////////////////////////

int sum_mult(int** x, int n)

{

int i,j;

int s=0;

int p;

for(i=0;i<n;i++)

{

p=1;

for(j=0;j<n;j++)

p=p*x[i][j];

s=s+p;

}

return s;

}

/////////////////////////////

bool prime(int x)

{

int i;

if (x<=1) return false;

if(x==2)return true;

bool p=true;

for(i=2;i<=sqrt(x) && p;i++)

if (x%i==0)p=false;

return p;

}

/////////////////////////////

bool f1(int**x, int n)

{

return prime(sum_mult(x,n));

}

////////////////////////////

bool f2(int*x, int n)

{

int j;

bool p=false;

for(j=0;j<n &&!p;j++)

if (prime(sum_cifr(x[j]))) p=true;

return p;

}

////////////////////////////

void shift_left(int* x,int n)

{

int r,i;

r=x[0];

for(i=0;i<n-1;i++)

x[i]=x[i+1];

x[n-1]=r;

}

////////////////////////////

void shift_right(int* x,int n)

{

int r,i;

r=x[n-1];

for(i=n-1;i>0;i--)

x[i]=x[i-1];

x[0]=r;

}

////////////////////////////

void op1(int** x,int n)

{

int i,j;

for(i=0;i<n-1;i++)

for(j=i+1;j<n;j++)

{

int r=x[i][j];

x[i][j]=x[j][i];

x[j][i]=r;

 

}

}

///////////////////////////////

void op2(int** x,int n)

{

int i;

for(i=0;i<n;i++)

if (f2(x[i],n)) shift_left(x[i],n);

else shift_right(x[i],n);

}

////////////////////////////////

void main()

{

int n,i;

int** a;

ifstream in("arb.txt");

ofstream out("out.txt");

if(!in)

{

cout<<"can't open file!"<<endl;

exit(-1);

}

cout<<"enter size of array n=";

cin>>n;

a=new int*[n];

for(i=0;i<n;i++)

a[i]=new int[n];

 

create(in,a,n);

out<<"array a:"<<endl;

show(out,a,n);

 

 

if(f1(a,n))op1(a,n);else op2(a,n);

out<<" new array a:"<<endl;

show(out,a,n);

in.close();

out.close();

for(i=0;i<n;i++)

delete [] a[i];

delete []a;

 

}

 

Файл arb.txt

1 22 33

4 5 6

7 8 9

 

Файл out.txt

array a:

1 22 33

4 5 6

7 8 9

new array a:

33 1 22

5 6 4

8 9 7

 

 

1.8 Преобразование матрицы.

По заданной матрице А (размерности n ´ n) вычислить новую матрицу X:

где Е 1 и Е 2 - заданные преобразования матрицы А. Входными данными программы являются: число n и элементы матрицы А; выходными - элементы матрицы X.

В программе предусмотреть:

- процедуру вычисления матрицы Е 1(А) с формальными параметрами: размерность матрицы m, массивы А и В (исходная матрица и вычисляемая);

- процедуру-функцию булевского типа вычисления значения предиката с формальными параметрами: размерность матрицы и массив ее элементов.

Исходные данные

I. Две различные операции Е 1 и Е 2 над вещественными матрицами из следующего списка:

б) умножение на 3 всех элементов тех и только тех строк, в которых диагональный элемент больше 1;

е) преобразование в симметричную с сохранением элементов, находящихся справа от главной диагонали;

III. Предикат P (A) на вещественных матрицах:

а) все определители второго порядка положительны (т.е.

;

IV. Числовые данные. Размерность матрицы n = 5, 6, 7 или 8, а элементы матрицы выбираются произвольно.

 

//arb2014_semestr_task_array

#include<iostream>

#include<fstream>

#include<iomanip>

using namespace std;

 

void create(ifstream &f, int** x, int n)

{

int i,j;

for(i=0;i<n;i++)

for(j=0;j<n;j++)

f>>x[i][j];

 

}

////////////////////////////////

void show(ofstream &f, int** x, int n)

{

int i,j;

for(i=0;i<n;i++)

{

for(j=0;j<n;j++)

f<<setw(5)<<x[i][j];

f<<endl;

}

f<<endl;

}

////////////////////////////////

void E1(int** x, int** y, int n)

{

int i,j;

for(i=0;i<n;i++)

{

if (x[i][i]>1)

for(j=0;j<n;j++) y[i][j]=x[i][j]*3;

else

for(j=0;j<n;j++) y[i][j]=x[i][j];

}

}

//////////////////////////////////

void E2(int** x, int** y, int n)

{

int i,j;

for(i=0;i<n;i++)

for(j=0;j<n;j++)

if (i>=j)

{

y[i][j]=x[i][j];

y[j][i]=y[i][j];

}

}

///////////////////////////////

bool AA(int** x, int n)

{

bool p=true;

int i,j;

for(i=0;i<n-1 && p;i++)

for(j=0;j<n-1 && p;j++)

if (x[i][j]*x[i+1][j+1] - x[i+1][j]*x[i][j+1]<=0) p=false;

return p;

}

//////////////////////////////////

void main()

{

ifstream in("arb.txt");

ofstream out("out.txt");

int** a,**b;

int n,i;

cout<<"enter size of array n=";

cin>>n;

a=new int* [n];

for(i=0;i<n;i++)

a[i]=new int[n];

 

b=new int* [n];

for(i=0;i<n;i++)

b[i]=new int[n];

create(in,a,n);

in.close();

out<<"array a:"<<endl;

show(out,a,n);

 

if(AA(a,n)) E1(a,b,n); else E2(a,b,n);

out<<"array b:"<<endl;

show(out,b,n);

out.close();

}

 

Файл “arb.txt”

3 2 1

3 3 2

2 3 3

 

Файл “out.txt”

array a:

3 2 1

3 3 2

2 3 3

 

array b:

9 6 3

9 9 6

6 9 9

 

 

 

Лекция

Новые функции

 

int** create(ifstream &f, int n)

int** add(int** x, int** y, int n)

int** subtr (int** x, int**y, int n)

int** mult (int** x, int**y, int n)





Поделиться с друзьями:


Дата добавления: 2016-12-06; Мы поможем в написании ваших работ!; просмотров: 522 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Бутерброд по-студенчески - кусок черного хлеба, а на него кусок белого. © Неизвестно
==> читать все изречения...

2464 - | 2389 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.012 с.