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

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

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


 

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

83661. Методы расчета, основанные на свойствах линейных цепей 165.5 KB
  Метод наложения Данный метод справедлив только для линейных электрических цепей и является особенно эффективным когда требуется вычислить токи для различных значений ЭДС и токов источников в то время как сопротивления схемы остаются неизменными. Аналитически принцип наложения для цепи содержащей n источников ЭДС и m источников тока выражается соотношением . 1 Здесь комплекс входной проводимости k й ветви численно равный отношению тока к ЭДС в этой ветви при равных нулю ЭДС в остальных ветвях; комплекс взаимной ...
83662. Метод эквивалентного генератора 123.5 KB
  как сумму двух составляющих одна из которых вызывается источниками входящими в структуру активного двухполюсника и источником ЭДС расположенным между зажимами 1 и 2 слева а другая источником ЭДС расположенным между зажимами 1 и 2 справа. Параметры эквивалентного генератора активного двухполюсника могут быть определены экспериментальным или теоретическим путями. В первом случае в частности на постоянном токе в режиме холостого хода активного двухполюсника замеряют напряжение на его зажимах с помощью вольтметра которое и равно ....
83663. Пассивные четырехполюсники 223.5 KB
  При анализе электрических цепей в задачах исследования взаимосвязи между переменными (токами, напряжениями, мощностями и т.п.) двух каких-то ветвей схемы широко используется теория четырехполюсников. Четырехполюсник – это часть схемы произвольной конфигурации, имеющая две пары зажимов (отсюда и произошло его название), обычно называемые входными и выходными.
83664. Электрические фильтры 146.5 KB
  Качество фильтра считается тем выше чем ярче выражены его фильтрующие свойства т. Классификация фильтров Название фильтра Диапазон пропускаемых частот Низкочастотный фильтр фильтр нижних частот Высокочастотный фильтр фильтр верхних частот Полосовой фильтр полоснопропускающий фильтр Режекторный фильтр полоснозадерживающий фильтр и где В соответствии с материалом изложенным в предыдущей лекции если фильтр имеет нагрузку сопротивление которой при всех частотах равно характеристическому то напряжения и соответственно токи на...
83665. Трехфазные электрические цепи 108.5 KB
  Поэтому в энергетике строго следят за тем чтобы нагрузка генератора оставалась симметричной. Можно было бы использовать систему в которой фазы обмотки генератора не были бы гальванически соединены друг с другом. В этом случае каждую фазу генератора необходимо соединять с приемником двумя проводами т.
83666. Расчет трехфазных цепей 143.5 KB
  Равенство модулей указанных сопротивлений не является достаточным условием симметрии цепи. Если к симметричной трехфазной цепи приложена симметричная трехфазная система напряжений генератора то в ней будет иметь место симметричная система токов. Такой режим работы трехфазной цепи называется симметричным.
83667. Применение векторных диаграмм для анализа несимметричных режимов 159 KB
  При этом будем проводить сопоставление с симметричным режимом работы цепи фазные напряжения и токи в которой будут базовыми. Для этой цепи см. 5 ; при этом сами токи и в силу автономности режима работы фаз при соединении нагрузки в треугольник такие же как и в цепи на рис. и для симметричной трехфазной цепи свойство уравновешенности доказано.
83668. Метод симметричных составляющих 158.5 KB
  Симметричную систему прямой последовательности образуют см. Введя оператор поворота для симметричной системы прямой последовательности можно записать . Симметричная система обратной последовательности образована равными по модулю векторами и с относительным сдвигом по фазе на рад. Система нулевой последовательности состоит из трех векторов одинаковых по модулю и фазе см.
83669. Теорема об активном двухполюснике для симметричных составляющих 162.5 KB
  При мысленном устранении несимметрии несимметричного участка для оставшейся цепи имеет место симметричный режим холостого хода. В соответствии с методом эквивалентного генератора теперь необходимо определить эквивалентные ЭДС и входные сопротивления симметричной цепи. Величина соответствующая напряжению холостого хода на зажимах подключения локальной несимметрии определяется при отключении локальной несимметричной нагрузки любым известным методом расчета линейных цепей причем в силу симметрии цепи расчет проводится для одной фазы. В...