Par empezar el tipo de dato de la variable Dato es double no Int, no puedes o mas bien vas a tener errores por guardar un dato entero cuando realemnte esperas un tipo de dato flotante o double.
Segundo segun veo tu Screenshot.
for (int i = dato; i < 8; i++)
{
variable = variable + cartas[i];
}
Iguales i al valor de dato pero cuando realizas una Operacion en dato como:
dato = 7.5 - puntosMaquina;
El resultado no va a ser siempre el que esperes, a no ser que estes 100% seguro que la operacion siempre va a devolver un numero entero.
ahora el error que te aparece es que estas tratando de acceder a una region de memoria no valida, ya sea que te excediste del limite del arreglo o la variable cartas es apuntador No valido. (Cosas que no podemos saber por que no tenemos acceso al resto del codigo.
Te recomiendo colocar Mejores nombres a tus variables por que los nombres de "dato" y "variable" son muy escuetos.
Saludos