рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

ФОРМАТИРОВАННЫЙ ПОТОКОВЫЙ ВВОД-ВЫВОД.

ФОРМАТИРОВАННЫЙ ПОТОКОВЫЙ ВВОД-ВЫВОД. - раздел Философия, Лекция 1. Объектно-ориентированное программирование – это новый подход к программированию. Объектно- ориентированные языки обладают свойством   В Примерах Программ Рассмотренных Выше, Использовались Операц...

 

В примерах программ рассмотренных выше, использовались операции помещения в поток << , например в стандартный поток вывода cout и операцией извлечения из потока >>, применяемой к стандартному потоку ввода cin. Для того, чтобы сделать потоковый ввод-вывод форматированным можно использовать функции width и precision.

Функция width задает ширину поля вывода. Общая форма ее использования с потоком cout :

cout. width (n) где n- ширина поля вывода, то есть количество позиций для вывода числа.

 

После каждого использования вывода значение ширины поля отбрасывается, так что перед каждым выводом нужно устанавливать ее заново. Если выводимое число оказывается меньше отведенного поля, то поле заполняется слева пробелами по умолчанию. Изменить символ-заполнитель позволяет функция fill() Общий вид вызова которой:

cout.fill('символ-заполнитель');

Функция precision() определяет количество значащих цифр для чисел с плавающей точкой. Общая форма ее использования с потоком cout :

cout.precision (m) где m – количество значащих цифр (десятичная точка не учитывается). Результат вычислений округляется. В отличие от функции width назначенное значение функции precision не отбрасывается после каждого вывода и сохраняет свое значение до следующего использования. Поэтому несколько операций вывода могут использовать одну и ту же назначенную точность.

 

Пример:

 

#include <iostream.h>

main()

{

int i;

float j;

double k;

i=45;

k=3;

j=7.56778;

cout<<" i"<<i<<" j"<<j<<" k"<<k;

cout<<"n";

cout.fill('*');

//По умолчанию символом-заполнителем является пробел. Изменить

//данное значение позволяет функция fill:

//сохраняет свое значение для всех cout пока не будет переопределена

cout.width(3);cout<<i; //нужно ставить перед каждым cout

cout.fill(' ');

cout.width(3);cout<<k;

//если число больше заданного поля, то оно выводится целиком

cout<<"n";

cout.precision(4);cout<<j;

k=i/j;

cout<<"n";

cout<<k;

cout<<"n";

}

 


Ответы к заданиям для самоконтроля:

 

Глава 1 задание 1:

Написать программу выполняющую операции с комплексными числами сложение, вычитание, умножение, деление (+,-,*,/)

 

Возможный текст программы выполняющей арифметические действия с комплексными числами:

#include<iostream.h>

#include<math.h>

class komplex

{

// начало определения класса komplex

public:

float a2,b2,a1,b1,otva,otvb;

char sign;

void input(void)

{

cout<<"nBвeдитe вещественную часть a- пepвoгo чиcлa ";

cin>>a1;

cout<<"Bвeдитe мнимую часть b- пepвoгo чиcлa ";

cin>>b1;

cout<<"Bвeдитe вещественную часть a- втopoгo чиcлa ";

cin>>a2;

cout<<"Bвeдитe мнимую часть b- втopoгo чиcлa ";

cin>>b2;

cout<<"Bвeдитe знaк oпepaции ";

cin>>sign;

}

void vivod(void)

{

if(otvb>0)sign='+'; else sign=' ';

cout<<otva<<sign<<otvb<<'i';

}

void plus_m(void)

{

if(sign=='-')

{

a2=a2*(-1);

b2=b2*(-1);

cout<<"Paзнocть двyx кoмплeкcныx чиceл paвнa ";

}else

cout<<"Cyммa двyx кoмплeкcныx чиceл paвнa ";

otva=a1+a2;

otvb=b1+b2;


vivod();

}


ch()

{

otva=a1*a2-b1*b2;

otvb=a1*b2+b1*a2;

if(sign=='*')

cout<<"Пpoизвeдeниe двyx кoмплeкcныx чиceл paвнo ";

else

{

otva=(a1*a2+b1*b2)/(pow(a2,2)+pow(b2,2));

otvb= (a2*b1-a1*b2)/(pow(a2,2)+pow(b2,2));

cout<<"Чacтнoe двyx кoмплeкcныx чиceл paвнo ";

}

vivod();

}

};// конец определения класса komplex

main()

