2013-11-23 3 views
0

В основном, я пытаюсь спросить, есть ли в любом случае, чтобы читать вперед в массиве, чтобы вы могли создать для него «случай».Прочитайте в массиве, чтобы предсказать более поздние результаты в C

Для бывших: Вы массив имеет только целые числа, такие как: 0 0 0 0 4 0 1 0 0 0 0 0 0 0 0 0 0 0 0 3

и что вы хотите, чтобы попытаться сделать, это создать coutdown до следующего ненулевого номера. В основном отобразите обратный отсчет. Есть какой-либо способ сделать это?

+2

Пожалуйста, объясните больше! я не понимаю ... – MeNa

+0

В основном я хочу отобразить обратный отсчет, который требуется до следующего ненулевого номера , для первого случая ... пока он не достигнет числа «4», покажите обратный отсчет от первого 0 до этого 4 так 4,3,2,1 «фактическое число». Тогда из этого 4 до 1 будет только 1 ноль so: 1, «фактическое число» и т. Д. –

+0

Ну, вам разрешено читать массив несколько раз? Какова цель вашей программы? –

ответ

1

Этот код:

#include <stdio.h> 

int main(void) 
{ 
    int array[] = { 0, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, }; 

    int a_size = sizeof(array)/sizeof(array[0]); 

    int i = 0; 
    while (i < a_size) 
    { 
     if (array[i] == 0) 
     { 
      int j; 
      for (j = i; j < a_size; j++) 
       if (array[j] != 0) 
        break; 
      printf("%d\n", j - i); 
      i = j; 
     } 
     else 
      i++; 
    } 
    return 0; 
} 

производит этот выход:

4 
1 
12 

Если это то, что вы хотите, это примерно то, что вам нужно. Если это не то, что вы хотите, вам нужно более четко объяснить, что именно вы хотите.


Пересмотренный код пересмотренного ожидаемого результата:

#include <stdio.h> 

int main(void) 
{ 
    int array[] = { 0, 0, 0, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, }; 

    int a_size = sizeof(array)/sizeof(array[0]); 

    int i = 0; 
    while (i < a_size) 
    { 
     if (array[i] == 0) 
     { 
      int j; 
      for (j = i; j < a_size; j++) 
       if (array[j] != 0) 
        break; 
      int k = j - i; 
      while (k > 0) 
       printf(" %d", k--); 
      i = j; 
     } 
     else 
     { 
      printf(" '"); 
      i++; 
     } 
    } 
    putchar('\n'); 
    return 0; 
} 

Пересмотренный выход:

4 3 2 1 ' 1 ' 12 11 10 9 8 7 6 5 4 3 2 1 ' 
+0

Ах, вроде. 12 Я представляю себе общий размер arr (20) - 4 - 3 - 1 = 12. Я попытаюсь объяснить это немного лучше: Couter: 4 3 2 1 '1' 12 11 10 9 8 7 6 5 4 3 2 1 ' массив: 0 0 0 0 4 0 1 0 0 0 0 0 0 0 0 0 0 0 0 3 Есть ли способ представить это? –

+0

12 - количество нулей между 1 и 3 в массиве (по крайней мере, так оно рассчитывается). Это также длина (20) минус длины других двух наборов нулей, минус число ненулевых. Да, попробуйте еще раз объяснить, что вы хотите (отредактируйте вопрос - в основном добавляя информацию), и как вы определяете ответ, и ожидаемый ответ для данных. –

 Смежные вопросы

  • Нет связанных вопросов^_^