2014-08-31 16 views
-3

мой счетчик, кажется, не увеличивает (для программирования C)Счетчик не увеличивающийся правильно

int ch; 
int counterX = 0; 
int counterY = 0; 

while((ch = getchar()) != EOF) { 

    if (ch == 'X'){ 
     counterX = counterX + 1; 
     } 
    if (ch == 'Y'){ 
     counterY = counterY + 1; 
     } 
} 

ива сделал некоторые испытания, и я номер для counterX и counterY не кажется расти, независимо от моего входа. Пожалуйста помоги!

+0

Код, который вы отправили, не компилируется, потому что вы пропустили определение ch, и вам не хватает скобки, охватывающей цикл while - эта скобка может иметь решающее значение. –

+0

sry это просто грубая часть моей текущей программы, у которой есть проблема. плохо отредактируйте его правильно – user2947725

+0

Попробуйте отладить код: http://ericlippert.com/2014/03/05/how-to-debug-small-programs/ – alk

ответ

1

То, что должно работы, при условии, что вы добавляете закрывающую скобу и остальную часть программы. И при условии, что вы на самом деле естьX и/или Y, появляющиеся на входном потоке.

Например, следующая полная программа:

#include <stdio.h> 

int main (void) { 
    int ch, counterX = 0, counterY = 0; 

    while ((ch = getchar()) != EOF) { 
     if (ch == 'X') 
      counterX = counterX + 1; 
     if (ch == 'Y') 
      counterY = counterY + 1; 
    } 
    printf ("X = %d, Y = %d\n", counterX, counterY); 
    return 0; 
} 

будет, при запуске с echo XYZZY | testprog, выход:

X = 1, Y = 2 

Как и в сторону, если вы достаточно хороший C кодеру используйте:

while ((a = something) == somethingElse) 

, вы должны, вероятно, знать и о сокращении counterX++ :-)

+0

Да, я плохой, я забыл вывести свой вывод в мой цикл. thx anyways – user2947725

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