Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Козырева И., лабораторные работы.doc
Скачиваний:
13
Добавлен:
16.04.2019
Размер:
2.95 Mб
Скачать

Void main()

{

setlocale(LC_ALL,"Russian");

srand((unsigned)time(NULL));//использование времени

const int n=3;//объявление переменных и констант

int a[n][n];//основной массив

int min=50;

int a1;

int b;

int c;

int d;

int max=-50;

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

for (int i=0;i<n;i++)//заполнение массива

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

a[i][j]=rand()%100-50;

for (int i=0;i<n;i++){//вывод исходного массива

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

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

cout<<endl;

}

for (int i=0;i<n;i++)//поиск минимального

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

if (a[i][j]<min){

min=a[i][j];

a1=i;

b=j;

}

for (int i=0;i<n;i++)//поиск максимального

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

if (a[i][j]>max){

max=a[i][j];

c=i;

d=j;

}

cout<<endl;

a[a1][b]=-100;//замена

a[c][d]=100;

cout<<"Измененный массив: "<<endl<<endl;

for (int i=0;i<n;i++){//вывод измененного массива

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

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

cout<<endl;

}

cout<<endl;

cout<<"Минимальный элемент "<<a1+1<<" "<<b+1<<" = "<<min<<endl;//вывод

cout<<"Максимальный элемент "<<c+1<<" "<<d+1<<" = "<<max<<endl;

}

Вариант №3

Определить, есть ли в матрице заданного размера "седловые" точки.

#include "stdafx.h"//директивы

#include <iostream>

#include <locale>

using namespace std;

Void main()

{

setlocale(LC_ALL,"Russian");

const int n=3;//объявление переменных и констант

int a[n][n]={5,10,15,3,4,12,4,6,8};//основной массив

int min=50;//переменная для поиска минимальных значений

int max=0;//переменная для поиска макс. элементов

int a1=0;//доп. счетчик

int mj;//временные переменные

int m;

int b;

int c;

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

for (int i=0;i<n;i++){//вывод исходного массива

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

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

cout<<endl;

}

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

if (a[a1][j]<min){//поиск минимального в строке

min=a[a1][j];

m=a1;

mj=j;

}

if (a[j][a1]>max){//поиск максимального в столбце

max=a[j][a1];

b=j;

c=a1;

}

if (m==b&&mj==c){//проверка равны ли индексы

cout<<endl;

cout<<"Седловая точка - элемент "<<m+1<<" "<<mj+1<<" = "<<min<<endl;//вывод

}

a1++;//увеличение на 1 строки и столбца

}

}

Вариант №4

Дана целочисленная матрица заданного размера. Определить, является ли она "магическим" квадратом.

#include "stdafx.h"//директивы

#include <iostream>

#include <locale>

using namespace std;

Void main()

{

setlocale(LC_ALL,"Russian");

const int n=3;//объявление переменных и констант

int a[n][n]={2,7,6,9,5,1,4,3,8};//основной массив

int sum=0;//сумма по диагонали

int sum1[n]={0,0,0};//массив для суммы строк и столбцов

int b=0;//счетчик совпадений

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

for (int i=0;i<n;i++){//вывод исходного массива

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

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

cout<<endl;

}

for (int i=0;i<n;i++)//сумма по диагонали

sum+=a[i][i];

for (int i=0; i<n;i++){//сумма по строкам

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

sum1[j]+=a[j][i];

}

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

if(sum1[i]==sum)

b++;//подсчет совпадений

sum1[i]=0;//обнуление массива суммы

}

for (int i=0; i<n;i++){//сумма по столбцам

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

sum1[i]+=a[i][j];

}

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

if(sum1[i]==sum)

b++;//подсчет совпадений

}

cout<<endl;

if (b==2*n)//проверка и вывод

cout<<"Магический квадрат! Сумма элементов в каждой строке, столбце и по диагонали равна "<<sum<<endl<<endl;

else cout<<"Не магический квадрат!"<<endl<<endl;

}

Вариант №5

Переверните исходную матрицу n×n относительно ее главной диагонали. Исходную и полученную матрицы выведите на экран.

#include "stdafx.h"//директивы

#include <iostream>

#include <locale>

using namespace std;