{

komplex kom;

kom.input(); // вызов функции ввода, принадлежащей классу komplex

switch (kom.sign) // Переменная класса komplex

{

case '+':

case '-':kom.plus_m();break;

case '*':

case '/':kom.ch();break;

}

}

 

Глава 2 задание 1:

 

В результате работы приведенной программы будет выведено:

 

min 1=3

min 2=5

min 3=7

min 4=7

так как цикл выполнится 4 раза после выполнения подстановки строка присваивания должна вычисляться как: rslt=((++num1)<(num2)?(++num1): (num2));

Переменная num1 увеличивается на единицу дважды: один раз при выполнении сравнения и второй раз при вычислении результата условной операции.

 


Глава 4 задание 1:

 

В результате работы приведенной программы выведется:

7 и 4= 4

7 или 4= 7

7 исключающее или 4= 3

4 сдвиг влево на 2 = 16

7 сдвиг вправо на 2 = 1

4 сдвиг влево на 5 = -128

4 сдвиг влево на 6 = 0

kk=ii<<5;//бит знака равен 1 поэтому получаем -128

kk=ii<<6;//1 ушла за пределы байта

 

Глава 5 задание 1:

 

Написать программу и создать ее в файле под именем prim.exe

используя аргументы функции main составить программу так, чтобы в результате выполнения следующей команды в командной строке

>prim вы справились

на экран вывелось сообщение :

хорошо! вы справились с заданием.

 

Текст программы может быть следующим:

// файл prim.exe

#include <iostream.h>

#include <stdlib.h>

main(int argc, char *argv[])

{

int i,j,k;

//при запуске без аргументов передается 1 параметр

if (argc<2) cout<<"вы забыли набрать аргумент";

else

{

cout<<"n Хорошо! "; //в нулевом аргументе argv[0] хранится полное имя файла for(i=1;i<=argc;i++)

cout<<argv[i]<<" ";

cout<<” с заданием”;

}

}

 



Глава 6 задание 1:

 

Программа выдаст следующий результат:

di= 1

di= 1.5

di= 2.33333

di= 4.25

di= 5.6

 


Глава 7 задание 1:

 

Приведенная программа выдаст следующий результат:

 

начальные значения переменных: i=10 c=A x=10.2

значения после вызова функций: i=11 c=B x=11.2

 

Глава 7 задание 2:

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

Возможный текст программы:

 

#include <iostream.h>

#include <string.h>

void summ(int &i, int &j)

{

i=i+j;

}

void summ(double &x, double &y)

{

x=x+y;

}

void summ(char *c,char *a)

