⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 This fiel shows how to use Hopfield networks
💻 CPP
字号:
//  Program wykonali:
//  Szot Karol
//  Suchenia Karol
//  gr.503A

#include <iostream>
#include <conio.h>
#include <fstream>
#include "CHopfield.h"
#include <cstdlib>

#define int2bool(x) (x==0) ? 0 : 1
using namespace std;

static int Rysuj(int, int);
void Rys_Figure(int, bool = false);          
bool Pobierz(char *, CHopfield *);

int  ind = 0;
bool bData[NUMDATA][RESY][RESX];

static int Rysuj(int x, int y) {
	bData[ind][y][x] = !(bData[ind][y][x]);
	
	Rys_Figure(ind, true);

	return 1;
}

void Rys_Figure(int ind, bool pause) {
	for (int i=0;i<RESY;i++) {
		for (int j=0;j<RESX;j++) {
			cout << ((bData[ind][i][j]) ? '.' : ' ');
		}

		cout << endl;
	}

	cout << endl;
	if (pause) _getch();
}

bool Pobierz(char *filename, CHopfield *net) {
	// sprawdzanie czy isnieja dane
	ifstream data(filename);
	if (!data) {
		cout << "Blad czytania pliku..." << endl;
		return false;
	} else cout << "Wczytanie danych...";

	// Zezwolenie sieci czytania danych
	net->ReadData(filename);
	
	// teraz czyta dane dla siebie
	for (int i=0;i<NUMDATA;i++) {
		for (int j=0;j<RESY;j++) {
			for (int k=0;k<RESX;k++) {
				int temp;
				data >> temp;

				bData[i][j][k] = int2bool(temp);
			}
		}
	}

	cout << "Koniec" << endl;
	for(int i=0;i<NUMDATA;i++) Rys_Figure(i, true);

	return true;
}

int main() {
	CHopfield net;
	
	// Wywolanie funkcji
	net.SetCallback(Rysuj);
	
	if (!Pobierz("wzory.txt", &net)) return 0;
	
	cout << "Trenowanie sieci...";
	net.Train();
	cout << "Koniec\n";
	if (!Pobierz("zaklocenia.txt", &net)) return 0;

	cout << "Wybierz obraz do testowania [1-3]: ";
	cin >> ind;
	
	if (ind > NUMDATA) {
		cout << "Bledne wczytanie danych 1" << endl;
		ind = 0;
	} else ind -= 1;

	net.Run(ind);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -