Вторая версия вычисление интеграла без файла

// integral_function

//arb2014_integral_function_without_file

#include<iostream>

#include<math.h>

#include<iomanip>

#include<string>

using namespace std;

const int lengthColumn=20;

const int Indent=7;

const int lengthTable=43;

//////////////////////////

double Fi(double x)

{

return cos(x)*cos(x);

}

///////////////////////////////

double Psi(double x)

{

return (1-x*x)/(1+x*x);

}

/////////////////////////

double F(double x,double t)

{

return Psi(x)*Fi(x+ t/(1+x*x));

}

///////////////////////////////////////

void create(double* x, int n)

{

int i;

for(i=0;i<n;i++)

{

cout<<"x["<<i<<"]=";

cin>>x[i];

}

}

/////////////////////////////////////////

void show( double* x, int n)

{

int i;

for(i=0;i<n;i++)

cout<<x[i]<<' ';

cout<<endl;

}

/////////////////////////////////////////

double Integral(double a, double b, double e, double t)

{

double h,J1,J2;

int i,n;

n=1;

h=(b-a)/n;

J2=h*F(a+h/2, t);

do

{

J1=J2;

n=n*2;

h=(b-a)/n;

J2=0;

for (i=0;i<=n-1;i++)

J2=J2+F(a+(2*i+1)*h/2,t);

J2=J2*h;

}while (fabs(J2-J1)>e);

return J2;

}

//////////////////////////////////////

void star( int n, int m)

{

cout.width(n);

int i;

for(i=0;i<m;i++)

cout<<'*';

cout<<endl;

}

/////////////////////////////////////

void star1( int n, int m)

{

cout.width(n); cout<<'*';

int i;

for(i=0;i<m;i++)

{

cout.width(lengthColumn+1);

cout<<'*';

}

cout<<endl;

}

//////////////////////////////////////

void table(double* x,double* y,int m, char a[2][15])

{

int i;

cout<<endl;

star(Indent+1,lengthTable);

star1(Indent+1,2);

cout.width(Indent+1);

cout<<'*';

for(i=0;i<2;i++)

{

cout.width(10);

cout<<a[i];

cout.width(11);

cout<<'*';

}

cout<<endl;

star1(Indent+1,2);

star(Indent+1,lengthTable);

for(i=0;i<m;i++)

{

cout.width(Indent+1);

cout<<'*';

cout.width(lengthColumn-5);

cout<<x[i];

cout.width(6);

cout<<'*';

cout.width(lengthColumn-5);

cout<<y[i];

cout.width(6);

cout<<'*';

cout<<endl;

star1(Indent+1,2);

star(Indent+1,lengthTable);

}

}

/////////////////////////////

void main()

{

double a,b,eps;

int m,i;

char name_task[80];

char name_x_y[2][15]; // x[i] y[i]

cout<<" enter the name of the table"<<endl;

cin.getline(name_task,80);//

for(i=0;i<2;i++)

{

cout<<" x[i] y[i] ";

cin>>name_x_y[i];// x[i] y[i]

}

cout<<endl;

cout<<name_task<<endl;

for(i=0;i<2;i++)

cout<<name_x_y[i]<<' ';

cout<<endl;

cout<<" a= "; cin>>a;

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

cout<<" eps= "; cin>>eps;

cout<<" m= "; cin>>m;

double* t, *y;

t=new double[m];

y=new double[m];

create( t,m);

cout<<"arguments : "<<endl;

show(t,m);

for(i=0;i<m;i++)

y[i]=Integral(a,b,eps,t[i]);

cout<<"value of integeral"<<endl;

show(y,m);

cout<<endl;

cout<<setw(15+strlen(name_task))<<name_task<<endl;

table(t,y,m,name_x_y);

delete []t;

delete []y;

}

////////////////////////////////////////

Форматированный ввод-вывод данных.

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

Форматирование данных с использованием функций-членов класса ios

В системе ввода-вывода С++ каждый поток связанс набором флагов форматирования информации. В классе ios объявляется перечисление fntflags, в котором определены следующие значения

adjustfield

basefield

boolalpfa

dec

fixed

floatfield

hex

internal

left

oct

right

scientific

showbase

showpoint

showpos

skipws

unitbuf

upprecase

Эти значения мспользуются для установки или очистки флагов форматирования.

Если флаг skipws установлен , то при потоковом вводе данных ведущие пробельные символы , или символы пропуска (т.е. пробелы , символы табуляции и новой строки ), отбрасываются.

…..

Установка и сброс флагов форматирования

Для установки любого флага используется функция setf(), которая является членом класса ios.

Лекция №10

Строки

Чаще всего одномерные массивы используются для создания символьных строк. Первый ( и наиболее популярный ) предполагает , что строка определяется как символьный массив , который завершается символом (‘\0’). Таким образом, строка с завершающим нулем состоит из символов и конечного нуль-символа. Строка С++ - это строка с завершающим нулем.

Однако существует и другой тип представлениястрок в С++.

Он заключается в применении объектов класса string,который является частью библиотеки классов С++. Таким образом, класс string – не встроенный тип.

Основы представления строк

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

const int n=80;

char a[n];

a=”KAZAN”; 0 символ обозначает конец строки.

Вторая версия вычисление интеграла без файла - student2.ru

char b[11]; - если нужно ввести 10 символов;

cin>>a; //Ввод строки Kazan State University

cout<<a; //На экране будет только Kazan.

// Массив читается только до пробела.

С++ позволяет определятьстроковые константы (литералы)

Строковый литерал – это список символов, заключенный в двойные кавычки

Например:

“Привет”

“Мне нравится С++ ”

“”

Строка “” называется нулевой. Она состоит только из одного нулевого символа (признака завершения строки). Нулевые строки используются для представления пустых строк.

Программа 1

//arb2014_string_cin

#include <iostream>

using namespace std;

void main()

{

const int n=30;

char S[n];

char T[n];

char R[n];

cout << "enter 3 words s=" << endl;

cin>>S;

cout << "string S="<<S<<endl; ;

//Ввод строки Kazan State University

//На экране будет только слово Kazan

cin>>T>>R;

cout<<T<<' '<<R<<endl; //Вsвод двух слов State University

// эти два слова остались во входном потоке

// они заносятся в переменные Т и R и выводятся

}

Программа 2

Наши рекомендации