{

strcat(c,a);/*функция слияния двух строк добавляет к содержимому первой строки содержимое второй строки. Возвращает указатель на первую строку. Функция предполагает, что первая строка достаточного размера чтобы вместить результат слияния/

}


main()

{

char c[15]="WIN",a[]="DOW"; int i=10,j=11; double x=10.2,y=14.45;

cout<<"n начальные значения переменных:";

cout<<" i="<<i; cout<<" c="<<c; cout<<" x="<<x;


summ(i,j); // Вызов функции для сложения величин целого типа

summ(c,a); // Вызов функции для сложения величин вещественного типа

summ(x,y); // Вызов функции для сложения величин символьного типа

cout<<"n значения после вызова функций:";


cout<<" i="<<i; cout<<" c="<<c; cout<<" x="<<x;

}

 


Результат выполнения программы:

начальные значения переменных: i=10 c=WIN x=10.2

значения после вызова функций: i=21 c=WINDOW x=24.65

 


В тексте программы использована функция для работы со строками strcat() – конкатенация, означающая последовательное присоединение строк друг другу. (прототип находится в string.h) Результатом ее применения в следующем примере:

char str[80]="Borland ";

strcat(str," C++");

cout<<"n"<<str;

будет вывод:

Borland C++

Если из присоединяемой строки нужно взять только несколько символов, а не всю строку целиком, можно использовать функцию strncat() той же библиотеки, которая третьим параметром принимает количество символов из присоединяемой строки. Например результатом работы следующей функции:

char c[15]="WIN",b[]="CHESTERTON";

strncat(c,b,7); /* Значение третьего параметра 7, значит из второй строки будут взяты только 7 первых символов */

cout<<c;

Вывод будет таким:

WINCHESTER

 


Глава 8 задание 1.

 

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

 

Возможный текст программы:

 

#include <iostream.h>

long Proiz(int n, ...);

void main (void)

{

long PR;

PR = Proiz(5, 1, 2, 3, 4, 5 );

/* Вызвали функцию с 6 параметрами. Единственный обязательный параметр (первый в списке) определяет количество передаваемых параметров. */

cout << PR << endl;

}

long Proiz(int n ...)//запятую в списке параметров можно опустить

{

int *p = &n;

// область памяти с параметрами...

int P= 1;

for (int i=1 ; i<=n; i++) P*=*(p+i);

return P;

}



– Конец работы –

Эта тема принадлежит разделу:

Лекция 1. Объектно-ориентированное программирование – это новый подход к программированию. Объектно- ориентированные языки обладают свойством

ВВЕДЕНИЕ... Приступая к изучению более сложных конструкций языка С следует прежде всего повторить тот материал который был...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: ФОРМАТИРОВАННЫЙ ПОТОКОВЫЙ ВВОД-ВЫВОД.

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Имя_объекта.имя_элемента
x1.real=dim[3].real=1.45;   Класс может иметь столько объектов сколько необходимо, так же как и любая функция. Объекты могут быть любого тип

Имя объекта.имя функции();
Пример: #include<iostream.h> class rec { private: double len; double wid; public: double Len(){ return len/100;}

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

Директивы препроцессора.
  Препроцессор(макропроцессор) - это составная часть стандартного пакета языка Си, которая обрабатывает исходный текст программы до того, как он пройдет через компиля

Включение файлов.
  Директива #include включает в текст программы содержимое указанного файла. Эта директива имеет две формы:   #include "имя файла&

Условная компиляция.
  Условные конструкции препроцессора позволяют компилировать или пропускать часть программы в зависимости от выполнения некоторого условия. Условие может принимать одну из описываемых

ВНУТРЕННЕЕ ПРЕДСТАВЛЕНИЕ ЦЕЛЫХ ТИПОВ ДАННЫХ.
  Беззнаковые данные хранятся в оперативной памяти просто, чтобы узнать какое число хранится в данном байте или в слове необходимо выписать значения всех его битов и считать, что это

Доступ к отдельному биту.
  Одним из методов, позволяющих доступ к биту - это использование полей битов. Поля битов – это специальный тип членов структуры, в котором определено из скольких бит состоит каждый э

Аргументы функции main()
  Функция main, с которой начинается выполнение программы на языке СИ, может быть определена с параметрами, которые передаются из внешнего окружения, например, из командной строки. Во

Область действия и область видимости переменных.
  В языке C++ каждая функция это отдельный блок программы. Попасть в тело функции можно только с помощью вызова данной функции, то есть нельзя оператором безусловного перехода goto пе

Модификаторы переменных.
  В языке C++ имеется несколько модификаторов которые изменяют область действия и время жизни переменных     Модификаторы &nb

Модификатор тип_переменной имя_переменной
Все переменные в программе характеризуются не только типом, но и классом памяти. В языке Си существует четыре класса памяти: автоматический (automatic), регистровый(registe

Время жизни переменных.
  Если программист не указал иного, то объект создается, когда встречается его описание, и уничтожается, когда его имя выходит из области видимости, Объекты с глобальными именами созд

ПЕРЕГРУЖЕННЫЕ ФУНКЦИИ.
  Перегрузкой называют практику придания функции более чем одного значения. Этот термин означает, что в коде программы существует две различные по содержанию, но одинаковые по названи

ФУНКЦИИ С ПЕРЕМЕННЫМ ЧИСЛОМ ПАРАМЕТРОВ.
  При вызове функции с переменным числом параметров в вызове этой функции задается любое требуемое число аргументов. В объявлении и определении такой функции переменное число аргумент

УКАЗАТЕЛЬ НА ФУНКЦИЮ.
  Основными характеристиками функции является тип возвращаемого значения и список типов формальных параметров. Подобно тому, как имена переменных никаким образом не влияют на их тип,

Начальные установки графики.
  Перед началом работы с графикой, используется функция initgraph(), которая инициализирует графическую систему загружает графический драйвер и переводит систему в графический режим.

Функция line().
  Функция line() - вычерчивает линию между двумя заданными точками принадлежит библиотеке graphics.h Общий вид вызова: void line(int x1, int y1, int x2, int

Функция lineto().
  Функция lineto() чертит линию от текущей позиции курсора в точку с координатами (x,y)Расположена в библиотеке graphics.h Общий вид вызова функции: void li

Функция circle().
  Функция circle() вычерчивает окружность заданного радиуса из заданного центра. Функция находится в графической библиотеке graphics.h В качестве параметров передаются коорди

Функция rectangle ()
  Назначение функции rectangle () в вычерчивании прямоугольника. Функция rectangle () вычерчивает прямоугольник, используя при этом текущие тип линии, толщину и цвет

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги