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

Void main()

{

setlocale(LC_ALL,"Russian");

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

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

int **a=new int*[n];//объявление массива

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

a[i]= new int[n];

int max[n]={0,0,0,0};//массив для максимальных в строке

int a1;//вспом. переменная для перестановки

int b[n];//массивы индексов

int c[n];

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

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

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

*(*(a+i)+j)=rand()%80;

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)>max[i]){

max[i]=*(*(a+i)+j);

b[i]=i;

c[i]=j;

}

cout<<endl;

for (int i=0;i<n;i++){//перестановки

a1=a[i][i];

a[i][i]=a[b[i]][c[i]];

a[b[i]][c[i]]=a1;

}

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

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

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

cout<<*(*(a+i)+j)<<"\t";

cout<<endl;

}

delete []a;

}

Вариант №8

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

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

#include <iostream>

#include <locale>

using namespace std;

#include <time.h>

Void main()

{

setlocale(LC_ALL,"Russian");

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

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

int **a=new int*[n];//объявление массива

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

a[i]= new int[n];

int b=0;

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

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

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

*(*(a+i)+j)=rand()%10;

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)>n){

b++;

}

if (b>0)

cout<<endl<<"Не латинский квадрат"<<endl<<endl;

else

cout<<endl<<"Латинский квадрат"<<endl<<endl;

delete []a;

}

Вариант №9

Найти сумму наименьших значений элементов в столбцах действительной матрицы заданного размера.

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

#include <iostream>

#include <locale>

using namespace std;

#include <time.h>

Void main()

{

setlocale(LC_ALL,"Russian");

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

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

int **a=new int*[n];//объявление массива

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

a[i]= new int[n];

int b=100;//порядок чисел матрицы

int min[n]={b,b,b,b};//массив минимальных

int sum=0;//сумма

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

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

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

*(*(a+i)+j)=rand()%b;

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[j])

min[j]=a[i][j];

for (int i=0;i<n;i++)//сумма

sum+=min[i];

cout<<endl<<"Сумма наименьших значений в стобцах = ";//вывод

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

cout<<min[i]<<" + ";

cout<<min[n-1]<<" = "<<sum<<endl;

delete []a;

}

Вариант №10

В действительной матрице заданного размера произвести попарную перестановку строк, т.е. поменять местами 1 и 2 строки, 3 и 4 строки и т.д. Напечатать для сравнения обе матрицы.

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

#include <iostream>

#include <locale>

using namespace std;

#include <time.h>