Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчёт.docx
Скачиваний:
24
Добавлен:
09.06.2015
Размер:
1.81 Mб
Скачать

Задача 5.2

Дана матрица размера 5х10. Вывести номер её последнего столбца, содержащего только положительные элементы. Если таких столбцов нет, то вывести 0.

начало

  1. Блок-схема.

a[i][j]

i, j, f

p=-1

j=0; j<n; j++

+ -

f=false

i=0; i<m; i++

+ -

a[i][j]>0

+ -

f=true

f=false

+ -

1

2

3

4

1

2

p=j

3

4

p=-1

+ -

Номер столбца

0

конец

  1. Программный код.

#include "iostream"

#include <time.h>

#include "iomanip"

using namespace std;

int main()

{setlocale (LC_ALL, "Russian");

srand(time(NULL));

const int m=5, n=10;

int a[m][n];

int i,j;

int f;//Объявление переменной, которая в ходе задачи будет принимать занчения true или false

int p=-1;

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

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

a[i][j]=-10+rand()%90;//Рандом

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

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

cout<<a[i][j]<<" ";

cout<<endl;}

//Вывод массива

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

{f=false;

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

if(a[i][j]<=0) f=true;

if(f=false) p=j;}

if(p!=-1) cout<<"Номер столбца - "<<p;

else cout<<"0 ";

}

  1. Скриншот.

Задача 5.3

начало

Дана матрица размера 5х10. Поменять местами столбец с номером 1 и первый из столбцов, содержащих только положительные элементы.

  1. Блок-схема.

i, j, s, q, k, z=0

a[m][n]

j=0; j<n; j++

s=1

i=0; i<m; i++

a[i][j]<0

+ -

s=0

s!=0

+ -

k=j

i=0; i<m; i++

a[i][j]

конец

  1. Программный код.

#include "iostream"

#include <time.h>

#include "iomanip"

using namespace std;

void main()

{

setlocale (LC_ALL, "Russian");

srand(time(NULL));

int const m=5, n=10;

int i,j,s,q,k,z=0;

int a[m][n];

cout<<"Исходный массив:"<<endl;

for(i=0;i<m;i++)//Ввод массива

{

for(j=0;j<n;j++){//рандомный ввод чисел в массиве

a[i][j]=-20+rand()%90; }}

for(i=0;i<m;i++)//Вывод массива

{

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

cout<<setw(3)<<a[i][j]<<" ";

cout<<endl;

} cout<<endl;

for(j=1;j<n;j++)//Решение

{int s=1;

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

if(a[i][j]<0) {s=0; break;}

if(s!=0) {z=z++; k=j;}

if(z==1) break;}

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

{q=a[i][0];

a[i][0]=a[i][k];

a[i][k]=q;}

cout<<"Первый столбец заменил 1 из столбцов, содержащих только положительные элементы:"<<endl;

for(i=0;i<m;i++)//Вывод массива

{

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

cout<<setw(3)<<a[i][j]<<" ";

cout<<endl;

}

}

  1. Скриншот.

Задача 5.4

Дана матрица размера 5х10. Найти максимальный среди элементов столбцов, которые упорядочены либо по возрастанию, либо по убыванию. Если такие столбцы отсутствуют, то вывести 0.

начало

  1. Блок-схема.

a[m][n]

i, j, k=0, f=0, max

i=0; i<m; i++

j=0; j<n; j++

a[i][j]>a[i+1][j]

k++

f++

(k==4)

a[0][j]>a[4][j]

a[0][j]

a[4][j]

(f==4)

a[0][j]<a[4][j]

a[4][j]

a[0][j]

k=0

конец

  1. Программный код.

#include "iostream"

#include <time.h>

#include "iomanip"

using namespace std;

int main()

{setlocale (LC_ALL, "Russian");

srand(time(NULL));

const int m=5, n=10;

int a[m][n];

int i,j;

int k=0;

int max;

int f=0;

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

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

a[i][j]=10+rand()%90;//Рандомный ввод чисел массива

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

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

cout<<a[i][j]<<" ";

cout<<endl;}//Вывод матрицы на экран

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

for(i=0;i<m-1;i++){

if(a[i][j]>a[i+1][j]) k++; else f++;}

cout<<k<<endl;

if(k==4){if(a[0][j]>a[4][j]) cout<<"max="<<a[0][j]; else cout<<"max="<<a[4][j];}

if(f==4){if(a[0][j]<a[4][j]) cout<<"max="<<a[0][j]; else cout<<"max="<<a[4][j];}

k=0;

}

}

  1. Скриншот.