zz_c_02-3-FirstProgram03

Итак, мы смогли что-то посчитать и это что-то напечатать. Одна проблема - данные, с которыми мы работаем, жестко заданы в программе. Значит, и результаты всегда будут те же самые. Для расчета новых данных нужно исправлять, а затем перекомпилировать программу. Такое положение дел не может нас устраивать. К счастью, мы его сейчас исправим – изучим функцию, которая позволяет вводить данные во время работы программы. Тогда одна и та же программа сможет работать на разных данных. Для примера напишем программу-конвертор, которая будет переводить рубли в условные единицы по курсу 30 рублей за единицу. Итак, вот программа: code format="c" /*convertor program*/
 * 1) include 

int main(void) {   int r, u;    printf ("\nInput roubles amount "); scanf("%d", &r); u=r/30; printf("UE amount=%d",u); return 0; } code Смотрим - что в программе новенького? Одна строка, вызов функции. Именно эта функция осуществляет ввод с клавиатуры. Ее параметры – строка формата и список переменных, в которые будут вводиться данные. Формат мы уже видели, и помним, что это формат для целого числа. А что это за птичка перед именем переменной ? Это операция взятия указателя. include page="zz_c_02-3-2-pointers" editable="true" Ладно. Запускаем. Работает? Пробуем ввести 45 рублей. По идее должно получиться 1.5, но печатается 1. Кто нас обманывает? Мы сами. Компьютер обладает забавным свойством – он делает именно то, что мы ему приказали. А не то, что мы ДУМАЛИ приказать. Наши переменные имеют тип (целые). При делении целых чисел в С получается целый результат: > 45/30 => 1 Пора изучить следующий тип данных. include page="zz_c_02-3-3-typesFormats" editable="true" У нас это будет - вещественное число двойной точности, для краткости просто "вещественное". Все изменения, которые потребуется внести в программу - это поменять тип на  и поменять строку формата в функциях  и. Формат будет Проверяем. Вводим 45, получаем: 1.500000 Вводим 50, получаем: 1.666667 Цифр после запятой явно многовато. Это лечится изменением строки формата в операции печати: (в общем виде -, число  – общая длина, число  – цифр после запятой). Получаем: 1.67 Считаем задачу решенной.