Informes numéricos (lenguaje C)
Método 1:
#includelt;stdio.hgt;
void main()
{int a[100][100 ], n, m, i, j; /*a[100][100] es solo una matriz establecida aleatoriamente, que se puede aumentar o reducir si es necesario*/
K: scanf(" d : d", amp; n, amp; m); /* Preste atención al formato de entrada. El ":" indica que la relación entre los dos es la relación de "número de informe - obtener número" */ ; p>
if(ngt; 0amp; amp; mgt; 0)
{for(i=1;ilt;=n;i)
a[1][ i]= i;
for(i=1;ilt;=n;i)
{for(j=m(n 1-i) 1;jlt;=( n 1- i); j) /* Toma el primer elemento de la derecha después de tomar el resto como el primer elemento del siguiente número y auméntalo en secuencia*/
a[i 1][ j-m(n 1-i) ]=a[i][j];
for(j=1;jlt;=m(n 1-i);j) /*El primer elemento del que queda después de tomar el resto se usará como el siguiente Cuente el último elemento,
a[i 1][(n 1-i)-m(n 1-i) j]=a[i] [j]; Disminuir a su vez; y Los números obtenidos se colocan en la capa exterior del siguiente número a su vez*/
printf("f(d:d)(d)=d\n" , n, m, i, a[i 1][(n 1-i)]);}} /*Ingrese el número obtenido al informar cada vez*/
else printf("¡Sin efecto! \n");
p>goto K; /*la declaración goto permite al programa volver a ingresar otras situaciones, como "13:3" significa 13 personas, cada vez que se informa 3 veces, una la persona sale*/
getch( );
Método 2:
#stdio.hgt
void main( )
{int a[100 ],i,j,n,m;
K: scanf("d:d",amp;n,amp;m);
for(i=1;ilt ;=n;i)
a[i]=i;
for(j=0,i=1; ilt;=n;i=in,i) /* i=in se usa para darse cuenta de que cuando llegue a n desde 1, volverá a 1*/
{if(a[i]! =0) {j; if(jm==0) printf( "f(d)=d\n",j/m,a[i]),a[i]=0;}
if(j/m==n) break;} /* Cuente repetidamente, marque el número contado como 0 y no lo cuente la próxima vez*/
goto K;
obtener();}