このプログラムを変更するのに苦労しています。このアルゴリズムは、繰り返しのないリストを生成するためにすでに正しいものです。ただし、ユーザーの整数の範囲からリストを生成したいと考えています。(1~n)
例: ユーザーが 5 を入力 -> 印刷 (1 2 3 4 5) すると、組み合わせを生成するために 5 つの整数が要求されます。
整数を n 回個別に入力するのではなく、(1-n) から組み合わせが見つかるようにするにはどうすればよいでしょうか? どんな助けでも大歓迎です。(乱雑ですみません、私は学生です:P)
#include<stdio.h> stdio.h
#include<stdlib.h> stdlib.h
int a1[50], a2[50]; // arrays
int count=-1, range;
int w; // user defined variable
void main()
{
printf("Please enter a number. (1-10): ");
scanf("%d", &w);
int x,y; // comparing
printf("You have entered %d\n\n",w);
for(range=1; range<=w; range++){
printf("%d", range);
printf(" ");
} // end for "range"
printf("\n");
for(x=0; x<w; x++){
a1[x]=0;
y=x+1;
scanf("%d\n\n" ,&a2[y]);
}// end for
combo(w);
} // end main
combo(int z) // function with algorithm to find combonations
{
while (w<1 || w>10){
printf("\nThat number is not in range. Please try again. \n\n");
printf("Please enter a number. (1-10): ");
scanf("%d", &w);
} // end while
int x;
a1[z]=++count;
if(count==w){
for(x=0; x<w; x++)
printf("%2d",a2[a1[x]]);
printf(" ");
} // end if
for(x=0; x<w; x++)
if(a1[x]==0)
combo(x);
count--;
a1[z]=0;
} // end "combo"