Почему мой вложенный для / do-while l oop для сортировки по массиву не выводит мои окончательные отпечатки в C? - PullRequest
0 голосов
/ 14 апреля 2020

Почему я не могу заставить этот l oop остановиться? Мой трекер - это массив, заполненный случайным числом элементов в диапазоне от 1 до 10. Допустим, размер этого массива равен 50. Я хочу проверить, что все значения от 1 до 10 находятся в массиве, проверяя запись, когда номер появляется первым в массиве. Я также хочу отслеживать наибольшее значение для записи и сохранять его как numberOfHops, и поэтому, если все числа находятся в массиве, вывод должен быть numberOfHops.

#include <stdio.h>
#include <stdlib.h>

int main()
{
 int i, k, m, entry = 0, numberOfHops = 0;
 const int L = 10;
 int tracker[50] ={1, 2, 3, 2, 1, 10, 9, 8, 7 , 6 //etc etc//};
 int sitesVisited = 0; 
for (k =1; k<=L; k++ )
    {   do {
        m=0;
        if (k == tracker[m])
        {
            sitesVisited += 1;
            entry = m;
        }
        if (entry > numberOfHops)
        {
            numberOfHops = entry;
        }
        m++;
    } while (sitesVisited < k); 
    }
if (sitesVisited == L) {
    printf("Particle took %d hops to explore environment.\n", numberOfHops);
}
else {
    printf("Particle did not explore entire environment.");
}
}

1 Ответ

1 голос
/ 14 апреля 2020

Проблема в m=0; строке. Вы должны объявить это до начала do { цикла. Каждый l oop вы инициализируете его с 0 вместо увеличения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...