Перебор всех комбинаций 3-хзначного ключа - C (СИ)
Формулировка задачи:
Приветствую дорогие!
Помогите реализоватьнебольшую
программку. Есть 3 вложенных цикла, которые реализую перебор всех комбинаций 3-хзначного ключа (от 000 до 222). Все возможные комбинации записываются в столбик в файл KEY.txt. KEY.txt: 000 001 002 010… Затем начинается следующий цикл. (количество повторов – это количество всех вариантов KEY). Необходимо сделать так, что бы в этом цикле считалась первая комбинации в массивX[3]=(000)
, обработалась, со следующим витком цикла считалась следующая комбинации и снова в массивX[3] (001)
…#include <conio.h> // Для очистки экрана
#include <string.h> // Для работы со строками
#include <stdio.h> // Для работы с файлами
#include <math.h> // Для расчетов
#include <dos.h> //Для паузы
const int sizekey=3; // Константа ключ
void main() // Главная функция
{
clrscr(); // очистка экрана
int key[3], sizeS, size, X[3], i=0, j, u=0, z, S1, S2, S3, S4=0, error=0, q[3], buff;
unsigned char a[100], b[100]; // Объявление переменных символьного типа
FILE *f1, *f2;// Создание потоков данных
f1=fopen("C.txt", "rt"); // Подключение потока данных C (считывание)
f2=fopen("KEY.txt", "a+"); // Подключение потока данных KEY (запись)
//Генирация ключа
for(S1=0; S1<sizekey; S1++)
{
key[0]=S1;
for(S2=0; S2<sizekey; S2++)
{
key[1]=S2;
for(S3=0; S3<sizekey; S3++)
{
key[2]=S3;
fprintf(f2, "%d%d%d\n", key[0], key[1], key[2]); // Запись в файл
}
}
}
for(i=0; i<27; i++)
{
//---Вот тут необходимо реализовать построчное занесение 3х знаков в массив X[3].
}
fclose(f1); // Отключение потока данных f1
fclose(f2); // Отключение потока данных f2
getch();
}Решение задачи: «Перебор всех комбинаций 3-хзначного ключа»
textual
Листинг программы
#include <conio.h> // Для очистки экрана
#include <string.h> // Для работы со строками
#include <stdio.h> // Для работы с файлами
#include <math.h> // Для расчетов
#include <dos.h> //Для паузы
const int sizekey=3; // Константа ключ
void main() // Главная функция
{
clrscr(); // очистка экрана
int key[3], sizeS, size, X[3], i=0, j=0, u=0, z=0, S1, S2, S3, S4=0, error=0, q[3], buff;
unsigned char a[100], b[100], c[81]; // Объявление переменных символьного типа
FILE *f1;// Создание потоков данных
f1=fopen("KEY.txt", "w"); // Подключение потока данных KEY (запись)
//Генирация ключа
for(S1=0; S1<sizekey; S1++)
{
key[0]=S1;
for(S2=0; S2<sizekey; S2++)
{
key[1]=S2;
for(S3=0; S3<sizekey; S3++)
{
key[2]=S3;
fprintf(f1, "%d%d%d", key[0], key[1], key[2]); // Запись в файл
}
}
}
fclose(f1); // Отключение потока данных f1
FILE *f2;// Создание потоков данных
f2=fopen("KEY.txt", "r"); // Подключение потока данных KEY (считывание)
fscanf(f2, "%s", &c); // Считывание из файла
printf("\nC: %s", &c); //Временно
int schet=(int)strlen(c); // Вычисление длины строки
schet=schet/sizekey; /// Деление длины строки на длину ключа, для определения повторов цикла
printf("\nDlina: %d", schet); //Временно
for(j=0; j<schet; j++)
{
for(i=0; i<sizekey; i++)
{
X[i]=(int)(c[u]-'0');
u++;
}
printf("\nX: %d%d%d", X[0], X[1], X[2]);
delay(300);
}
fclose(f2); // Отключение потока данных f2
getch();
}