bsuir.info
БГУИР: Дистанционное и заочное обучение
(файловый архив)
Вход (быстрый)
Регистрация
Категории каталога
Другое [157]
АВС [6]
КПиЯП [80]
ОАиП [305]
ОКТ [79]
СиСПО [8]
Форма входа
Поиск
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Файловый архив
Файлы » ПОИТ » ОАиП

КР1 по ОАиП Вариант 8
Подробности о скачивании 20.12.2010, 22:23
Контрольная работа
По курсу «Основы алгоритмизации и программирования»
Студента БГУИР ФЗВиДО
ИТиУвТС
Вариант 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©>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.

Категория: ОАиП | Добавил: Palik21
Просмотров: 3287 | Загрузок: 47
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]