Расчет квадратной матрицы на с++

Автор: Пользователь скрыл имя, 17 Ноября 2011 в 00:38, курсовая работа

Описание работы

Задание 1.
Осуществить циклический сдвиг элементов квадратной матрицы размерности mxm на n элементов вправо. n может быть больше m (сформировать статический массив, определить значения его элементов и выполнить задачу).
Задание 2.
Дана целочисленная прямоугольная матрица размерности n на m. Упорядочить её строки по возрастанию количества одинаковых элементов в каждой строке, а также найти номер первого из столбцов, не содержащих ни одного отрицательного элемента (решить задачу, используя динамическое выделение памяти и обработку массива с применением указателей).

Содержание

Постановка задачи ………………………………………. 3
Алгоритм программы …………………………………… 4
Функции программы ……………………………………. 9
Реализация программ ………………………………….. 10
Листинги программ …………………………………….. 12
Список используемой литературы ……………………. 16

Работа содержит 1 файл

РГР_алгоритмы.doc

— 414.50 Кб (Скачать)
 
 
 
 
 
 
 
 
 
 
 
 
 

Расчётно  – графическая работа

по дисциплине

«Алгоритмические языки и программирование»

№1 
 
 
 
 
 
 
 
 
 
 
 

Содержание:

    1. Постановка задачи ………………………………………. 3
    2. Алгоритм программы …………………………………… 4
    3. Функции программы ……………………………………. 9
    4. Реализация программ ………………………………….. 10
    5. Листинги программ …………………………………….. 12
    6. Список используемой литературы ……………………. 16
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

     1 Постановка задачи

     Задание 1. Вариант 8.

     Осуществить циклический сдвиг элементов  квадратной матрицы размерности  mxm на n элементов вправо. n может быть больше m (сформировать статический массив, определить значения его элементов и выполнить задачу).

          Задание 2. Вариант 6.

     Дана  целочисленная прямоугольная матрица  размерности n на m. Упорядочить её строки по возрастанию количества одинаковых элементов в каждой строке, а также найти номер первого из столбцов, не содержащих ни одного отрицательного элемента (решить задачу, используя динамическое выделение памяти и обработку массива с применением указателей). 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

      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:"<<endl;

      for (i=0;i<m;i++)//Циклы заполнения массива случайными числами

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

            {

                  mas[i][j]=rand()%10-5;//Элемент массива получает случайное число

                  if (j!=m-1)

                        cout<<mas[i][j]<<"\t";//Вывод на экран

                  else

                        cout<<mas[i][j]<<endl;//Вывод на экран

            }

      //Сдвигаем элементы

      k=0;

      while (k<n)

      {

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

            {

                  for (j=0;j<m-1;j++)

                  {

                        if (j==0)//Проверка равенства на 0

                        {

                              per1=mas[i][j];

                              per2=mas[i][j+1];

                              mas[i][j+1]=per1;

                        }

                        if (j%2!=0)//Проверка на нечётность индекса столбца

                        {

                              per1=mas[i][j+1];

                              mas[i][j+1]=per2;

                        }

                        if ((j%2==0) && (j!=0))//Проверка индекса столбца на чётность и неравенства нулю

                        {

                              per2=mas[i][j+1];

                              mas[i][j+1]=per1;

                        }

                        if (j==(m-2))//Проверка на предпоследний индекс просматриваемого столбца

                        {

                              if (m%2==0)//Проверка на чётность размерности массива

                                    mas[i][0]=per2;//Копирование в mas[i][0] значения последнего столбца из per2 в случае, если m-чётное

                              else

                                    mas[i][0]=per1;//Копирование в mas[i][0] значения последнего столбца из per1 в случае, если m-нечётное

                              j=m-1;

                        }

                  }

            }

            k++;

      }

      //Вывод  на экран нового массива

      cout<<"\t\tNEW MASSIV:"<<endl;

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

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

            {

                  if (j!=m-1)

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

                  else

                        cout<<mas[i][j]<<endl;

            }

} 
 
 
 

     Задание 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";

Информация о работе Расчет квадратной матрицы на с++