2013-06-27 4 views
-1

Я изучил Objective-C до C, и теперь, когда я возвращаюсь к C, я не понимаю, почемувнутри петель не работает? Может ли кто-нибудь мне посоветовать?Почему printf не работает в моей программе (Промытая промывка)

Программа является первым вызовом в книге «Проблемы программирования» Лекена и Ревилла, если кто-то задается вопросом.

#include <stdio.h> 
#include <stdbool.h> 

static int inputInt; 
static int secondInt; 
int returnCycleNumber(int givenNumber); 

int returnCycleNumber(int givenNumber) { 
    bool initial = true; 
    int counter = 1; 

    do 
    { 
     if (givenNumber % 2 != 0) 
     { 
      givenNumber = givenNumber * 3 + 1; 
      counter = counter + 1; 

      printf("\n%i", givenNumber); 
     } 
     else 
     { 
      givenNumber = givenNumber/2; 
      counter = counter + 1; 

      printf("\n%i", givenNumber); 
     } 

     if (givenNumber == 1) { 
      initial = false; 
     } 

    } while (initial == true && givenNumber > 1); 

    return counter; 
} 

int main(int argc, const char * argv[]) 
{ 
    scanf("%i %i", &inputInt, &secondInt); 
    fflush(stdout); 

    int arrayCount[secondInt]; 

    for (int counter = 0; counter == (secondInt - inputInt); counter++) { 
     arrayCount[counter] = returnCycleNumber(inputInt + counter); 
    } 

    printf("\n%i", arrayCount[1]); 


    return 0; 
} 
+2

Я подозреваю, что если вы использовали отладчик и ступил через него вы бы увидели, что проблема была. –

ответ

3
counter == (secondInt - inputInt) 

Вы хотите! = Или <

+0

черт возьми, я просто так долго смотрел на все остальное, кроме этого :( –

0

Попробуйте

for (int counter = 0; counter < (secondInt - inputInt); counter++) {