Я пытаюсь прочитать 3 поплавка. Я пытался сделать это с помощью чисел с плавающей и двойной, но я получаю одинаковое поведение с обоими.
Пример ввода:
3 1 2
32.0 54.7 -2
3 целых числа в первой строке, 3 числа с плавающей точкой во второй строке:
Как я читаю:
vector<int> order;
vector<double> numbers;
unsigned int order_number;
double number;
char input_character;
while (true)
{
scanf("%d", &order_number);
order.push_back(order_number);
scanf("%c", &input_character);
if (input_character == ' ')
continue;
else
break;
}
while (true)
{
scanf("%lf", &number);
numbers.push_back(number);
scanf("%c", &input_character);
if (input_character == ' ')
continue;
else
break;
}
printf("%d %d %d\n", order[0], order[1], order[2]);
printf("%lf %lf %lf\n", numbers[0], numbers[1], numbers[2]);
При их печати я получаю:
32.000000 54.700000 -2.000000
Я просто хотела 32.0
, 54.7
а также -2
, Я знаю, что могу указать, сколько десятичных знаков печатать с %.x
, но мне нужно напечатать столько, сколько было дано мне на входе.
Кроме того, те while (true)
есть петли, потому что я не знаю, сколько номеров я собираюсь получить.
То, что вы хотите, невозможно с простыми типами с плавающей точкой.
Если вы хотите напечатать числа с тем же количеством знаков после запятой, что и для ввода, вам необходимо:
Когда вы используете scanf("%d",...)
он читает символы и разбирает их в int
,
Если вы хотите показать их при вводе, вы должны сохранить их как строки.
И если вам нужно использовать их как double
затем преобразовать их в числа.