int nSmallErrorsFile = 0;
int nVar = 0;
srand(time(NULL));
while(1){
int ax1 = Random1() * 20.0;
int ax2 = Random1() * 20.0;
int ax3 = Random1() * 20.0;
int ax4 = Random1() * 20.0;
int ax5 = Random1() * 20.0;
int ax6 = Random1() * 20.0;
int ax7 = Random1() * 20.0;
int ax8 = Random1() * 20.0;
int ax9 = Random1() * 20.0;
int ax10 = Random1() * 20.0;
int ax11 = Random1() * 20.0;
int ax12 = Random1() * 20.0;
int ax13 = Random1() * 20.0;
int ax14 = Random1() * 20.0;
int ax15 = Random1() * 20.0;
int ax16 = Random1() * 20.0;
int ax17 = Random1() * 20.0;
int ax18 = Random1() * 20.0;
int ax19 = Random1() * 20.0;
int ax20 = Random1() * 20.0;
int arrNumber[20] = { ax1, ax2, ax3, ax4, ax5, ax6, ax7, ax8, ax9, ax10, ax11, ax12, ax13, ax14, ax15, ax16, ax17, ax18, ax19, ax20 };
bool bDoubles = false;
for (int kx = 0; kx < 20; kx++) {
for (int fx = 0; fx < 20; fx++) {
if (kx != fx && arrNumber[kx] == arrNumber[fx]) {
bDoubles = true;
break;
}
}
if (bDoubles) { break; }
}
if (bDoubles) { continue; }
FILE* pcFile;
fopen_s(&pcFile, "code.c", "wt");
fprintf(pcFile, "// %d-%d-%d-%d-%d-%d-%d-%d-%d-%d-%d-%d-%d-%d-%d-%d-%d-%d-%d-%d\n", ax1, ax2, ax3, ax4, ax5, ax6, ax7, ax8, ax9, ax10, ax11, ax12, ax13, ax14, ax15, ax16, ax17, ax18, ax19, ax20);
fprintf(pcFile, "#include <iostream>\nint main()\n{\nBEGIN: ");
for (int ix = 0; ix < strlen(pDNK); ix++) {
for (int jx = 0; jx < 20; jx++) {
if (pDNK[ix] == pCommands[jx]) {
const char* pCommand = arrCommands[arrNumber[jx]];
if (!strcmp(pCommand, "var")) {
fprintf(pcFile, "var%d ", nVar++); // по идеи квадратными скобками можно определить текущую переменную, но можно искользоват круглые тогда компилятор не поймет. Сейчас главное сгенерировать код с минимальными ошибками. Тогда мы найдем ключ.
}
else {
fprintf(pcFile, "%s ", pCommand);
}
}
}
}
fprintf(pcFile, "\n}\n");
fclose(pcFile);
system("cl.exe code.c >err.txt");
__int64 fsz = 0;
int sz;
FILE* pcFileError;
fopen_s(&pcFileError, "err.txt", "rb");
fseek(pcFileError, 0, SEEK_END);
fgetpos(pcFileError, &fsz);
fseek(pcFileError, 0, SEEK_SET);
sz = (int)fsz / sizeof(char);
char* pMem = new char[sz + 1];
fread(pMem, sz, 1, pcFileError);
pMem[sz] = 0;
fclose(pcFileError);
int nErrors = 0;
for (int gx = 0; gx < sz; gx++) {
if (!strcmp(&pMem[gx], "error")) {
nErrors++;
}
}
delete[]pMem;
if (nErrors < 10) {
char buff[100];
sprintf_s(buff, "copy code.c %d-%d-%d-%d-%d-%d-%d-%d-%d-%d-%d-%d-%d-%d-%d-%d-%d-%d-%d-%d.c", ax1, ax2, ax3, ax4, ax5, ax6, ax7, ax8, ax9, ax10, ax11, ax12, ax13, ax14, ax15, ax16, ax17, ax18, ax19, ax20);
system(buff);
}
// return 1; //
}