Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Форматированный ввод с клавиатуры



Оператор вызова функ­ции scanf () имеет следующую структуру:

scanf (форматная_строка, список_аргументов);

 
Данная функция осуществляет чтение символов, вводимых с клавиатуры, и преобразование их во внутреннее представление в соответствии с типом величин. В функции scanf () форматная строка и список аргументов присутствуют обязательно. В програм­ме

из примера 3 имеется оператор:

scanf ("%f",&а);

Здесь "%f" - форматная строка; &а — список аргументов, со­стоящий из одного элемента. Этот оператор производит ввод чис­лового значения в переменную а.

Символьную последовательность, вводимую с клавиатуры и воспринимаемую функцией scanf (), принято называть входным потоком. Функция scanf () разделяет этот поток на отдельные вводимые величины, интерпретирует их в соответствии с указан­ным типом и форматом и присваивает переменным, содержащимся в списке аргументов.

Список аргументов - это перечень вводимых переменных, при­чем перед именем каждой переменной ставится значок &. Это знак операции «взятие адреса переменной». Подробнее смысл этого действия будет объяснен позже, а пока примем это правило формально.

Форматная строка заключается в кавычки (как и для printf) и состоит из списка спецификаций. Каждая спецификация начи­нается со знака %, после которого могут следовать

*ширина_поля модификатор спецификатор

Из них обязательным элементом является лишь спецификатор. Для ввода числовых данных используются следующие специфика­торы:

d - для целых десятичных чисел (тип int);

u - для целых десятичных чисел без знака (тип unsigned int);

f - для вещественных чисел (тип float) в форме с фикси­рованной точкой;

e - для вещественных чисел (тип float) в форме с плаваю­щей точкой.

Звездочка в спецификации позволяет пропустить во входном потоке определенное количество символов. Ширина поля - целое

положительное число, позволяющее определить число символов из входного потока, принадлежащих значению соответствующей вводимой переменной. Как и в спецификациях вывода для функ­ции printf (), в спецификациях ввода функции scanf () допус­тимо использование модификаторов h, l, L. Они применяются при вводе значений модифицированных типов:

hd - для ввода значений типа short int;

ld - для ввода значений типа long int;

lf, le - для ввода значений типа double в форме с фикси­рованной и плавающей точкой;

Lf, Le - для ввода значений типа long double в форме с фиксированной и плавающей точкой.

В программе из примера 1 все три величины а, b, с можно ввести одним оператором:

scanf ("%f%f%f",&а, &b, &с);

Если последовательность ввода будет такой:

5 3.2 2.4 <Enter>

то переменные получат следующие значения: а = 5,0, b = 3,2, с = 2,4. Разделителем в потоке ввода между различными значени­ями может быть любое количество пробелов, а также другие про­бельные символы: знак табуляции, конец строки. Только после нажатия на клавишу Enter вводимые значения присвоятся соот­ветствующим переменным. До этого входной поток помещается в буфер клавиатуры и может редактироваться.

5.4 ПОТОКОВЫЙ ВВОД-ВЫВОД В СИ++

Программируя на языке Си++, можно пользоваться средствами ввода-вывода стандартной библиотеки Си, подключаемой с

помощью заголовочного файла stdio.h, как это делалось выше. Однако в Си++ имеются свои специфические средства ввода-вывода. Это библиотека классов, под­ключаемая к программе с помощью файла iostream.h. В этой библиотеке определены в качестве объектов стандартные символьные потоки со следующими именами:

cin - стандартный поток ввода с клавиатуры;

cout - стандартный поток вывода на экран.

Ввод данных интерпретируется как извлечение из потока cin и присваивание значений соответствующим переменным. В Си++ определена операция извлечения из стандартного потока, знак которой >>. Например, ввод значений в переменную х реализует­ся оператором

cin>>х;

Вывод данных интерпретируется как помещение в стандартный поток cout выводимых значений. Выводиться могут тексты, заключенные в двойные кавычки, и значения выражений. Знак операции помещения в поток <<. Примеры использования потоково­го вывода:

cout<<а+b;

cout<<"\nРезультат="<<Y;

cout<<"х=”<<x<<" у=”<<у<<” z=”<<z<<endl;

Из приведенных примеров видно, что в выходном потоке можно использовать управляющие символы, как и при использовании функции printf (); перед каждым элементом вывода нужно ставить знак операции <<. Элемент вывода endl является так называемым манипулятором, определяющим перевод курсора на новую строку (действует аналогично управляющему символу \n).

В процессе потокового ввода-вывода происходит преобразование

из формы внешнего символьного представления во внут­ренний формат и обратно. Тип данных и необходимый формат определяются автоматически. Стандартные форматы задаются специальными флагами форматирования, которые устанавлива­ются с помощью функции setf (). Кроме того, на формат от­дельных выводимых данных можно влиять путем применения специальных манипуляторов. Здесь мы не будем подробно раз­бирать эти вопросы.

Перепишем программу из примера 3 в варианте с использова­нием потокового ввода-вывода Си++. Пример 4:

#include <iostream.h>

#include <math.h>

void main ()

{float а, b, с, p, s;

cout<<"\nа="; cin>>а;

cout<<"\nb="; cin>>b;

cout<<”\nc="; cin>>с;

р=(а+b+с)/2;

s=sqrt (р*(р-а)*(р-b)* (р-с));

cout<<"\nПлощадь треугольника="<<s;

}





Дата публикования: 2014-11-02; Прочитано: 735 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...