
ИТиУвТС / ОАиП, К.р. №1, ИТиУвТС, заочная, 2012 г., вариант 3, Шилин Д. Л
..docМинистерство образования Республики Беларусь
Учреждение образования
«Белорусский государственный университет информатики и радиоэлектроники»
Кафедра «Вычислительные методы и программирование»
Контрольная работа №1
по дисциплине:
"Основы алгоритмизации
и программирования"
вариант № 3
|
|
Минск БГУИР 2011
Задание 1
Написать программу вычисления значения выражения при заданных исходных данных. Сравнить полученное значение с указанным правильным результатом.
Текст программы:
#include <iostream.h>
#include <math.h>
int main()
{ // Начало главной функции
double x,y,z,a,b,c,e,g,s; // Объявление переменных
cout<<"vvedite x= "; // Ввод значений x, y и z
cin>>x;
cout<<"vvedite y= ";
cin>>y;
cout<<"vvedite z= ";
cin>>z;
a=pow(sin(x+y),2)+1; // Вычисление выражения
b=fabs(x-(2*y/(1+pow(x,2)*pow(y,2))));
c=atan(1/z);
e=pow(cos(c),2);
g=fabs(y);
s=a/b*pow(x,g)+e;
cout<<"Resultat s= "<<s<<endl; // Вывод результата
return 0; // Завершение выполнения программы
} // Конец главной функции
Результат выполнения программы:
Задание 2
Составить программу вычисления выражения согласно указанному варианту. Предусмотреть вывод информации о выбранной ветви вычислений.
Текст программы:
#include <iostream.h>
#include <math.h>
int main()
{
double x,y,s;
cout<<"vvedite x= ";
cin>>x;
cout<<"vvedite y= ";
cin>>y;
double r=x-y;
if (r==0) { // если x-y равно нулю
s=pow(x,2)+pow(y,1/3.)+sin(y);
cout<<"1.vetv Result= "<<s<<endl;
}
else if (r>0) // если x-y больше нуля
{
s=pow(r,2)+log(fabs(x));
cout<<"2.vetv Result= "<<s<<endl;
}
else { //во всех других случаях
s=pow(y-x,2)+tan(y);
cout<<"3.vetv Result= "<<s<<endl;
}
return 0;
}
Результат выполнения программы:
Задание 3
Вывести на экран таблицу значений функции y(x) для x, изменяющегося от a = 0,1 до b = 1,2 с шагом h = 0,1.
Текст программы:
#include<iostream.h>
#include<iomanip.h>
#include<math.h>
int main()
{
double s,a,b,h,x;
int k,i;
cout<<"Vvedite a= "<<endl;//Ввод значений: 0.1, 1.2, 0.1, 20
cin>>a;
cout<<"Vvedite b= "<<endl;
cin>>b;
cout<<"Vvedite h= "<<endl;
cin>>h;
cout<<"Vvedite k= "<<endl;
cin>>k;
x=a;
do // Начало цикла по x
{
s=2; // Начальное значение при k=0
for (i=1; i<=k; i++) // Вычисление суммы
s+=pow(x,i-1)/sin(i*x);
cout<<setw(15)<<x<<setw(15)<<s<<endl; // Вывод таблицы
x+=h; // Изменение значения x на величину шага h
}
while (x<=b+h/2); //Проверка условия продолжения цикла по x
cout<<endl; // Переход на новую строку
return 0;
}
Результат выполнения программы:
Задание №4
Найти и поменять местами элементы, имеющие минимальное и максимальное значения в массиве
Текст программы:
#include <iostream.h>
#include <math.h>
void main(){
int mas[10];
int n,i,Min,Max,posMin,posMax;
cout<< "Vvedite razmer: "; // Ввод одномерного массива
cin>>n;
for (i=0; i<n; i++)
{
cout<< "Vvedite mas["<<i<<"]= ";
cin>>mas[i];
}
cout<<"massiv: "<<endl; // Вывод одномерного массива
for(i=0; i<n; i++)
cout<<mas[i]<<" ";
cout<<endl;
Min=Max=mas[0];
posMax=posMin = 0;
for(i=0; i<n; i++) //поиск максимального и минимального
if(mas[i]<Min) //элементов массива
{
Min = mas[i];
posMin = i;
}
else
if(mas[i]>Max)
{
Max = mas[i];
posMax = i;
}
mas[posMax]=Min; // замена максимального и минимального
mas[posMin]=Max; // элементов массива друг на друга
cout<<"Vivod massiva";
cout<<endl;
for(i=0; i<n; i++) //вывод измененного массива
cout<<mas[i]<<" ";
cout<<endl;
}
Результат выполнения программы:
Задание №5
Вывести матрицу размером NxM. Память для массива выделить динамически. Определить сумму отрицательных элементов, расположенных выше побочной диагонали матрицы.
Текст программы:
#include <iostream.h>
#include <iomanip.h>
#include <math.h>
int main()
{
double **a, sum;
int i, j, n, m;
cout << "Vvedite razmer: n, m" << endl;
cin >> n >> m;
a = new double*[n]; // Выделение памяти под массив указателей
for(i=0; i<n; i++) // Выделение памяти под соответствующие
a[i] = new double[m]; // этим указателям строки матрицы
for (i=0; i<n; i++) // Ввод двумерного массива
for (j=0; j<m; j++)
{
cout << "Vvedite a[" << i << "][" << j << "]: " ;
cin >> a[i][j];
}
cout << "Massiv A:" << endl; // Вывод двумерного массива
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
cout << setw (2) << a[i][j] << " ";
cout << endl;
}
sum=0;
for (i=0; i<n; i++) //подсчет суммы отрицательных элементов
for (j=0; j<m; j++) //находящихся выше побочной диагонали
{
if (i+j+1<n && a[i][j]<0)
sum=sum+a[i][j];
}
cout<<"Summa = "<<sum; // Вывод результата
cout<<endl;
for(i=0; i<n; i++) // Освобождение выделенной памяти
delete [] a[i];
delete []a;
a = NULL;
return 0;
}
Результат выполнения программы:
Задание 8
Вывести на экран таблицу значений функции y(x) для x, изменяющегося от a = 0,1 до b = 1,2 с шагом h = 0,1 (см. задание №3). Вычисление y(x) оформить в виде функции.
Текст программы:
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
typedef double (*uf)(double, int);
void Tabl (double, double, double, uf);
double Y (double, int);
int main()
{
cout << setw(8) <<"x"<< setw(15) <<"y(x)"<< setw(10) << endl;
Tabl (0.1, 1.2, 0.1, Y);
cout << endl;
return 0;
}
void Tabl (double a, double b, double h, uf fun)
{
int k=0;
double sum;
for (double x=a; x < b+h/2; x+=h)
{
sum = fun(x, 20);
cout << setw(8) << x << setw(15) << sum << endl;
}
}
double Y (double x, int k)
{
double s = 2;
for (int i=1; i <= k; i++)
s+=pow(x,i-1)/sin(i*x);
return s;
}
Результат выполнения программы:
Список использованных источников
-
Навроцкий, А. А. Основы алгоритмизации и программирования в среде Visual C++ : лаб. практикум по курсу «Основы алгоритмизации и программирования» для студ. 1 – 2-го курсов всех спец. БГУИР / А. А. Навроцкий, Коренская И. Н. – Минск : БГУИР, 2008.
-
http://www.teacher.dn-ua.com/old_version/CPP/7/matrices.htm