Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ИТиУвТС / ОАиП, К.р. №1, ИТиУвТС, заочная, 2012 г., вариант 3, Шилин Д. Л

..doc
Скачиваний:
11
Добавлен:
01.04.2014
Размер:
734.72 Кб
Скачать

Министерство образования Республики Беларусь

Учреждение образования

«Белорусский государственный университет информатики и радиоэлектроники»

Кафедра «Вычислительные методы и программирование»

Контрольная работа №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;

}

Результат выполнения программы:

Список использованных источников

  1. Навроцкий, А. А. Основы алгоритмизации и программирования в среде Visual C++ : лаб. практикум по курсу «Основы алгоритмизации и программирования» для студ. 1 – 2-го курсов всех спец. БГУИР / А. А. Навроцкий, Коренская И. Н. – Минск : БГУИР, 2008.

  2. http://www.teacher.dn-ua.com/old_version/CPP/7/matrices.htm

12