Неисправность scanf printf в C++, отрывок кода из «Соревновательного программирования 4»C++

Программы на C++. Форум разработчиков
Anonymous
Неисправность scanf printf в C++, отрывок кода из «Соревновательного программирования 4»

Сообщение Anonymous »

В 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

Вернуться в «C++»