Расчет квадратной матрицы на с++
Расчётно – графическая работа
по дисциплине
«Алгоритмические языки и программирование»
№1
Содержание:
- Постановка задачи ………………………………………. 3
- Алгоритм программы …………………………………… 4
- Функции программы ……………………………………. 9
- Реализация программ ………………………………….. 10
- Листинги программ …………………………………….. 12
- Список используемой литературы ……………………. 16
1 Постановка задачи
Задание 1. Вариант 8.
Осуществить циклический сдвиг элементов квадратной матрицы размерности mxm на n элементов вправо. n может быть больше m (сформировать статический массив, определить значения его элементов и выполнить задачу).
Задание 2. Вариант 6.
Дана
целочисленная прямоугольная
2
Алгоритмы программ
Схема
2.1 Блок-схема задачи 1
Схема
2.3 Блок-схема задачи 2
Схема 2.4 Блок-схема задачи 2(продолжение)
Схема
2.5 Блок-схема задачи 2(продолжение)
3 Функции программы
В
задании 1 пользовательские функции отсутствуют.
Использованы функции: RAND для присвоения
каждому элементу массива случайного
значения. Для возможности использования
данной функции к программе присоединена
стандартная библиотека <stdlib.h>,
для возможности вывода данных используется
функция cout, для её использования к
программе присоединена стандартная библиотека
<iostream>
В
задании 2 пользовательские функции
также отсутствуют. Аналогично использование
функции RAND, ввод и вывод данных
осуществляется с помощью функций
cin и cout соответственно. New
используется для создания динамического
массива.
4 Памятка пользователя
Задание 1.
Выполнение
данной программы происходит сразу
же после её запуска, а именно: инициализация
всех переменных, заполнение массива случайными
числами, вывод его на экран, осуществление
циклического сдвига элементов квадратной
матрицы размерности mxm на n элементов
вправо. Все эти действия последовательны.
После их завершения пользователь только
может просмотреть результаты и закрыть
программу, ничего более. Интерфейс программы
представлен на рисунке 1.
Рис.
1 Результат работы программы, составленной
по задаче 1
Задание 2.
После запуска данной программы выводится сообщение с просьбой ввести количество строк и столбцов в массиве. Пользователь вводит нужное ему целое число.
Программа
получила все необходимые от пользователя
данные и дальнейшее её выполнение
от него не зависит. Идёт формирование
массива заданных размеров, его заполнение
и вывод на экран. После чего - выполнение
поставленной задачи по заданному алгоритму
и вывод на экран результатов. Интерфейс
программы представлен на рисунке
2 .
Рис.
2 Результат работы программы составленной
по задаче 2
5 Листинги программ
Задание 1.
#include "stdafx.h"
#include <iostream>//Присоединение библиотеки для возможности использования функций ввода/вывода
#include <stdlib.h>//Присоединение библиотеки для возможности использования функции RAND
using namespace std;
void main()
{
//Инициализация переменных и ввод размера массива
const int m=5,n=2;//Размеры массива
int i,j,k,per1,per2;//
int mas[m][m];//Исходный массив
//Заполнение массива случайными числами и вывод на экран
cout<<"\t\tMASSIV:"<<
for (i=0;i<m;i++)//Циклы заполнения массива случайными числами
for (j=0;j<m;j++)
{
mas[i][j]=
if (j!=m-1)
cout<<
else
cout<<
}
//Сдвигаем элементы
k=0;
while (k<n)
{
for (i=0;i<m;i++)
{
for (j=0;j<m-1;j++)
{
if (j==0)//Проверка равенства на 0
{
}
if (j%2!=0)//Проверка на нечётность индекса столбца
{
}
if ((j%2==0) && (j!=0))//Проверка индекса столбца на чётность и неравенства нулю
{
}
if (j==(m-2))//Проверка на предпоследний индекс просматриваемого столбца
{
}
}
}
k++;
}
//Вывод на экран нового массива
cout<<"\t\tNEW MASSIV:"<<endl;
for (i=0;i<m;i++)
for (j=0;j<m;j++)
{
if (j!=m-1)
cout<<
else
cout<<
}
}
Задание
2.
#include "stdafx.h"
#include <iostream>//Присоединение библиотеки для возможности использования функций ввода/вывода
#include <stdlib.h>//Присоединение библиотеки для возможности использования функции RAND
using namespace std;
void main()
{
//Инициализация переменных и ввод размера массива
int m,n;//Рабочие переменные
cout<<"\t\tVVEDITE KOL-VO STROK"<<"\n";
cin>>n;//Ввод количества строк
cout<<"\t\tVVEDITE KOL-VO STOLBCOV"<<"\n";
cin>>m;//Ввод количества столбцов
int **matr=new int *[n];//Инициализация и выделение памяти под строки массива указателей
int i,j;
for (i=0;i<n;i++)
matr[i]=new int [m];//Выделение памяти под элементы массива
cout<<"\t\t\tMASSIV-
for (i=0;i<n;i++)//Просмотр строк массива
for (j=0;j<m;j++)//Просмотр столбцов массива
{
*(*(matr+i)+
if (j==m-1)
cout<<
else
cout<<
}
int **temp=new int *[n];//Инициализация и выделение памяти под строки массива указателей
for (i=0;i<n;i++)//Просмотр строк
temp[i]=new int [m];
int k,sum,work;
for (i=0;i<n;i++)
for (j=0;j<m;j++)//Просмотр столбцов
{
sum=0;//
work=*(*(
for (k=0;k<m;k++)
{
if (*(*(matr+i)+k)==work)
if (k==m-1)
}
}
//Формирование массива tempstr
int *tempstr=new int [n];//Массив,каждый tempstr[i]-тый элемент которого соответствует максимальному элементу массива temp[i][j] в каждой i-той строке
for (i=0;i<n;i++)//Просмотр строк
{
work=*(*(temp+i)+
for (j=0;j<m;j++)//Просмотр столбцов
{
if (*(*(temp+i)+j)>work)
work=*
if (j==m-1)
*(
}
}
int min;
for (i=0;i<n;i++)
{
min=*(tempstr+i);
work=i;
for (k=i;k<n;k++)
{
if (*(tempstr+k)<min)
{
min=*(
work=
}
}
for(j=0;j<m;j++)
{
sum=*(*(
*(*(matr+i)+
*(*(matr+
}
sum=*(tempstr+i);
*(tempstr+i)=*(
*(tempstr+work)=
}
cout<<"\t\t\tNEW MASSIV-MATRIX"<<endl;
for (i=0;i<n;i++)
for (j=0;j<m;j++)
{
if (j==m-1)
cout<<
else
cout<<
}
for (j=0;j<n;j++)
{
sum=*(*(matr+0)+j)
for (i=0;i<m;i++)
{
if (*(*(matr+i)+j)<0)
sum=*(
if (i==n-1)
{
if (sum>=0)
{
}
}
}
}
for (i=0;i<n;i++)
delete temp[i];
delete temp;
delete tempstr;
}
6 Список используемой литературы
1) Конспект лекций;
2) Культин Н. Б. «С/С++ в задачах и примерах.» – СПб.:БХВ-Петербург, 2008. – 228 с.:ил.;
3) Б. Страуструп «Введение в язык С++»;
4) В. В.
Подбельский «Язык С++».