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

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

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


 

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

71694. Архивация данных 432 KB
  Цель работы: Научится создавать архивные файлы при помощи программы WinRAR Освоить приемы извлечения из архива Пособия и оборудование: ПК IBM PC/AT; Инструкция по выполнению лабораторной работы; Методические...
71695. Элементы Рабочего стола Window Приемы работы 7.32 MB
  Порядок выполнения работы. Ознакомился с методическими указаниями. Изучили элементы Рабочего стола. Определил, какие элементы входят в состав оформления Рабочего стола. Открыл несколько любых окон на Рабочем столе и выполнил следующие манипуляции: развернули; восстановили...
71696. Настройка рабочего стола, Панели задач, Главного меню 6.27 MB
  Цель работы: Закрепить теоретические знания по теме Настройка рабочей среды ОС Windows Закрепить теоретические знания по теме Основные объекты Windows и их назначение Самостоятельно овладеть навыками настройки работы основных элементов оформления ОС Windows.
71697. Детские болезни. Периоды детства конспект лекций 1.59 MB
  Период внутриутробного развития (утробное детство). Длительность - с момента имплантации до рождения (270 дней). Естественное вскармливание. Смешанное и искусственное вскармливание. Перинатальное поражение ЦНС у новорожденных. Перинатальное поражение ЦНС у новорожденных...
71698. ТЕХНОЛОГИЯ ПОМЕХОУСТОЙЧИВОГО КОДИРОВАНИЯ 54.12 KB
  Разработка методов помехоустойчивого кодирования, была инициирована основанной теоремой Шеннона для дискретного канала с шумом, указывающей на существование практически безошибочного метода передачи информации по такому каналу со скоростью, не превышающей пропускную способность этого канала.
71699. Модуляция 1.88 MB
  Передаваемая информация заложена в управляющем (модулирующем) сигнале, а роль переносчика информации выполняет высокочастотное колебание, называемое несущим. Модуляция, таким образом, представляет собой процесс «посадки» информационного колебания на заведомо известную несущую.
71701. Технология помехоустойчивого кодирования 64.71 KB
  При передаче информации в пространстве или во времени имеет место где вектор ошибки знак обозначает суммирование по модулю 2. 3 Вектор в 3 называемый синдромом будет равен вектору нуль только в двух случаях: либо ошибки нет либо имеет место так называемая необнаруживаемая ошибка.
71702. Модуляция гармонических колебаний 540.84 KB
  Под модуляцией понимают процесс изменения одного или нескольких параметров физического процесса по закону передаваемого сообщения. Так, например, если моделью физического процесса является функция f(a, b, c, d, t), то параметры a, b, c, d можно использовать для осуществления модуляции.