Автор работы: Пользователь скрыл имя, 25 Марта 2013 в 18:11, контрольная работа
Создать программу вычисления указанной величины. Результат проверить при заданных исходных значениях.
Составить программу для вычисления значения rez в зависимости от поставленного условия. Для получения результатов подобрать исходные данные так, чтобы выполнялись все возможные ветви алгоритма. Перед выводом полученного результата должно выводиться сообщение о ветви, при прохождении которой он получен.
4. |
При x = 0.4´104, y = –0.875, z = –0.475´10-3® w= 1.9873. |
Код программы:
#pragma hdrstop
#include <iostream.h>
#include <math.h>
#include <conio.h>
//----------------------------
#pragma argsused
int main(int argc, char* argv[])
{
double a,b,x,y,z,w,t;
cout<<"Input x"<<endl;
cin>>x;
cout<<"Input y"<<endl;
cin>>y;
cout<<"Input z"<<endl;
cin>>z;
a = fabs(cos(x) - cos(y));
b = pow(a,1 + 2 * pow(sin(y),2));
t = 1 + z + z*z/2 + z*z*z/3 + z*z*z*z/4;
w = b * t;
cout<<"w = "<<w<<endl;
cout<<"Press any key..."<<endl;
getch();
return 0;
}
Рис. 1 - Полученный результат
Задание №2
Составить программу для вычисления значения rez в зависимости от поставленного условия. Для получения результатов подобрать исходные данные так, чтобы выполнялись все возможные ветви алгоритма. Перед выводом полученного результата должно выводиться сообщение о ветви, при прохождении которой он получен.
rez =
Код программы:
#pragma hdrstop
#include <math.h>
#include <iostream.h>
#include <conio.h>
//----------------------------
#pragma argsused
int main(int argc, char* argv[])
{
double rez;
double r,m;
cout<<"Input r,m"<<endl;
cin>>r;
cin>>m;
if (0.5<fabs(r) && fabs(m)+0.5>fabs(r) )
{
cout<<" 0.5 < |r| < |m| + 0.5 "<<endl;
rez = (4*r + 3*m)/(pow(r,3) + m*m) * pow(sin(m*m*m),2);
}
else
{
if(fabs(r)>fabs(m)+0.5)
{
cout<<" |r| > |m| + 0.5"<<endl;
rez = sqrt(fabs(r - m)) * pow(cos(r*r),3);
cout<<"rez = "<<rez<<endl;
}
else
cout<<"Error"<<endl;
getch();
return 0;
}
cout<<"rez = "<<rez<<endl;
getch();
return 0;
}
Полученные результаты задания представлены на Рис.2 и Рис.3 (с первым и вторым условиями)
Рис.2
Задание № 3
Для каждого x, изменяющегося от a до b с шагом h, найти значения функции Y(x), суммы S(x) и |Y(x)–S(x)| и вывести в виде таблицы. Значения a, b, h и n вводятся с клавиатуры. Так как значение S(x) является рядом разложения функции Y(x), при правильном решении значения S и Y для заданного аргумента x (для тестовых значений исходных данных) должны совпадать в целой части и в первых двух-четырех позициях после десятичной точки.
Работу программы проверить для a = 0,1; b = 1,0; h = 0,1; значение параметра n выбрать в зависимости от задания.
.
Код программы:
#pragma hdrstop
#include <iostream.h>
#include <conio.h>
#include <math.h>
//----------------------------
#pragma argsused
int main(int argc, char* argv[])
{
double x,a,b,h,k,s=0,r,z,y,t;
int n;
cout<<"input a,b,h,n"<<endl;
cin>>a;
cin>>b;
cin>>h;
cin>>n;
for (x=a; x<=b; x+=h)
{
y= cos(x);
s = t = 1;
for(k=1;k<=n;k++)
{
t *= -(x*x)/(2*k*(2*k-1));
s += t*1;
}
z = fabs(y - s);
cout<<"x= "<<x<<" S(x)= "<<s<<" Y(x)= "<<y<<" |Y(x)-S(x)| = "<<z<<endl;
}
getch();
return 0;
}
Результаты, которые мы получили в итоге, отображены на рис. 4
Как видим S(x) и Y(x) совпадают в целой части и в 4-ёх позициях после десятичной точки.
Задание №4
В одномерном целочисленном массиве (размер массива (не больше 20) и значения его элементов вводить с клавиатуры) вычислить:
Сумму элементов массива, расположенных между первым и последним положительными элементами.
Код программы:
#pragma hdrstop
#include <iostream.h>
#include <conio.h>
#include <math.h>
//----------------------------
#pragma argsused
int main(int argc, char* argv[])
{
int z,k,a[20],n,i,s=0,pl1,pl2;
cout<<"Input n(<=20)"<<endl;
cin>>n;
cout<<"Massiv A"<<endl;
for(i=0;i<n;i++)
{
cout<<"a["<<i+1<<"]=";
cin>>a[i];
}
for(i=0;i<n;i++)
{
if (a[i]>0){
pl1=a[i];
z=i;
break;
}}
for(i=n-1;i>0;i--)
{
if ((a[i])> 0){
pl2=a[i];
k=i;
break;
}}
if ((k-z)>=2){
for(i=z+1;i<k;i++)
s+=a[i];
}
else{
cout<<"Error"<<endl;
getch();
return 0;
}
cout<<"S="<<s<<endl;
cout<<"Press any key..."<<endl;
getch();
return 0;
}
Результаты, которые мы получили можно рассмотреть на рис 5.
Рис.5
Как мы видим на рис.5, 1-ый положительный элемент – это 1, а последний – 2, сумма между ними равна 5+4=9.
Задание №5
В двухмерном целочисленном массиве (размеры массива N, M и значения его элементов вводить с клавиатуры) найти указанное значение.
Массив в памяти разместить динамически (с использованием операций new и delete), ввод исходных данных и вывод полученных результатов выполнить в основной функции, а решение задачи оформить в виде отдельной функции пользователя. Не использовать глобальных переменных.
Найти минимальный элемент и заменить его на первый элемент.
Код программы:
#pragma hdrstop
#include <iostream.h>
#include <conio.h>
#include <math.h>
int Fun_MIN(int, int, int**);
//----------------------------
#pragma argsused
int main(int argc, char* argv[])
{
int **a,m,n,i,j,s,k,l,per;
cout<<"Input N,M"<<endl;
cin>>n;
cin>>m;
a = new int *[n];
for(i=0;i<n;i++)
a[i]=new int[m];
cout<<"Input A"<<endl;
for(i=0;i<n;i++)
for(j=0;j<m;j++){
cout<<"a["<<i+1<<"]["<<j+1<<"]
cin>>a[i][j];
}
cout<<endl;
cout<<"Matrix A"<<endl;
cout<<endl;
for(i=0;i<n;i++){
for(j=0;j<m;j++)
cout<<" "<<a[i][j];
cout<<endl;
}
cout<<endl;
int min = Fun_MIN(n,m,a);
cout<<"min = "<<min<<endl;
cout<<"Matrix A posle Zameni"<<endl;
cout<<endl;
a[0][0]= min;
for(i = 0; i < n; i++){
for(j = 0; j < m; j++)
cout<<" "<<a[i][j];
cout<<endl;
}
cout<<endl;
delete []a;
cout<<"Delete"<<endl;
getch();
return 0;
}
//----------------------------
int Fun_MIN(int a, int b, int **x) //Функция пользователя
{
int min = x[0][0];
for (int i = 0;i < a;i++){
for(int j=0;j < b;j++){
if(x[i][j] < min)
min = x[i][j];
}}
return min;
}
Полученные результаты можно увидеть на рис.6
Рис. 6
Как мы видим на рис.6, минимальный элемент - это элемент 2, и в матрице после замены этот элемент находится на первом месте.
Список используемой литературы.
1) А.Я. Архангельский C++ Builder 6. СПРАВОЧНОЕ ПОСОБИЕ. Книга 2 Классы и компоненты;
2) Методическое пособие для заочников ИИТ.