2015-10-23 2 views
-1

Я пишу программу для игры в блэкджек, и одна из функций вычисляет счет. Он принимает вход, который является структурным массивом карт, а одним из атрибутов является значение (для туза значение равно 11). Моя функция должна определить, превышает ли сумма значений 21 и если 1 из карт - туз, тогда значение туза изменяется на 1. Может ли кто-нибудь помочь мне понять это, пожалуйста?MATLAB Структура массив blackjack

for index=1:length(input) 
    if(input(input).value == 11) 
     input(index).value = 1; 
    end; 
end; 
+0

'input (input)' в критериях 'if' должно быть' input (index) '. Вычислите сумму в том же цикле 'for', аккумулируя каждое значение по мере их циклизации. –

ответ

0

Вы не суммируете карты в своем первоначальном фрагменте. У вас также есть опечатка в input(input), я думаю, что это должно быть input(index). Если вы хотите сделать это с цикл, как у вас есть, вы могли бы сделать что-то вроде этого:

total = 0; 

for index=1:length(input) 
    if(input(index).value == 11) 
     input(index).value = 1; 
    end; 

    total = total + input(index); 
end; 

Чем больше MATLAB способ делать вещи было бы избежать петли с помощью sum встроенной команды.