Написал программу на c++, почему то не выполняется вторая часть программа. Помогите отладить ее пожалуйста.
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
Выражение
'0'<=a[i]<='9'
будет всегда даватьtrue
, поскольку сначала выполнится'0'<=a[i]
и дастtrue
илиfalse
, а затем выполнитсяtreu<='9'
илиfalse<='9'
соответственно. Булево значение в контексте выражения будет приведено к типуchar
: т.е. к'\1'
или'\0'
, что всегда меньше'9'
.Правильный оператор будет выглядеть так:
Выражение
k=j*100/s;
не будет работать правильно, поскольку, учитывая контекст, деление целочисленное. Счётчики могут быть целочисленными, но вычисление и результат (проценты) должны быть с плавающей точкой: типаdouble
илиfloat
. Т.е.Фигурные скобки во «второй части» программы не нужны. Переменная
s
здесь тоже не нужна.Кстати, для этой программы массив тоже не нужен. Хватит простой переменной типа
char
для приёма символа из стандартного ввода.