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

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

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


 

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

25623. Внезародышевые органы 43.5 KB
  Амнион временный орган обеспечивающий водную среду для развития зародыша. В эмбриогенезе человека он появляется на второй стадии гаструляции сначала как небольшой пузырек дном которого является первичная эктодерма эпибласт зародыша. Желточный мешок наиболее древний в эволюции внезародышевый орган возникший как орган депонирующий питательные вещества желток необходимые для развития зародыша.
25624. Зрительная сенсорная система. Орган зрения 61 KB
  В передней части глаза склера переходит в покрытую многослойным плоским эпителием прозрачную роговицу. Наружная фиброзная оболочка глазного яблока к которой прикрепляются наружные мышцы глаза обеспечивает защитную функцию. Внутренняя чувствительная оболочка глаза сетчатка сенсорная рецепторная часть зрительного анализатора в которой происходят под воздействием света фотохимические превращения зрительных пигментов фототрансдукция изменение биоэлектрической активности нейронов и передача информации о внешнем мире в подкорковые...
25626. Гистогенез и органогенез на 2 и 3 неделе развития 26.5 KB
  Коммутирование ограничение возможных путей развития клеток. Оно совершается последовательно: сначала преобразуются крупные участки генома детерминирующие наиболее общие свойства клеток а позднее более частные свойства. Дифференцировка это изменения в структуре клеток связанные с их функциональной специализацией обусловленные активностью определенных генов. В развивающемся организме дифференцировка сопровождается определенной организацией или размещением специализирующихся клеток что выражается в установлении определенного плана...
25627. Гистогенез и органогенез 22 KB
  4 неделя Углубление желточной складки образование желточного стебля и приподнятие зародыша в полости амниона. Замыкание нервной трубки и формирование переднего невропора к 25 сут и заднего невропора к 27 сут образование нервных ганглиев; закладка легкого желудка печени поджелудочной железы эндокринных желез аденогипофиза щитовидной и околощитовидных желез. Образование ушной и хрусталиковой плакод первичной почки мезонефроса. Образование зачатков верхних и нижних конечностей 4 пар жаберных дуг.