Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Модификаторы спецификаций преобразования





 

Общий вид модификаторов спецификаций преобразования

 

%[выравнивание][ширина][точность]символ спецификатора

его символ м о ж е т б ы т ь или нет

Хочу увидеть колонки цифр, выровненные по левому или правому краю. Стандартно – по правому, а если хочу по левому, то ставлю -.

10 10

2 2

123 123

Ширина – это количество позиций под число.

Пример: число 336

|--336|

|336--|

Если взять, например ширину: |%2d|, в этом случае для целых чисел даже с большим, чем 2 количеством разрядов, ничего не усекается, но ровных колонок не будет. Поэтому лучше брать число позиций с запасом.

%+d в этом случае число выводится обязательно со знаком + или -. Если перед d не поставить +, все равно у отрицательных чисел – будет выводиться, а перед положительными будет пробел.

%#x – печатается признак системы счисления (0 или Ох – для 8- или 16-ричной сс)

 

Точность задает количество цифр после запятой, в плавающем формате.

Например: 4,236

|%f | |4.523498|

|%4.2f | |4.52| (4- это ширина, 2 – количество знаков после запятой)

|%6.1f | |---4.5|

|%-6.1f | |4.5---|

При усечении дробной части происходит округление.

 

Для строк:

|%15s| |--строка текста|

|%-15s| |строка текста--|

Можно использовать точность и в строковых данных:

|%15.6s| |---------строка|

9 6

|%-15.6s| |строка---------|

 

%[-][ширина]d – выравнивание по влевой границе

%[-][ширина][.точность]f

%[-][+][ширина]d – целое со знаком

%[-][#][ширина][l]u(o,x) – целое без знака, выводится 0 или 0х для восьмиричной или шестнадцатиричной системы счисления

%[-][+][#][ширина][.точночть]f(e, g) - # вывод дес.точки даже при нулевой точности. По умолчанию точность 6 цифр.

Цифры - ширина поля. Если число больше, то оно выходит за ширину поля.

%4.2f - количество печатаемых цифр после запятой 2, поле шириной 4 позиции.

/%d/ /3.36/ - "выбор по умолчанию"

%2d /336/

%10d / 336/

%-10d /336 /

%f /1234.560059/ 1234.56

%e /1.234560E+03/

%4.2f /1234.56/

%3.1f /1234.6/

%10.3f / 1234.560/

%10.3e / 1.234E+0.3/

/%s/ /'Выдающееся исполнение'/ 22 c.

/%25.s / Выдающееся исполнение'/

% 25.5s / Выдаю/

%-25.5 s /Выдаю /

% d 336

% o 520

% x 150

% d -336

% u 65200 от 32768-65536 - отрицательные числа

65535- -1 65536 - 336 = 65200

 

printf (" %d %c ", 'A', 'A'); //На экране 65 A

 

2. sсanf(). Функция ввода данных с клавиатуры.

Функция scanf () предназначена для получения слова, а не строки, причем только до первого пустого символа, табуляции, новой строки.

scanf ("Управляющая строка", список аргументов);

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

Пример: scanf("%i",&x);

& -операция взятия адреса (адрес переменной х). Операцию & не пишут, когда вводят массив символов! У функции scanf нет спецификации %g, %f и %e эквивалентны. Для чтения целых чисел типа short используют %h.

Пример: scanf (“%d %d %d“, &x, &y, &z);

Домашнее задание: 1) переписать задачу с функцией переработанную с printf и scanf;

2)рассчитать: средний заработок семьи, площадь прямоугольника, объёмы фигур, решение уравнений.

 

3. Функции ввода/вывода одного символа с клавиатуры getchar(), putchar()

Если необходимо, например, ввести один символ: да или нет (Y, N), то применяю именно функцию getchar().

getchar() – в программу

getchar() – на экран.

Объявляются они в заголовочном файле stdio.h. Эти функции называют функциями буферизированного вида

# include <stdio.h>

void main()

{

char simb;

simb = getchar(); //нажмите enter

}

Код буквы будет помещен в переменную simb. Обе функции можно объединить в одну функциюgetchar(putchar());

# include <stdio.h>

void main()

{

char ch;

ch = getchar(); тоже самое

putchar(ch); putchar (getchar());

}

 

4. Функции небуфиризированного ввода с клавиатуры getch(); getche();

(прямой ввод на экран без нажатия клавиши ENTER). Объявляются в заголовочном файле <conio.h>.

char ch=getch(); // ввод без эхоотображения.

char ch=getche(); //с эхоотображением на экране.

 

9. ВВОД/ВЫВОД В ПОТОК С++

 

Система ввода/вывода – неотъемлемая часть среды программирования С++, и она занимает в языке особое место.

В заголовочном файле 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);

fflush(stdin);

printf("Введите стоимость 1 кг. яблок \n");

scantf("%f",&cost);

fflush(stdin);

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);

}

 

МАССИВЫ

 

Одномерные массивы

Массив - это набор переменных, расположенных последовательно в памяти, имеющих одно имя и отличающихся друг от друга числовым признаком. Массивы необходимы, когда имеется большой объем данных.

Каждая переменная в массиве называется элементом. Каждый элемент в массиве имеет свой индекс - уникальный порядковый номер в массиве. Обращение к элементу массива осуществляется с помощью индекса. Индекс изменяются от 0 до n-1, где n размерность массива.

Чтобы определить массив в программе, необходимо:

указать тип данных в массиве;

1) указать имя массива;

2) в [ ] указать количество элементов в массиве.

Например:

float mas [20]; - объявляет массив mas, состоящий из 20 членов или элементов. первый элемент - mas [0], последний mas - [19].

mas [5] = 32.54; присваивание значения элементу массива;

float y = mas[5]; чтение в у содержимого последнего элемента массива.

Массивы могут быть образованы из данных любого типа. Одномерные массивы называются вектором, двумерные – матрицей.

В памяти ЭВМ массив float mas[3]; представлен так:

 
 

 


4b 4b 4b

Контроль компилятором на конец массива не осуществляется. Вы записываете данные в массив дальше, выйдя за границы массива, чем можете запортить следующие данные в памяти. Контроль за этим лежит целиком на программисте.







Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор...

Живите по правилу: МАЛО ЛИ ЧТО НА СВЕТЕ СУЩЕСТВУЕТ? Я неслучайно подчеркиваю, что место в голове ограничено, а информации вокруг много, и что ваше право...

ЧТО И КАК ПИСАЛИ О МОДЕ В ЖУРНАЛАХ НАЧАЛА XX ВЕКА Первый номер журнала «Аполлон» за 1909 г. начинался, по сути, с программного заявления редакции журнала...

ЧТО ПРОИСХОДИТ, КОГДА МЫ ССОРИМСЯ Не понимая различий, существующих между мужчинами и женщинами, очень легко довести дело до ссоры...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.