66527

Итерационные алгоритмы

Лабораторная работа

Информатика, кибернетика и программирование

Дана целочисленная квадратная матрица N*N. Определить: Количество строк, содержащих только различные элементы. Матрицу N*N заполнить натуральными числами от 1 до N*N по спирали, начинающейся в верхнем левом углу и закрученной по часовой стрелке.

Русский

2014-08-22

61 KB

2 чел.

Санкт-Петербургский государственный политехнический университет

Институт информационных технологий и управления

Кафедра «Распределенных вычислений и компьютерных сетей»

ЛАБОРАТОРНАЯ РАБОТА № 3

Итерационные алгоритмы

по дисциплине «Основы программирования »

Выполнил

студент гр. 13507/1  С.С.Недобуга

Преподаватель       Т.Н.Самочадина

Содержание

  1.  Условие задачи
  2.  Спецификация программы(SRS)
  3.  Тест план с результатами выполнения тестов
  4.  Текст программы
  5.  Анализ полученных результатов

1)Условия задачи:

Дана целочисленная квадратная матрица N*N. Определить:

  1.  Количество строк, содержащих только различные элементы.
  2.  Матрицу N*N заполнить натуральными числами от 1 до N*N по спирали, начинающейся в верхнем левом углу и закрученной по часовой срелке.

2)Спецификация программы

  1.  Матрица должна быть задана корректно.
    1.  Если аргумент M не является числом – сообщение “ Incorrect  M ” .
    2.  Если аргумент M является числом < или = 1 – сообщение "M must be greater then 1"

3)Тест план с результатами выполнения тестов

№ Специф.

Вводимые значения M

Вывод

1.1

e

Incorrect M

1.2

0

M must be greater then 1

4)Текст программы

General.cpp

#include<iostream>

#include<fstream>

#include<iomanip>

#include"glob.h"

using namespace std;

int razl(const int P[N][N]);

void snake(int **m2, int a);

int main (int argc, char **argv)

{

 int Matrix[N][N];

 ifstream In("in.txt");

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

{

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

 {

  In>>Matrix[i][j];

 }

}

cout << "Lines with different elements: "<< razl(Matrix) << endl;

 int M;

 try

{

 cout << "Enter the number of rows and columns in: ";

 cin>>M;

 if(!cin) throw "Inccorect M";

 if(M<1) throw "M must be greater then 1";

}

 catch (const char *err)

{

 cerr<<err;

 return 1;

}

cout<<"Matrix filled like the snake:"<<endl;

 int **Matrix2 = new int *[M];

 for (int i = 0; i<M; i++) Matrix2[i] = new int [M];

snake(Matrix2,M);

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

{

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

 {

  cout<<setw(4)<<Matrix2[i][j];

 }

 cout<<endl;

}

 return 0;

}

Razl.cpp

#include"glob.h"

int razl(const int P[N][N])

{

 int Kol = 0;

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

{

 bool yes = false;

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

 {

  for(int k = 0; k<N; k++)

  {

   if((P[i][j]==P[i][k])&&(j!=k))yes=true;

  }

 }

 if (!yes) Kol+=1;

}

 return Kol;

}

In.txt

1 9 4 2 90

8 5 95 4 1

9 -1 3 5 8

0 0 5 1 3

9 4 5 12 8

Snake.cpp

void snake(int **m2, int a)

{

 int e=0;

 int i,j,k,t,f;

 int c=1;

 for(i=e;c<a*a+1;i++)

 {

  for(j=e;j<a-e;j++)

  {

   m2[i][j]=c;

   c++;

   if(j==a-e-1)break;

  }

  e++;

  for(k=e;k<a-e+1;k++)

  {

   m2[k][j]=c;

   c++;

   if(k==a-e)break;

  }

  for(t=a-e-1;t>e-2;t--)

  {

   m2[k][t]=c;

   c++;

   if(t==e-1)break;

  }

  for(f=a-e-1;f>e-1;f--)

  {

   m2[f][t]=c;

   c++;

  }

 }

}

Glob.h

const int N = 5;

5)Анализ полученных результатов

text

M

1

2

1 9 4 2 90

8 5 95 4 1

9 -1 3 5 8

0 0 5 1 3

9 4 5 12 8

5

Lines with different elements: 4

1   2   3   4  5

16 17 18 19 6

15 24 25 20 7

14 23 22 21 8

13 12 11 10 9

1 9 4 2 90

8 5 95 4 1

9 -1 3 5 8

0 0 5 1 3

9 4 5 12 8

6 

Lines with different elements: 4

 1    2    3    4    5    6

20  21  22  23  24   7

19  32  33  34  25   8

18  31  36  35  26   9

17  30  29  28  27  10

16  15  14  13  12  11

Исходя из полученных данных можно сказать, что программа работает верно,

поставленная задача решена.


 

А также другие работы, которые могут Вас заинтересовать

11096. Организация воинского учета призывников, прохождение воинской службы по призыву и по контракту. Альтернативная служба 47.46 KB
  Организация воинского учета призывников прохождение воинской службы по призыву и по контракту. Альтернативная служба Воинский учет Воинский учет – это составная часть воинской обязанности граждан. Воинскому учету подлежат все граждане мужского пола достигшие пр
11097. Общевоинские уставы ВС РФ, закон воинской службы. Воинские звания военнослужащих воинских частей 19.21 KB
  Общевоинские уставы ВС РФ закон воинской службы. Воинские звания военнослужащих воинских частей Общевоинские уставы ВС РФ Дисциплинарный устав Вооруженных Сил Российской Федерации Настоящий Устав определяет сущность воинской дисциплины обязанности военнослу
11098. Правовые основы материального обеспечения военнослужащих воинских частей 108.63 KB
  Правовые основы материального обеспечения военнослужащих воинских частей В соответствии с Конституцией Российской Федерации в целях обеспечения социальной защиты военнослужащих в России разработаны и приняты нормативноправовые акты об их социальном обеспечении...
11099. Боевые традиции ВС РФ. Патриотизм и верность воинскому долгу, основные качества защитника отечества 27.88 KB
  Боевые традиции ВС РФ. Патриотизм и верность воинскому долгу основные качества защитника отечества Вступление Боевые традиции российских Вооруженных сил – это исторически сложившиеся в армии и на флоте и передающиеся из поколения в поколение правила обычаи и нор
11100. Символы воинской чести. Ритуалы ВС РФ 28.27 KB
  Символы воинской чести. Ритуалы ВС РФ. Символы воинской чести России В армейской среде всегда с особым вниманием относились к военной символике которая проявляясь в элементах обмундирования знаменах наградах знаках отличия и различия отражала самобытность наци...
11101. Вредные привычки и их влияние на здоровье (алкоголизм, табакокурение, наркомания и токсикомания). Профилактика злоупотребления психоактивными веществами 23.11 KB
  Вредные привычки и их влияние на здоровье алкоголизм табакокурение наркомания и токсикомания. Профилактика злоупотребления психоактивными веществами Влияние вредных привычек на здоровье человека. Курение. Вот несколько факторов которые свидетельствуют о то...
11102. Учение о повязках. Виды повязок и правила их наложения. Методы остановки кровотечения. ПМП при травмах, ранениях 122.7 KB
  Учение о повязках. Виды повязок и правила их наложения. Методы остановки кровотечения. ПМП при травмах ранениях Десмургия греч. desmos связь повязка ergon дело учение о повязках их правильном применении и наложении при различных повреждениях и заболеваниях. В связи с э
11103. ПМП при отравлениях. ПМП при отморожении тепловом и солнечных ударах, при поражении электрическим током и при ожогах 41.25 KB
  ПМП при отравлениях. ПМП при отморожении тепловом и солнечных ударах при поражении электрическим током и при ожогах ПЕРВАЯ ПОМОЩЬ ПРИ ОТРАВЛЕНИЯХ. Отравление это патологическое состояние которое возникает при воздействии ядов и токсинов на организм. Среди причин о...
11104. ПМП при ушибах и переломах. ПМП при острой сердечной недостаточности и инсульте. ПМП при массовых поражениях 114.11 KB
  ПМП при ушибах и переломах. ПМП при острой сердечной недостаточности и инсульте. ПМП при массовых поражениях Первая помощь при ушибах растяжениях и переломах. Ушиб – закрытое повреждение тканей и органов без существенного нарушения их структуры. Обычно возникает в ре...