0
동일한 출력을 수행하려면이 코드를 어떻게 단순화해야합니까? 출력은 가능한 모든 문자열이 길이와 변수 한계에 따라 달라집니다. 예를 들어 길이가 3 인 문자열에서 영원히 사용할 수있는 26 개의 변수는 aaa, aab, aac ..... aaz, aba입니다. , ABB ...... 당신은 문자열을 사용하고, 숫자가 허용 범위의 문자 인과 숫자로 취급하는 기능 next
를 작성할 수C - Simplifiy 순열 알고리즘
//#define 'char_set_begin' 'char_begin'
//#define 'char_set_end' 'char_end'
#define numeric_b '0'
#define numeric_e '9'
/** init string intervals ---*/
static char c0=numeric_b;
static char c1=numeric_b;
static char c2=numeric_b;
static char c3=numeric_b;
static char c4=numeric_b;
static char c5=numeric_b;
static char c6=numeric_b;
static char c7=numeric_b;
/** init start & end ----------------*/
static const char en = numeric_e +1;
static const char st = numeric_b +1;
void str_in(int length);
void permute(int length);
#include <stdio.h>
int main()
{
int x=5;
permute(x);
return 0;
}
void str_in(int length){
FILE *f;
f=fopen("C:\\file\\path\\goes\\here\\fileIO.txt", "a+");
switch(length){
case 0:
fprintf(f,"%c\n",c0);break;
case 1:
fprintf(f,"%c%c\n",c0,c1);break;
case 2:
fprintf(f,"%c%c%c\n",c0,c1,c2);break;
case 3:
fprintf(f,"%c%c%c%c\n",c0,c1,c2,c3);break;
case 4:
fprintf(f,"%c%c%c%c%c\n",c0,c1,c2,c3,c4);break;
case 5:
fprintf(f,"%c%c%c%c%c%c\n",c0,c1,c2,c3,c4,c5);break;
case 6:
fprintf(f,"%c%c%c%c%c%c%c\n",c0,c1,c2,c3,c4,c5,c6);break;
case 7:
fprintf(f,"%c%c%c%c%c%c%c%c\n",c0,c1,c2,c3,c4,c5,c6,c7);break;
}
fclose(f);
}
void permute(int length){
while(c0<=en){
str_in(length);
c0++;
if(c0==en && length==0){break;}
if(c0==en){
c0=st;
c1++;
if(c1==en && length==1){break;}
if(c1==en){
c1=st;
c2++;
if(c2==en && length==2){break;}
if(c2==en){
c2=st;
c3++;
if(c3==en && length==3){break;}
if(c3==en){
c3=st;
c4++;
if(c4==en && length==4){break;}
if(c4==en){
c4=st;
c5++;
if(c5==en && length==5){break;}
if(c5==en){
c5=st;
c6++;
if(c6==en && length==6){break;}
if(c6==en){
c6=st;
c7++;
if(c7==en && length==7){break;}
}
}
}
}
}
}
}
}
}
첫째, 왜 당신은 길이 8 대신 c0..c8 (정적 숯불 C '같은의 문자 배열을 사용하지 않는 [8]?'배열하면 (당신의'str_in을 단순화 할 수) fprintf (f, "% c", c [i]); fprintf (f, "\ n"); ' – user3159253
또한 이렇게하면 – user3159253
내가 선택한 닉네임이 비 키릴 문자가 아닌 언어를 사용하는 동료들에게 편리하지 않다는 것을 제안하고자한다. 많은 사람들이 키릴 문자를 입력 할 수 없으므로 @ ОлегИгоревич 표기법으로 대화에서 이름으로 전화를 걸 수 없습니다. 중국어 상형 문자가있는 닉네임 사용자와 비슷한 문제가 발생했습니다. – user3159253