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

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

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


 

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

58051. Построение сечений многогранников 24.86 MB
  Образовательные: ввести понятие сечения многогранника; рассмотреть способы решения задач на построение сечений многогранников на основе аксиоматики. Развивающие: развивать пространственное воображение обучающихся; формировать умения чётко и ясно излагать свои мысли; совершенствовать графическую культуру.
58052. У світі синусоїдів. Урок дослідження. (Методом проектів) 724 KB
  Доведено що будьяке періодичне коливання можна зобразити як суму синусоїдальних коливань. Частоти цих синусоїдальних коливань називають спектром складного коливання. Розкладання складного коливання на суму синусоїдальних коливань називають спектральним аналізом коливання. Спектральним аналізом коливань користуються для розрахунку різних конструкцій.
58053. Урок навчання грамоти. Читання 80 KB
  МЕТА: повторити вивчені букви, формувати навички читання слів і речень з вивченими буквами; вдосконалювати навички побудови звуко-складових моделей; розвивати мовлення учнів, мислення; виховувати інтерес до уроку читання.
58054. Види трикутників. Рівнобедрений трикутник 88 KB
  Навчальна мета: ознайомити з видами трикутників, їх властивостями, ознайомити з історією розвитку поняття «трикутника» та розглянути використання властивостей трикутників в житті; закріплювати основні поняття теми «Трикутники»...
58055. Сучасний урок – це дзеркало загальної і педагогічної культури вчителя 251 KB
  Чітке формулювання освітніх завдань у цілому та його складових, їх звязок із розвивальними та виховними завданнями; Визначення місця в загальній системі уроків; Визначення оптимального змісту уроку відповідно до вимог навчальної програми та мети уроку...
58056. Урок – гра. «Математика і навколишній світ». Дії з натуральними числами 70.5 KB
  Мета: Систематизувати знання, уміння та навички учнів по темі «Дії з натуральними числами» В процесі розв’язання цікавих нестандартних; Сприяти розвитку та формуванню інтелектуальних і творчих здібностей учнів...
58057. Уроку позакласного читання для учнів 3-х класів 144 KB
  Мета: Поглибити знання дітей про породи собак; пробуджувати інтерес до прочитаного; розвивати навички правильного, свідомого читання, уміння самостійно працювати з текстом, порівнювати, узагальнювати, робити висновки...
58058. Прикладна діяльність. Створення декоративної композиції «Дерево життя» в техніці петриківського розпису 63 KB
  Мета: ознайомити учнів із світосприйняттям предків на прикладі дерева життя символу українського декоративно-прикладного мистецтва; вчити учнів передавати на малюнку чарівний світ природи за допомогою основних прийомів петриківського розпису...
58059. Шопен – душа фортепіано 74 KB
  Мета уроку: Навчальна: ознайомити учнів із творчістю та життєвим шляхом Ф.Шопена, провідними стильовими засадами його композиторського почерку; працювати над диханням, чистотою інтонування, співом у єдиній вокальній позиції.