¡80 puntos en programación C! Gracias~ gente de buen corazón por ayudar a mi pequeña hija...
¿Hay 8 números o 4 números alrededor?
¿De quién es el resto? ¿De quién es él mismo?
¿Qué significa compensación? ¿Debería compensarse o debería compensarse directamente sin incluirse?
Yo también me estoy volviendo loco ~
Suplemento:
El programa fuente a continuación es muy largo y contiene demasiados juicios. Veamos si se puede utilizar.
Puedes ingresar
7 2
6 6
3 1
0 0
0 6
0 3
para probar.
prueba, "-" significa una posición vacía, la función display() imprime la matriz, no la mires
#include
void diplay(int b[8][7 ])
{
for(int i=0; i<8; i++)
{ p>
for (int j=0; j<7; j++)
if (b[i][j] == -1)
printf("_ \t");
else
printf("%d\t", b[i][j]);
printf("\n \n");
}
}
}
int main()
{ p>
int a[8][7]= {
{-1,-1,1, -1,0,9 -1},
{4 ,7,-1, -1,-1,-1,4,2},
{-1,6,-1,3,2,5,-1},
{-1,-1,3,5,-1,-1,0},
{0,-1,7,-1,2,9,-1},
{6,8,-1,0,-1.-1,3},
{-1,-1,2,-1,8,7,-1 },
{-1,9,-1,4,-1,6,-1}
}
int b[7] = {15, 16, 16, 11, 15, 1, 0};/* El valor del cuadro se toma de aquí. También puedes comentar esta línea y usar la siguiente declaración*/
int. flag = 0;
int box;
int i, j, t = 6, to = 6;/*t es el número de veces que quedan en la posición actual, to es el número total de veces*/
int k = 0;
int temp = 0
/*srand( (unsigned)time( NULL ) ) ; La función de esta oración es usar números aleatorios, solo elimina los caracteres de comentario, más el siguiente*/
diplay(a
printf("total***); %d/%d veces\n", t,to) ;
mientras(1)
{
/*box = rand ()/1000 El efecto de esta oración es usar números aleatorios, simplemente elimine los caracteres de comentario y los caracteres de comentario de arriba */
box = b[k]
; printf("El valor de \nbox es: %d", box );
k++;
printf("Ingrese la posición que desea insertar:"); p>
scanf("%d%d",&i, &j
if(a[i][j] == -1)
{ p>
if (i+1 <8 && i-1 > -1 &&j+1 < 7 && j-1 > -1) // Las posiciones distintas a la fila y columna más externas se juzgan aquí
{
if (a[i-1][j]! = -1)
temp = a[i-1][j]
if (a[i+1][j] ! = -1)
temperatura += a[i+1][j]
si (a[i][j-1] ! = -1)
temperatura += a [yo] [j
-1];
si (a[i+1][j+1] != -1)
temperatura += a[i+1][j+1]
si (a[i][j+1] ! = -1)
temp += a[i][j+1]; >si (a[i+1][j-1] ! = -1)
temp += a[i+1][j-1]
si ( a[i-1][j+1] ! = -1)
temp += a[i-1][j+1]
si (a[i] -1][j-1] ! = -1)
temp += a[i-1][j-1]
si (temp == cuadro) <; /p>
{
a[i-1][j] = -1
a[i+1][j] =
a[i-1][j+1] = -1
a[i+ 1][j-1] = -1
a[i; ][j+1] = -1;
a[i][j-1] = -1
a[i-1][j-1] = - 1;
a[i+1][j+1] = -1;
bandera = 1; else
printf("\n ¡no se puede cancelar! La suma de los valores periféricos es: %d\n", temp
}
si no (i == 0 || j == 0 || i == 7 || j == 6)
{
Si (i == 0 && j == 0) /* si el punto de inserción es a[0][0]*/
{
if (a[i+1][j] != -1 )
temp = a[i+1][j]
if (a[i+1][j+1] != -1)
temp += a[i+1][j+1];
if (a[i][j+1] != -1)
temp += a[ i][j+1];
si (temp == cuadro)
{
a[i][j+1] = - 1;
a[i+1][j] =
a[i+1][j+1] =
flag = 1 ;
}
else
{
printf("\n ¡no se pudo cancelar! La suma de los valores periféricos es: %d\n", temp);
}
}
else if (i == 7 && j == 6) / * si el punto de inserción es a[7][6]*/
{
if (a[i-1][j] ! = -1)
temp = a[i-1][j];
si (a[i-1][j-1] ! = -1)
temp += a[i-1][j-1]
if (a[i][j-1] != -1)
temp += a[i][j-1];
if (temp ==
cuadro)
{
a[i-1][j] = -1
a[i-1][j-1] = - 1;
a[i][j-1] = -1
bandera = 1
}
más
{
printf("\n ¡No se puede cancelar! La suma de los valores periféricos es: %d\n", temp
}
}
}
else if (i == 0 && j == 6) /* si el punto de inserción es a[0][6]* /
{
if (a[i+1][j] ! = -1)
temp = a[i+1][j]
si (a[i][j-1] != -1)
temp += a[i][j-1]; >si (a [i+1][j-1] ! = -1)
temp += a[i+1][j-1]
si ( temp == caja )
{
a[i+1][j-1] = -1
a[i][j-1; ] = -1
a[i+1][j] = -1
bandera = 1; >else
else
p>
{
printf("\n ¡No se puede cancelar! La suma de los valores periféricos es: %d \n", temp);
}
}
}
si no (i == 7 && j == 0 ) /* si el punto de inserción es a[7][0]*/
{
if (a[i][j+1] ! = -1) p>
temp = a[i][j+1]
if (a[i-1][j] != -1)
temp += a[i][j-1];
si (a[ i-1][j+1] ! = -1)
temp += a[i+1] ][j-1];
if (temp == cuadro)
{
a[i-1][j+1] = -1
a[i][j+1] = -1
a[i-1][j] =
bandera =; 1;
}
else
{
printf("\n¡No se puede cancelar! La suma de los valores circundantes es: %d\n", temp);
}
}
}
else if (i == 0 && j ! = 0) /* La primera fila después de dividir por cuatro vértices*/
{
if (a[i][j-1] ! = -1)
temp = a[i][j-1]
si (a[i][j+1] ! = -1)
temperatura += a[i][j+1]
si (a[i+1][j] ! = -1)
temperatura += a [i+1][j];
si (a[i+1][j-1] != -1)
temp += a[i+1 ] [j-1];
si (a[i+1][j+1] != -1)
temp += a[i+1][j+ 1
];
if (temp == cuadro)
{
a[i][j-1] = -1
a[i][j+1] = -1;
a[i+1][j] = -1
a[i+1] [j-; 1] = -1;
a[i+1][j+1] = -1
bandera = 1
}
else
{
printf("\n ¡no se pudo cancelar! La suma de los valores circundantes es: %d\n", temp ); p>
}
}
}
si no (i ! = 0 && j == 0)/* divide por el cuarto vértice A columna*/
{
if (a[i][j+1] != -1)
temp = a[i][j + 1];
si (a[i+1][j+1] ! = -1)
temp += a[i+1][j+1] ;
if (a[i+1][j] ! = -1)
temp += a[i+1][j]
; if (a[i-1][j] != -1)
temp += a[i-1][j]
if (a[i- 1; ][j+1] ! = -1)
temp += a[i-1][j+1]
if (temp == cuadro)
p>{
a[i+1][j+1] = -1
a[i][j+1] = -1;
p>a[i+1][j] = -1
a[i- 1][j] =
a[; i-1 ][j+1] = -1;
bandera = 1
}
si no
{ p>
printf("\n no se pudo cancelar! La suma de los valores circundantes es: %d\n", temp
}
}<); /p>
}
else if (i ! = 0 && j == 6)/* Después de dividir por cuatro vértices, la séptima columna*/
{ p>
si (a[i][j-1] ! = -1)
temp = a[i][j-1]
if (a[i+1][j] ! = -1)
temperatura += a[i+1][j]
si (a[i+1][j-1] ! = -1)
temperatura + = a[i+1][j-1];
si (a[i-1][j] != -1)
temp += a[i- 1][j];
si (a[i-1][j-1] != -1)
temp += a[i-1][j- 1];
if (temp == cuadro)
{
a[i][j-1] = -1; p>a[i+1][j+1] = -1
a[i+1][j] =
a[i- 1] [j] = -1;
a[i-1][j+1] = -1
bandera = 1
} p>
else
{
printf("\n ¡no se pudo cancelar! La suma de los valores circundantes es: %d\n", temp
}
}
}
else if (i == 7 && j ! = 0)/* divide por el octavo vértice después del cuatro Línea de vértices */
{
if (a[i][j-1] != -1)
temp = a[i][j - 1];
si (a[i][j+1] ! = -1)
temp += a[i][j+1]; >
si (a[i-1][j-1] ! = -1)
temp += a[i-1][j]
si ( a[i-1][j] ! = -1)
temp += a[i-1][j]
if (a[i-1]; [ j+1] ! = -1)
temp += a[i-1][j+1]
if (temp == cuadro)
;{
a[i][j-1] = -1
a[i][j+1] = -1; > a[i-1][j] = -1
a[i-1][j-1] =
a[i-1][ j +1] = -1;
bandera = 1;
}
si no
{
printf ("\n no se pudo cancelar! La suma de los valores periféricos es: %d\n", temp
}
}
}
}
}
else
printf("El valor de \na[%d][%d] es %d , no - 1! \n\n", i,j,a[i][j]);
if ( bandera == 1)
{
printf("\n\t correcto! Aquí está el estado después de la compensación: \n");
flag = 0;
diplay(a);
}
temp = 0;
si (t == 0)
romper
t--; /p>
printf("Quedan %d/%d tiempos\n", t, to
}
return 0; p>}