Автор работы: Пользователь скрыл имя, 29 Октября 2013 в 12:08, лекция
В спецификаторах формата функции printf после символа % можно указывать число, задающее минимальную ширину поля вывода, например, %5d – для целых, %4.2f – для вещественных (означает поле общей шириной 4 символа, две цифры после запятой). Недостающие позиции будут слева заполнены пробелами (если нужно заполнить их нулями, перед шириной поля надо поставить символ '0' , например: %05d ). Если, наоборот, указанных позиций не хватает для вывода целой части числа, то происходит автоматическое расширение поля до нужной ширины.
При этом целая переменная получит значение, равное количеству успешно введенных объектов ввода. Например, после выполнения оператора
n=scanf("%lf%lf%lf", &x,&y,&z);
значение n будет от 0 (ничего не прочтено) до 3 (при успешном вводе).
Отдельные символы вводятся при помощи функции getch(). Причем простой ее вызов - getch(); - организует паузу, при которой система программирования приостановит выполнение программы и будет ждать нажатия любой клавиши. Так поступают в том случае, когда нужно просмотреть какие то результаты работы, при выводе их на экран монитора.
Если же использовать ее в правой части операции присваивания, например:
char c;
. . .
c = getch();
то символьная переменная с получит значение символа (кода) нажатой клавиши.
С началом работы консольной
программы автоматически
Внимание. Ввод данных функциями gets(), getch() выполняется с использованием потока stdin. Если указанная функция не выполняет своих действий (проскакивает), перед ее использованием необходимо очистить поток (буфер) ввода с помощью функции
fflush(stdin);
Отметим, что не гарантируется одновременная работа функций ввода-вывода и потокового ввода-вывода; однако на практике они конфликтуют редко.
5.5. Ввод-вывод в оконных приложениях.
Для ввода-вывода в оконных приложениях C++ Builder'a используются различные компоненты (Memo, Edit, Label и др.) Например, ввод-вывод в Edit осуществляется обычно через операцию присваивания:
Edit1->Text=IntToStr(k);
X:=StrToFloat(Edit2->Text);
а вывод в Memo - через метод Add() :
Memo1->Lines->Add("x="+
При этом обычно используются функции преобразования типов C++ Builder'a:
Функция |
Направление преобразования |
Пример |
StrToInt() |
String à int |
k=StrToInt (Edit1->Text); |
IntToStr() |
int à String |
Edit1->Text= IntToStr(k); |
StrToFloat() |
String à double |
x= StrToFloat (Edit1->Text); |
FloatToStr() |
double à String |
Edit1->Text= FloatToStr(x); |
FloatToStrF() |
double à String |
Edit1->Text=FloatToStrF(x, ffFixed, 15, 8); |
В функции FloatToStrF(), в отличие от функции FloatToStr(), задается максимальное общее количество цифр в числе (которое поэтому лучше задавать побольше, например, 15) и количество цифр после запятой. Второй параметр может принимать лишь одно из нескольких допустимых значений, имеющих смысл, подобный спецификаторам формата printf() (ffFixed - %f, ffExponent - %e, ffGeneral - %g и т.п.).
В русской версии Windows в функциях StrToFloat(), FloatToStr(), FloatToStrF() дробная часть числа отделяется от целой запятой; а в английской версии Windows - точкой.
Советы по программированию
1. Выбирайте тип для переменных с учетом диапазона их возможных значений и требуемой точности представления данных.
2. Старайтесь давать переменным ID (имена), отражающие их назначение.
3. При вводе данных с клавиатуры выводите на экран пояснения: что нужно ввести, т.е. организуйте диалог. Для контроля сразу же после ввода выводите исходные данные на дисплей (хотя бы в процессе отладки).
4. При составлении выражений учитывайте приоритет используемых операций.
5. В функциях ввода/вывода printf и scanf для каждой переменной указывайте спецификацию формата, соответствующую ее типу. Не забывайте ставить '&' перед каждой переменной в функции scanf.
7. При использовании стандартных функций требуется с помощью директивы препроцессора #include подключить к программе соответствующие заголовочные файлы. Установить, какой именно файл необходим, можно с помощью справочной системы.
8. Данные при вводе разделяйте пробелами, символами перевода строки или табуляции, но не запятыми (если в управляющей строке scanf() вы не задали иное).
Информация о работе Основные принципы составления блок-схем и алгоритомов