Я пишу программу для генерации всех возможных перестановок заданного ряда чисел, а затем для генерации всех возможных двоичных деревьев из этих перестановок, поэтому я подумал, что у меня есть программа, которая генерирует перестановки и сохраняет результат в файле, а затемнаписать дополнительный код, чтобы читать построчно (который имеет все перестановки) и генерировать из них двоичные деревья, поэтому сейчас я написал половину программы, которая генерирует перестановку и сохраняет результат в файле.
#include <stdio.h>
//function to print the array
void printarray(int arr[], int size)
{
FILE *fp;
int i,j;
fp=fopen("result.txt","w");
for(i=0; i<size; i++)
{
// printf("%d\t",arr[i]);
fprintf(fp,"%d\t",arr[i]);
}
printf("\n");
fclose(fp);
}
//function to swap the variables
void swap(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}
//permutation function
void permutation(int *arr, int start, int end)
{
if(start==end)
{
printarray(arr, end+1);
return;
}
int i;
for(i=start;i<=end;i++)
{
//swapping numbers
swap((arr+i), (arr+start));
//fixing one first digit
//and calling permutation on
//the rest of the digits
permutation(arr, start+1, end);
swap((arr+i), (arr+start));
}
}
int main()
{
//taking input to the array
int size;
printf("Enter the size of array\n");
scanf("%d",&size);
int i;
int arr[size];
for(i=0;i<size;i++)
scanf("%d",&arr[i]);
//calling permutation function
permutation(arr, 0, size-1);
return 0;
}
но проблема здесь в этой программе состоит в том, что эта программа хранит только одну перестановку и не сохраняет другие перестановки в файле result.txt, как мне продолжать сохранять результат таким способом.Также программа не прекращает мигание пустого курсора, который создает ложное впечатление бесконечного цикла while.Мне пришлось нажать Ctrl + C, чтобы завершить программу, как избавиться от этого?