6804

Автоматизация разметки блок-схем алгоритмов

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

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

Автоматизация разметки блок-схем алгоритмов. Номер зачётной книжки: 831910 =100000011111112 Алгоритм обнаружения бесконечных циклов: Проверяем все операционные вершины на наличие перехода назад, если есть переход назад - помечаем блок д...

Русский

2013-01-08

84.4 KB

4 чел.

Автоматизация розметки блок-схем алгоритмов.

Номер зачётной книжки: 831910 =100000011111112;

Алгоритм обнаружения бесконечных циклов:

Проверяем все операционные вершины на наличие перехода назад, если есть переход назад  -  помечаем блок для проверки на зацикливание. Проверяем каждый такой блок на наличие переходов за пределы этого блока алгоритма. Если существует переход на врешину после исходной, то в данном блоке зацикливание не происходит. Если существует переход раньше входной то, то устанавливаем новую верхнюю границу блока, и вызываем функцию повторно.

Иначе выводим сообщение о бесконечном цикле, и номер вершины в которой обозначен неверный переход.

Скриншоты программы:

Листинг программы:

import java.io.Serializable;

import java.util.ArrayList;

public class Algorithm implements Serializable{

 private static final long serialVersionUID = 1L;

 

 private int[][] mConnections;

 private int[][] mSignals;

 private ArrayList<String> signals;

 private boolean[] isY;

 

 public Algorithm(){}

 public Algorithm(int[][] mC, int[][] mS, ArrayList<String> signs){

 System.out.println("Connection matrix:  ");

 mConnections =mC;

 mSignals = mS;

 signals = signs;

 isY = new boolean[mC.length];

 for(int i = 0; i < mC.length; i ++){

 int sum = 0;

  for(int j = 0; j<mC.length;j++) {

   sum+= mC[i][j];

  }

  if(sum>1) isY[i] = false;

  else isY[i] = true;

 }

}

 public boolean isY(int i){

 return isY[i];

}

 

 public boolean checkInfinite(int from, int to) {

 if((to - from) == 1){return true;}

 for(int i = from; i < to; i++){

  if(isY(i)){

   if(fromTo(i)>to){ return false;}

   if(fromTo(i)<from){

    boolean inF = checkInfinite(fromTo(i), to);

    if(inF){return false;}

   }

  } else if(!isY(i)){

   if(fromTo_0(i)>to){ return false;}

   if(fromTo_0(i)<from){

    boolean inF = checkInfinite(fromTo(i), to);

    if(inF){return false;}

   }

   if(fromTo_1(i)>to){ return false;}

  }

 }

 return true;

}

 

 public String findInfiniteLoop(){

 String messageLine="algorithm is correct";

 int nNodes = mConnections.length;

 for(int out = 0; out < nNodes; out++){

  if(!isY(out)) continue;

  for(int in = 0; in < nNodes; in++){

   int current = mConnections[out][in];

   if((current==1)&&(out>in)){

    if(checkInfinite(in, out))

    messageLine = " infinite loop at  "+(out+1);

    return messageLine;

   }

  }

 }  

 return messageLine;

}

 

 public int fromTo(int from){

 int to=0;

 for(int i = 0; i<mConnections.length; i++) {

  if(mConnections[from][i]==1){ to = i+1; break; }

 }

 return to;

}

 

 public int fromTo_1(int from){

 return from+1;

}

 

 public int fromTo_0(int from){

 int to=0;

 for(int i = 0; i<mConnections.length; i++) {

  if((mConnections[from][i]==1)&&(i!=from)){ to = i+1; break; }

 }

 return to;

}

}


 

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

42453. ИССЛЕДОВАНИЕ ФЛАНЦЕВЫХ СОЕДИНЕНИЙ С ПЛОСКИМИ ПРОКЛАДКАМИ 139.5 KB
  Задачи исследования: изучение действующих на фланцы усилий и соотношений между ними; теоретическое определение коэффициента жесткости фланцевого соединения; расчет необходимых усилия затяжки болтов при сборке соединения; теоретическое определение усилия действующего на фланцы в рабочих условиях; сборка фланцевого соединения экспериментальной установки с фиксированным усилием затяжки болтов; экспериментальное определение усилий действующих на фланцы при различных режимах нагружения; экспериментальное определение...
42454. РЕГУЛЯЦИЯ РАБОТЫ СЕРДЦА 36.08 KB
  Регуляторные механизмы, обеспечивающие приспособительные (адаптационные) изменения деятельности сердца. Интракардиальная регуляция работы сердца. Экстракардиальная регуляция работы сердца.
42455. WORD. Создание сортовой оборотной ведомости 114 KB
  Оформить заголовок текста задания с помощью программы Wordrt Ввести текст оформив заголовки в тексте стилями Заголовок 1 Заголовок 2. Оформить первый абзац текста буквицей см. справочную систему Документ разбить на две страницы с указанием нумерации страниц Поместить в текст произвольный рисунок выполненный с помощью приложения Pint.
42456. Исследование типовых звеньев 300 KB
  Yt=kxt Ws=k Рисунок Безынерционное звено k=5 – коэффициент усиления Рисунок 1. Отклики на единичный скачек Рисунок 1.3 Отклики на единичный импульс Рисунок 1.4 Частотные характеристики Рисунок 1.