#include #include #include #include char *kraj="9999"; class komb { char broj[5]; int crno; int belo; komb *sled; public: komb () { strcpy ( broj, "0000"); belo=0; crno=0; sled=NULL;}; komb ( char *a, komb *k) { strcpy (broj, a); belo=0; crno=0; sled=k;} void ubaci_ocenu ( int icr, int ibe ) { crno=icr; belo=ibe;}; komb *uzmi_sled () { return this=sled;}; int oceni ( char [5] ); }; int komb::oceni ( char aa[5]) { int cr=0; int be=0; int i; int j; char b[5]; char a[5]; strcpy ( b, broj); strcpy ( a, aa); for ( i=0; i<4; i++) { if (a[i]==b[i]) { cr++; a[i]=' '; b[i]=' ';};}; for ( i=0; i<4; i++) { if ( a[i]==' ' ) continue; for ( j=0; j<4; j++) { if (b[j]==' ') continue; if (i==j) continue; if (a[i]==b[j]) { be++; a[i]=' '; b[j]=' '; break;}; }; }; // cout << "KKKK" << broj << '$' << aa << '$' << cr << crno << be << belo << "***\n"; if ( (be==belo) && ( cr==crno)) return 0; else return 1; }; int povecaj ( char *a ) { char aa[5]; if (strcmp (a,kraj)==0) { cout << " **** Negde je pogreseno kod ocenjivanja! ***\n"; exit (0); }; strcpy (aa,a); int prenos=0; for ( int i=3; i>-1; i--) { aa[i]++; if(aa[i]>'9') {prenos=1; aa[i]-=10;} else prenos=0; if (prenos==0) break; }; strcpy ( a,aa); return prenos; }; void main () { komb *tek=new komb; komb *prvi=tek; char a[5]="0000"; int icr; int ibe; int ok; cout << "------- Wellcome to DULE's MASTER MIND -------\n\n\n"; cout << a << "<---PREDLOG (ocenite prvo crne pa bele!) "; cin >> icr >> ibe; tek->ubaci_ocenu ( icr, ibe); if (icr==4) exit(0); do { while ( tek->oceni(a)!=0) povecaj(&a[0]); do { if (tek=tek->uzmi_sled()) { ok=tek->oceni(a); if ( ok!=0) break;} else ok=0; } while (tek); if (ok!=0) { tek=prvi; povecaj(&a[0]); continue;}; prvi=tek=new komb(&a[0], prvi); cout << a << "<---PREDLOG (ocenite prvo crne pa bele!) "; cin >> icr >> ibe; tek->ubaci_ocenu ( icr, ibe ); } while (icr<4); }