Функции небуфиризированного ввода с клавиатуры
(прямой ввод на экран без нажатия клавиши ENTER). Объявлены в заголовочном файле <conio.h>.
char ch=getch(); // ввод без эхоотображения.
char ch=getche(); //с эхоотображением на экране.
8.6. Ввод/вывод в поток в С++
Система ввода/вывода – неотъемлемая часть среды программирования С++, и она занимает в языке особое место.
В заголовочном файле iostream.h содержаться следующие объявления одного потока ввода и трех потоков вывода:
extern istream_withassign _Cdecl cin; //Объект потока ввода
extern ostream_withassign _Cdecl cout; //Объект потока вывода
extern ostream_withassign _Cdecl cerr; //Объект потока вывода ошибок
extern ostream_withassign _Cdecl clog; //Объект буферизованного потока вывода ошибок
Поток является промежуточным звеном между программой и устройством ввода и вывода. Поток может быть присоединён к различным устройствам: консоли, принтеру, фиктивному устройству, а так же к файлам на диске.
cin >> v; // Прочитать из стандартного потока ввода
cout << v; // Записать в стандартный поток вывода
Обычно стандартный поток вывода cout присоединен к экрану терминала. Простейшая программа, использующая операцию вывода, имеет следующий вид:
#include <iostream..h>
void main(void)
{
cout << “Hello, world!”;
}
Приоритет операций << и >> позволяет помещать в оператор вывода арифметические выражения, не прибегая к использованию скобок, зато при использовании логических выражений или операций присваивания скобки использовать необходимо:
cout << “x+y =” << x+y <<”; x&y =” << (x&y) << “\n”;
Для ввода данных в программу используется стандартный поток ввода. Он имеет много общего с выводом данных. Обычно стандартный поток ввода соединен с клавиатурой cin.
int i;
float y;
cin >> i >> f ;
Форматирование вывода
Для форматирования вывода можно установить несколько флагов, для этого используются функции-члены setf, unsetf.
unsigned v =12345;
cout << "Before: " << v << endl;
cout.setf(cout.hex); //Модификация потока
cout << "After: " << v << endl;
Для форматирования можно подключить заголовочный файл Iomanip.h, тогда используем манипуляторы
cout << "In hexadecimal v == " << hex << v << endl;
cout << "In decimal v == " << dec << v << endl;
ends вставить нулевой завершающий символ в строку
endl начать новую строку
oct 8-ричная система счисления
Для выравнивания по правому краю целочисленных переменных можно задать: cout.width(8); но он не оказывает влияние на следующее выводимое значение.
Заключительная программа
Задача. Три бригады собирают в саду яблоки. Написать программу учета сбора яблок каждой бригадой. Определить, сколько яблок было собрано за день и средний заработок в каждой бригаде.
# include <stdio.h>
# include <conio.h>
void main (void) {
int worker1, worker2, worker3; //Кол-во человек в бригадах
int weight1, weight2, weight3; //Вес яблок
char ch;
float cost; //Стоимость яблок
int num, w; //Номер бригады и вес яблок
clrscr();
weight1 = weight2 = weight3 = 0;
printf("Введите количество студентов в каждой бригаде\n");
scanf ("%d %d %d",&worker1,&worker2,&worker3);
printf("Введите стоимость 1 кг. яблок \n");
scantf("%f",&cost);
for(;;) {
printf("В. номер бригады и количество собранных яблок\n");
scanf("%d %d",&num,&w);
switch (num) {
case 1:
weight1 += w;
break;
case 2:
weight2 += w;
break;
case 3:
weight3 += w;
break;
default:
printf("Вы неверно ввели номер бригады\n");
}
printf("Для окончания нажмите клавишу q\n");
ch = getche();
if (ch == 'q')
break;
}
printf("Собрано яблок \n");
printf("1 б-й = %d, 2 б-й = %d, 3 б-й = %d\n”, weight1,weight2,weight3);
printf("Всего за день собрано %d яблок\n ",weight1+weight2+ weight3);
printf("Заработок в 1-й бригаде=%f\n", (float)weight1*cost/worker1);
printf("Заработок в 2-й бригаде=%f\n", (float)weight2*cost/worker2);
printf("Заработок в 3-й бригаде=%f\n", (float)weight3*cost/worker3);
}
МАССИВЫ
Одномерные массивы
Массив - это набор переменных, расположенных последовательно в памяти, имеющих одно имя и отличающихся друг от друга числовым признаком.
float mas [20]; - объявляет массив mas, состоящий из 20 членов или элементов. 1 элемент mas [0], последний mas [19].
mas [5] = 32.54; присваивание значения элементу массива
float y = mas[5];
Массивы могут быть образованы из данных любого типа. Одномерные массивы называются вектором, двумерные – матрицей.
4б 4б 4б
Обращение к элементу массива осуществляется с помощью индекса. Индекс изменяются от 0 до n-1, где n размерность массива.
Для работы с массивами часто используются циклы.
#include <stdio.h>
void main (void) {
int i, a[10];
for (i=0; i<10; i++)
scanf (" %d",&a[i]); //ввод с клавиатуры
printf ("Вывести следующие результаты \n");
for (i=0; i<10; i++)
printf (" %5d", a[i]); // вывод на экран.
}