Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 14.04.2014
Сообщений: 6

нужно нарисовать блок-схему

01.06.2014, 21:16. Показов 546. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста нарисовать хотя бы примерную блок-схему для данной программы

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.IO;
using System.Text;
using System.Windows.Forms;

namespace binpic
{
public partial class Form1 : Form
{
const int w0 = 7;
const int h0 = 8; //размер рисунка
const int LO = -1;
const int HI = 1;
const int T0 = 100;
const int maxIT = 1000;
const int nRis = 8;//максимальное число эталонов, не более 0,15*SL0

const int SL0 = w0 * h0; //длина вектора данных

int[,] bv = new int[nRis, SL0];
double[,] w = new double[SL0, SL0];
double[] s = new double[SL0];
int[] mark = new int[SL0];
double[] en = new double[SL0];
int[] v0 = new int[SL0];
int[] v0n = new int[SL0];
string[] otvet = new string[nRis];
double T;

int pixel_value(int x, int y)
{
Color clr;
int pp;
clr = (pictureBox1.Image as Bitmap).GetPixel(x, y);
if((clr.R.Equals(0))&&(clr.G.Equals(0))& &(clr.B.Equals(0))) pp=HI;
else
pp=LO;
return pp;
}

void get_energy()
{
int j;
for (j = 0; j < SL0; j++) { en[j] = get_neuron_energy(j); }
}


double get_neuron_energy(int num)
{
double e = 0.0;
int j;
for (j = 0; j < SL0; j++) { e += w[j, num] * v0[j] * v0[num]; }
e = -0.5 * e;
e -= v0n[num] * v0[num];
return e;
}

double get_probability_change(double d_en)
{
return 1.0 / (1.0 + Math.Exp(d_en / T));
}
int get_probability_answer(double p)
{
var rnd = new Random();
double pp = 1.0 * rnd.Next(100) / 100;
return ((p <= 0.0) ? 0 : (p >= 1.0) ? 1 : (pp < p) ? 1 : 0);
}
void neuron_change_output(int num)
{
double de = 0.0;
double e = 0.0;
double p = 0.0;

v0[num] = (get_probability_answer(0.5) > 0) ? HI : LO;
e = get_neuron_energy(num);
de = e - en[num];
if (de >= 0)
{
p = get_probability_change(de);
if (get_probability_answer(1 - p) == 1) { v0[num] = v0n[num]; }
}
}


void temperature_change(int t)
{
T = T0 / (1.0 + Math.Log(t));
}



private void button1_Click(object sender, EventArgs e)
{
T = T0;

int shag = 0;

for (int i = 0; i < SL0; i++)
for (int j = 0; j < SL0; j++)
w[i, j] = 0;
for (int j = 0; j < SL0; j++)
{
for (int i = 0; i < SL0; i++)
{
if (i == j)
{
w[i, i] = 0;
}
else
{
w[j, i] += v0[i] * v0[j];
}
}
}

int stab = 0;
for (int i = 0; (i < maxIT) && (stab == 0); i++)
{

for (int j = 0; j < SL0; j++)
v0n[j] = v0[j];
get_energy();
for (int j = 0; j < SL0; j++)
mark[j] = 0;
for (int nomark = SL0; nomark > 0; )
{
for (int j = 0; j < SL0; j++)
{
if (mark[j] == 0)
{
if (get_probability_answer(1.0 / nomark) == 1)
{
nomark--;
mark[j] = 0;
neuron_change_output(j);
}
}
}
}
stab = 1;
for (int j = 0; j < SL0; j++)
stab *= ((v0[j] - v0n[j] == 0) ? 1 : 0);

T = T0 / (1.0 + Math.Log(i));
shag++;

}
string s = "";
for (int i = 0; i < SL0; i++)
s += (v0[i]).ToString();
label1.Text = s;
label3.Text = "Выполнено " + shag.ToString() + " шагов";
}

public Form1()
{
InitializeComponent();
}

private void button1_Click_1(object sender, EventArgs e)
{
folderBrowserDialog1.Description = "Выбор каталога шаблонов";
string folderName = "";
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
folderName = folderBrowserDialog1.SelectedPath;
string[] folds=Directory.GetFiles(@folderName,"*. bmp",SearchOption.AllDirectories);
Bitmap[] bmpArr = new Bitmap[folds.Length];
for (int i = 0; i < bmpArr.Length; i++)
{
if (i < nRis)
{
bmpArr[i] = new Bitmap(folds[i]);
pictureBox1.Image = bmpArr[i];
int ii = 0;
for (int j = 0; j < w0; j++)
for (int k = 0; k < h0; k++)
{
bv[i, ii] = pixel_value(j, k);
ii++;
}
int start=folds[i].LastIndexOf("\\");
int end = folds[i].LastIndexOf(".");
otvet[i] = folds[i].Substring(start + 1, end - start);
}
else
break;
}

}
label1.Text = "Шаблоны считаны";
button1.Enabled = false;
button2.Enabled = true;
}

int poiskRis(int k)
{
int p = 0;
for (int i = 0; i < SL0; i++)
if (v0[i] != bv[k, i])
p++;
if (p < 6) p = 1;
else p = 0;
return p;
}

private void button3_Click(object sender, EventArgs e)
{
T = T0;
int ii = 0;
for (int j = 0; j < w0; j++)
for (int k = 0; k < h0; k++)
{
v0[ii] = pixel_value(j, k);
ii++;
}
int shag = 0;

for (int i = 0; i < SL0; i++)
for (int j = 0; j < SL0; j++)
w[i, j] = 0;
for (int j = 0; j < SL0; j++)
{
for (int i = 0; i < SL0; i++)
{
if (i == j)
{
w[i, i] = 0;
}
else
{
w[j, i] += v0[i] * v0[j];
}
}
}

int stab = 0;
for (int i = 0; (i < maxIT) && (stab == 0); i++)
{

for (int j = 0; j < SL0; j++)
v0n[j] = v0[j];
get_energy();
for (int j = 0; j < SL0; j++)
mark[j] = 0;
for (int nomark = SL0; nomark > 0; )
{
for (int j = 0; j < SL0; j++)
{
if (mark[j] == 0)
{
if (get_probability_answer(1.0 / nomark) == 1)
{
nomark--;
mark[j] = 0;
neuron_change_output(j);
}
}
}
}
stab = 1;
for (int j = 0; j < SL0; j++)
stab *= ((v0[j] - v0n[j] == 0) ? 1 : 0);

T = T0 / (1.0 + Math.Log(i));
shag++;

}
string s = "";
int poisk=-1;
for (int i = 0; i < nRis; i++)
if(poiskRis(i)==1)
poisk=i;
if(poisk==-1)
s="не знаю";
else
s=otvet[poisk];
label3.Text = s;
label4.Text = "Выполнено " + shag.ToString() + " шагов";
}

private void button2_Click(object sender, EventArgs e)
{
openFileDialog1.Filter = "Только BMP|*.bmp";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
pictureBox1.Image = Image.FromFile(openFileDialog1.FileName) ;
button3.Enabled = true;
label3.Text = "";
label4.Text = "";
}

}

}
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.06.2014, 21:16
Ответы с готовыми решениями:

Как лучше нарисовать граф (блок-схему)
Здравствуйте! У меня в приложении нужно рисовать графы такого вида, как я нарисовал во вложении (конечно, на много сложнее). Как мне лучше...

Нарисовать блок-схему по коду на C#
Код: static void Main(string args) { Console.Write(&quot;длина массива = &quot;); int len =...

Нарисовать блок схему к программе и расставить комментарии
помогите составить блок-схему по программе.... и с коментариями в программе о действиях static void Main(string args) { ...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.06.2014, 21:16
Помогаю со студенческими работами здесь

Нарисовать блок-схему (Сумма всех цифр)
Помогите нарисовать блок-схему. Буду очень благодарен. Вот код: class Program { static void Main(string args) ...

Нужно составить блок-схему к программе с массивом (программа написана)
Вот программа: using System; using System.Collections.Generic; using System.Linq; using System.Text; using...

Нужно нарисовать блок-схему !!
1.Опредилить сколько положительных,отрицательных и нулей, среди двох чисел, которые произвольно задаются. uses crt; var a,b:real; ...

Нужно нарисовать блок схему по коду
#include&lt;iostream.h&gt; #include&lt;conio.h&gt; main() { int n; double r=0; cout«&quot;Vvtdit n &quot;; cin»n; while(n&gt;0) ...

Нужно нарисовать блок схему по задачке
Всем привет, не могли бы вы помочь нарисовать блок схему по этой задаче: Определить сумму элементов массива, расположенных между...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru