Перебор всех комбинаций 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();
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы