Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

КР1 по ОАиП Вариант 8

.doc
Скачиваний:
20
Добавлен:
01.04.2014
Размер:
152.06 Кб
Скачать

Контрольная работа

По курсу «Основы алгоритмизации и программирования»

Студента БГУИР ФЗВиДО

ИТиУвТС

Вариант 8

  1. Вычислить значение выражения при заданных исходных данных. Сравнить полученное значение с указанным правильным результатом.

При x=-2.235*10-2; y=2.23; z=15.221; ответ s=39.3741

#include <iostream.h>

#include <math.h>

#include <conio.h>

int main(int)

{

double x,y,z,a,b,c,s;

cout << "Vvedite x: ";

cin >> x;

cout << "Vvedite y: ";

cin >> y;

cout << "Vvedite z: ";

cin >> z;

a=exp(fabs(x-y))*pow(fabs(x-y),(x+y));

b=atan(x)+atan(z);

c=pow((pow(x,6)+pow(log(y),2)),(1.0/3.0));

s=a/b+c;

cout << "Resultat " << s << endl;

return 0;

}

2. При выполнении задания предусмотреть выбор вида функции f(x) : sh(x), x2 или ex. Предусмотреть вывод информации о выбранной ветви вычислений.

#include <iostream.h>

#include <math.h>

int main(int)

{

double x,y,f,a,b;

int k;

cout << "Vvedite x: ";

cin >> x;

cout << "Vvedite y: ";

cin >> y;

cout << "Viberite f: 1-sh(x), 2-x^2, 3-exp(x) ";

cin >> k;

switch(k)

{

case 1 : f=sinh(x); cout << "f=sh(x)" << endl;

break;

case 2: f=pow(x,2); cout << "f=x^2" << endl;

break;

case 3: f=exp(x); cout << "f=exp(x)" << endl;

break;

default: cout << "Ne vibrana funkciya" << endl;

return 0;

}

a=x/y;

if (a<0)

b=pow(pow(f,2)+y,3), cout << "b=(f(x)^2+y)^3" << endl;

else

if (a>0)

b=log(fabs(f/y))+x/y, cout << "b=ln|f/y|+x/y" << endl;

else

b=pow(fabs(sin(y)),1.0/3.0), cout << "b=|sin(y)|^(1/3)" << endl;

cout << "RESUL'TAT: " << b << endl;

return 0;

}

3. Вывести на экран таблицу значений функции Y(x)=e2x и ее разложения в ряд S(x)=1+2x/(1!)+…+(2x)n/(n!); n=100 для x, изменяющегося от a=0.1 до b=1 с шагом h=(b-a)/10

#include <iostream.h>

#include <iomanip.h>

#include <math.h>

int main (int)

{ double a,b,h,x,y,s,p;

int n,i;

cout << "vvedite a:";

cin>>a;

cout << "vvedite b:";

cin>>b;

cout << "vvedite n:";

cin>>n;

x=a;

h=(b-a)/10.0;

cout<<setw(15)<<"x"<<setw(15)<<"y(x)"<<setw(15)<<"s(x)"<<endl;

do

{ p=s=1;

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

{

p*=2*x/i;

s+=p;

}

y=exp(2*x);

cout<<setw(15)<<x<<setw(15)<<y<<setw(15)<<s<<endl;

x+=h;

}

while(x<=b+h/2);

cout<<endl;

return 0; }

4. Задан массив из k чисел. Преобразовать массив следующим образом: все

отрицательные элементы массива перенести в начало, а все остальные – в конец, сохранив исходное взаимное расположение как среди отрицательных, так и среди положительных элементов.

#include <stdlib.h>

#include <iostream.h>

#include <conio.h>

#include <iomanip.h>

void main()

{

float A[100], B[100], a, b;

int i, k=100, c=0;

cout << "Vvedite k: ";

cin >> k;

cout << "Vvedite a: ";

cin >> a ;

cout << "Vvedite b: ";

cin >> b;

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

A[i] = (float)rand()*(b-a)/RAND_MAX + a;

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

if ( A[i] < 0 )

{

B[c] = A[i];

c ++;}

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

if ( A[i] >= 0 )

{

B[c] = A[i];

c ++;}

cout<<setw(15)<<"Massiv A"<<setw(18)<<"Massiv A' "<<endl;

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

cout<<setw(15)<<A[i]<<setw(15)<<B[i]<<endl;

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

A[i]=B[i];

}

5. Дана матрица размером NxM. Упорядочить ее строки по возрастанию

суммы их элементов.

#include <iostream.h>

#include <conio.h>

#include <stdlib.h>

void main(int)

{int **a, k, i, j, n, m, s1, s2, c, A, B;

cout << "Kol-vo strok:";

cin >> n;

cout << "Kol-vo stolbcov:";

cin >> m;

cout << endl <<"Vvedite interval" <<endl;

cout << "Min 4islo:";

cin >> A;

cout << "Max 4islo:";

cin >> B;

a = new int*[n];

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

a[i] = new int[m];

cout << endl << "Matrica A" << endl;

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

{cout << endl;

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

{

a[i][j] = (int)rand()*(B-A)/RAND_MAX +A;

cout << a[i][j]<< "\t";}

}

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

{

for(k=(n-1); k>=i; k--)

{s1=s2=0;

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

{s1+=a[i][j];}

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

{s2+=a[k][j];}

if (s2<s1)

{

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

{c = a[i][j];

a[i][j] = a[k][j];

a[k][j] = c;

s1=s2=0;

}

}

}

}

cout << endl << endl<< "Matrica A'" << endl;

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

{ cout << endl;

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

cout << a[i][j]<< "\t";

}

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

delete [ ]a[i];

delete [ ]a;

a=NULL;

}

8. Вывести на экран таблицу значений функцииY(x)=1/(1-x) и ее разложения в ряд S(x)=1/(1+x)+2x/(1+x2)+…+(2k-1x(2^(k-1)-1))/(1+x(2^(k-1))) для x, изменяющегося от a=-0.3 до b=0.4 с точностью ε=10-4. Вывести число итераций, необходимое для достижения заданной точности. ВычислениеS(x) иY(x) оформить в виде функций.

#include <iostream.h>

#include <math.h>

#include <iomanip.h>

typedef double (*uf)(double, double, int &);

void tabl(double, double, double, double, uf);

double y(double, double, int &);

double s(double, double, int &);

int main()

{

cout << setw(15) <<"x"<< setw(15) <<"y(x)"<< setw(10) << "k" << endl;

tabl(-0.30,0.40,0.10,0.0001,y);

cout << endl;

cout << setw(15) <<"x"<< setw(15) <<"s(x)"<< setw(10) << "k" <<endl ;

tabl(-0.30,0.40,0.10,0.0001,s);

return 0;

}

void tabl(double a, double b, double h, double eps, uf fun)

{

int k=0;

double sum;

for (double x=a; x<b+h/2; x+=h)

{

sum=fun(x,eps,k);

cout << setw(15) << x << setw(15) << sum << setw(10) << k << endl;

}

}

double y(double x, double eps, int &k)

{

return 1.0/(1.0-x);

}

double s(double x, double eps, int &k)

{

double a,c,sum;

sum=a=c=1.0/(1.0+x);

k=1;

while (fabs(c)>eps)

{

c = (2.0*pow(x,pow(2,(k-1))))*(1.0+pow(x,pow(2,(k-1))))/(1.0+pow(x,pow(2,(k))));

a *= c;

sum += a;

k++;

}

return sum;

}

Список используемой литературы:

1. Батура М.П., Бусько В.Л., Корбит А.Г., Кривоносова Т.М. Основы алгоритмизации и программирования. Язык Си : учеб. пособие. – Минск : БГУИР, 2007.

2. Бусько В.Л., Корбит А.Г., Кривоносова Т.М. Конспект лекций по курсу «Основы алгоритмизации и программирования» для студентов всех специальностей и всех форм обучения. - Мн.: БГУИР, 2004.

3. Бусько В.Л., Навроцкий А.А. Основы алгоритмизации и программирования в среде С++ лаб.практикум по курсу «Основы алгоритмизации и программирования» для студ. 1 – 2-го курсов всех специальностей БГУИР. Минск: БГУИР, 2008.

Соседние файлы в предмете Основы алгоритмизации и программирования