Tiek kodo esu pasirašęs:
#include <vector>
#include <string>
#include <fstream>
#include <iostream>
using namespace std;
class Pilis {
private:
int m;
int n;
vector < vector<int> > Cele;
vector < vector<string> > Kelias;
public:
Pilis(): n(0), m(0) {}
void Skaityti(string file);
void Spausti();
string Kur(int nn, int mm);
void Kambariai();
};
void Pilis::Skaityti(string file){
ifstream in(file);
vector <int> skait;
in >> n;
in >> m;
int sk;
for ( int i = 0; i < n; i++ ) {
for ( int j = 0; j < m; j++ ) {
in >> sk;
skait.push_back(sk);
}
Cele.push_back(skait);
skait.resize(0);
}
}
void Pilis::Spausti() {
ofstream out("ats.txt");
for ( int i = 0; i < n; i++ ) {
for ( int j = 0; j < m; j++ ) {
out << Cele[i][j] << " ";
}
out << endl;
}
}
string Pilis::Kur(int nn, int mm) {
int v = 0, a = 0, k = 0, d = 0;
int laik = Cele[nn][mm];
string tinka;
if ( laik / 8 == 1 ) {
a = 1;
laik = Cele[nn][mm] % 8;
}
if ( laik / 4 == 1 ) {
laik = Cele[nn][mm] % 4;
d = 1;
}
if ( laik / 2 == 1) {
v = 1;
laik = Cele[nn][mm] % 2;
}
if ( laik == 1 )
k = 1;
if (a==0)
tinka+="a";
if (d==0)
tinka+="d";
if (k==0)
tinka+="k";
if (v==0)
tinka+="v";
cout << tinka << endl;
return tinka;
}
void Pilis::Kambariai() {
}
void Pilis::Eiti() {
}
int main() {
Pilis P;
P.Skaityti("file.txt");
P.Spausti();
P.Kur(3,3);
system("pause");
}
Funkcija " string Pilis::Kur(int nn, int mm) "
patikrina pasirinkto langelio reikšmę pagal tuos skaičius pateiktus pradiniame faile. Ir išspausdina kryptis į kurias puses galima eiti.
Pvz jei tik į dešinę, spausdins "d" , jei į apačia ir dešinę tai "ad" ir t.t.
Pagal tai reiktų judėti palei sienas, kol baigiasi visi įmanomi keliai, bet vat tose vietose, kur galima į kelias puses,kaip čia atsižymėti, kaip grįžti vėl patikrinimui čia reiktų? Niekaip neišmąstau.
P.S. Būtina uždaviny panaudoti rekursiją