В CP4 есть постановка задачи, требующая N входных данных формата «0,123...», где ввод заканчивается на «...». По окончании ввода программа должна вывести введенное число с плавающей запятой (без трех точек).
Данное решение проблемы было следующим:
Код: Выделить всё
#include
using namespace std;
int main() {
int N;
scanf("%d\n", &N);
while (N--) {
char x[110];
scanf("0.%[0-9]...\n", &x); //some compilers gave me an error over '&'
printf("the digits are 0.%s\n", x);
}
return 0;
}
Однако вместо ожидаемого результата цикл выполняется N+1 раз и отображается следующим образом:
Код: Выделить всё
3
0.1227...
0.517611738...
the digits are 0.1227
0.7341231223444344389923899277...
the digits are 0.517611738
....
Я попробовал переписать scanf в цикле while без символа новой строки \n. Это решило проблему с кодовыми блоками, но не с vscode (или любым другим компилятором, если уж на то пошло), поскольку в конечном итоге цикл while завершался после первого ввода и выводился N дубликатов первого вывода.
Какое исправление, если таковое имеется, позволит коду работать должным образом?
Подробнее здесь:
https://stackoverflow.com/questions/781 ... gramming-4