Основы языка С++

Автор работы: Пользователь скрыл имя, 25 Марта 2013 в 18:11, контрольная работа

Краткое описание

Создать программу вычисления указанной величины. Результат проверить при заданных исходных значениях.
Составить программу для вычисления значения rez в зависимости от поставленного условия. Для получения результатов подобрать исходные данные так, чтобы выполнялись все возможные ветви алгоритма. Перед выводом полученного результата должно выводиться сообщение о ветви, при прохождении которой он получен.

Прикрепленные файлы: 1 файл

ОАИП КОНТРОЛЬНАЯ.doc

— 130.00 Кб (Скачать документ)

Задание №1

Создать программу вычисления указанной  величины. Результат проверить при заданных исходных значениях.

   

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

 

 

 

 

 

Задание № 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

 

 

 

                                                   Рис. 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)  Методическое пособие  для заочников ИИТ.

 

 

 

 

 


Информация о работе Основы языка С++