Red de conocimiento informático - Conocimiento del nombre de dominio - ¡80 puntos en programación C! Gracias~ gente de buen corazón por ayudar a mi pequeña hija...

¡80 puntos en programación C! Gracias~ gente de buen corazón por ayudar a mi pequeña hija...

El problema no está claro

¿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++)

{

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()

{

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)

{

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)

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

}

}

}

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

{

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*/

{

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

}

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>}