
ИТиУвТС / ОАИП 2 вариант
.docМинистерство образования республики Беларусь
Учреждение образования
«БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ»
Институт информационных технологий
Специальность ИТиУТС
КОНТРОЛЬНАЯ РАБОТА
По курсу «Основы алгоритмизации и программирования»
Вариант № 2
Минск, 2010
Содержание
Задание №1…………………………………………………………………………...…3
Задание №2……………………………………………………………………………...4
Задание №3………………………………………………………………………..….…6
Задание №4……………………………………………………………………………...9
Задание №5…………………………………………………………………………….11
Литература……………………………………………………………………………..13
Задание №1.
Создать программу вычисления указанной величины. Результат проверить при заданных исходных значениях.
При x = –4.5, y = 0.7510-4, z = 0.845102 u = –55.6848.
Решение задачи.
Код программы:
#include <iostream.h>
#include <conio.h>
#include <math.h>;
#pragma hdrstop
int main()
{
double x,y,z,a,e,b,c,d,rez;
//вводим данные
cout<<"enter x, y, z = "<<endl;
cin>>x>>y>>z;
//числитель
a = pow((8+pow(fabs(x-y),2)+1),(1.0/3));
//знаменатель
b = (pow(x,2)+pow(y,2)+2);
//дробь
c = a/b;
//экспонента
e = exp(fabs(x-y));
//умножение экспоненты на скобки
d = e*pow((pow(tan(z),2)+1),x);
//результат
rez = c-d;
cout<<"rezult: "<<rez;
getch();
return 0;
}
Результаты:
Задание №2.
Составить программу для вычисления значения rez в зависимости от поставленного условия.
rez =
Решение задачи.
Код программы:
#include <iostream.h>
#include <math.h>
#include <conio.h>
#pragma hdrstop
int main()
{
double rezult, f, o;
//вводим данные
cout<<"enter F,O: "<<endl;
cin>>f>>o;
//проверка выполнения первого условия
if (fabs(f)<5*fabs(o))
{
rezult = log(fabs(2*f-3*pow(exp(o),2)));
cout<<endl;
cout<<"|F| < 5|O|"<<endl;
cout<<"rezult = "<<rezult<<endl;
}
//проверка выполнения второго условия
else
{
if ((5*fabs(o)<fabs(f))&&(fabs(f)<=7.5*fabs(o)))
{
rezult = log(fabs(2*pow(f,2)-3*o));
cout<<endl;
cout<<"5|O|<|F|<=7.5|O|"<<endl;
cout<<"rezult = "<<rezult<<endl;
}
//если ни одно из условий не выполнено
else
{
cout<<endl;
cout<<"net reshenij"<<endl;
}
}
getch();
return 0;
}
Результаты:
Выполнение 1-го условия
Выполнение 2-го условия
Выполнение 3-го условия
Задание №3.
Для каждого x, изменяющегося от a до b с шагом h, найти значения функции Y(x), суммы S(x) и |Y(x)–S(x)| и вывести в виде таблицы. Значения a, b, h и n вводятся с клавиатуры. Работу программы проверить для a = 0,1; b = 1,0; h = 0,1; значение параметра n выбрать в зависимости от задания.
.
Решение задачи.
Код программы:
#include <vcl.h>
#include <iostream.h>
#include <math.h>
#include <conio.h>
#pragma hdrstop
int main()
{
double y,x,a,b,h,sum;
int k=1,n,i;
//вводим данные
cout<<"enter a, b, h, n"<<endl;
cin>>a>>b>>h>>n;
//расчитываем сумму ряда для каждого икса
for (x=a;x<=b;x+=h)
{
sum = 0;
//рассчитываем сумму для отдельного икса
for (k=1;k<=n;k++)
{
sum+=pow(-1,(k+1))*pow(x,2*k)/(2*k*(2*k-1));
}
//выводим результаты и сравниваем сумму ряда со значением заданной функции
y = x*atan(x)-log(sqrt(1+pow(x,2)));
cout<<endl;
cout<<"x = "<<x<<" "<<"sum = "<<sum<<endl;
cout<<"Y(x) = "<<y<<endl;
cout<<"|S(x)-Y(s)| = "<<fabs(sum-y)<<endl;
}
getch();
return 0;
}
Результаты:
Задание №4.
В одномерном целочисленном массиве (размер массива (не больше 20) и значения его элементов вводить с клавиатуры) вычислить сумму элементов массива, расположенных между первым и последним нулевыми элементами.
Решение задачи.
Код программы:
#include <vcl.h>
#include <iostream.h>
#include <conio.h>
#pragma hdrstop
int main()
{
int a[20],i,n,niz,verh,sum;
verh,niz,sum=0;
bool k=false;
//вводим натуральное число элементов
do
{
cout<<"enter the number of elements, N > 0: ";
cin>>n;
}
while(n<=0);
//заполняем массив
for (i=0;i<n;i++)
{
cout<<"enter the "<<i+1<<" element: ";
cin>>a[i];
}
//находм первый ноль
for (i=0;i<n;i++)
{
if (a[i]==0)
{
niz=i;
k=true; //индикатор нуля
break;
}
else niz=0;
}
//находим последний ноль
for (i=n-1;i>=0;i--)
{
if (a[i]==0)
{
verh=i;
break;
}
//если нулей нет, то верхняя граница равна нулю
else verh=0;
}
//вспомогательный код, показывающий номера первого и последнего нуля
cout<<"niz "<<niz+1<<endl;
cout<<"verh "<<verh+1<<endl;
//если нулей нет, то сумма ноль
if (k==false)
{
sum=0;
}
//иначе считаем сумму между первым и последним нулем
else
{
for (i=niz+1;i<verh;i++)
{
Результаты:
Задание №5.
В двухмерном целочисленном массиве (размеры массива N, M и значения его элементов вводить с клавиатуры) найти указанное значение.
Найти произведение элементов, расположенных на главной диагонали.
Решение задачи.
Код программы:
#include <iostream.h>
#include <conio.h>
#pragma hdrstop
int prod(int**,int,int);
int main()
{
int i,j,n,m,**a;
//вводим размерность массива, матрица должна быть квадратной
do
{
cout<<"enter N, M for array: ";
cin>>n>>m;
}
while(n!=m);
//выделяем память под указатели
a = new int*[n];
//выделяем память под элементы
for (i=0;i<n;i++)
a[i]=new int[m];
//вводим массив
for (i=0;i<n;i++)
for (j=0;j<m;j++)
{
cout<<"a["<<i<<"]["<<j<<"] = ";
cin>>a[i][j];
}
//выводим заданную матрицу
cout<<endl;
cout<<"matrix: ";
for (i=0;i<n;i++)
{
cout<<endl;
for (j=0;j<m;j++)
{
cout<<a[i][j]<<" ";
}
}
cout<<endl;
//вызов функции и вывод произведения элементов главной диагонали
cout<<"product: "<<prod(a,n,m)<<endl;
getch();
return 0;
}
//объявление функции
int prod(int **arr,int nn,int mm)
{
int pr,ii,jj;
pr=1;
for (ii=0;ii<nn;ii++)
pr*=arr[ii][ii];
return pr;
}
Результаты:
Литература
1) Методические указания по выполнению контрольной работы по курсу «Основы алгоритмизации и программирования» (ОАиП) для студентов заочного отделения ИИТ. Мн., 2007
2) .Л.Бусько, А.Г.Корбит, Т.М.Кривоносова Конспект лекций по курсу «Основы алгоритмизации и программирования». Мн., 2004.
3) Б.В. Керниган, Д.М. Ричи. Б.В. Керниган, Д.М. Ричи. «Язык С». Издательство “Самиздат”, Львов 2002.