Моя программа вылетает, когда она достигает этой функции в моем коде. Я напечатал массивы в функции, которые идут и прокомментировал все остальное, и они правильно передаются. Я не могу понять, почему он падает здесь.Изменение значения элементов в массиве в C
Массивы представляют собой номера в порядке возрастания.
Возможно, мои петли или заявления недействительны? Я думаю, может быть, я неправильно меняю значение в массиве по индексу «d», когда он достигает attackerArmy[d] = '0'; //represent 0 as defeated
?
long int defeatedArmies(long int* attackerArmy, long int* defenderArmy, long int size){
long int i,j,defeated = 0,d;
for(i=0;i<size;i++){
for(j=0;j<size;j++){
//loop for the highest attack value that is lower than defender
if(attackerArmy[j] < defenderArmy[i])
d = j; // save the index where it is highest
if(attackerArmy[j] > defenderArmy[i])
//no point in checking unnecessary values
break;
}
attackerArmy[d] = '0'; //represent 0 as defeated
}
for(i=0;i<size;i++){
if(attackerArmy[i] == 0) //count how many defeated armies happened
defeated++;
}
return defeated;
}
ах да, не думал об этом. есть одно исправление. он пока не падает. Но теперь, когда я пытаюсь напечатать новый массив (attackerArmy), где некоторые вещи могут быть обнулены после того, как он покинет первые два цикла. Он заполнен множеством разных чисел, которые не были в любом массиве до – Hispazn
@Hispazn Это звучит как другая проблема. Это новый номер 48 (0x30)? Вы имели в виду «0», а не 0 или «\ 0» в строке атакующегоArmy [d] = '0' ;? –
да: O и вы можете объяснить мне разницу между «0» и «0»? Я знаю, что \ 0 - всего лишь нулевой символ, да? – Hispazn