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

ИТиУвТС / ОАиП

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

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

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

«БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ»

Институт информационных технологий

Специальность______ИТиУТС_____________________

КОНТРОЛЬНАЯ РАБОТА

По курсу__________ОАиП_____________________

Вариант № 14

Студент-заочник 1 курса

Группы № 082424

ФИО

Адрес:

Тел.

Минск, 2010

Задание №1. Линейный вычислительный процесс

Cоставить программу вычисления арифметического выражения для заданных значений x, y, z :

.

При x = 12.310-1, y = 15.4, z = 0.252103g = 82.8257.

Текст программы с использованием стандартных функций ввода-вывода, может иметь следующий вид:

#include "stdafx.h"

#include "conio.h"

#include "iostream"

#include "math.h"

using namespace std;

void main()

{

double x,y,z,a,b,c,res; //объявляем наши исходные переменные

cout << "Enter x,y,z\n"; //при помощи ф-ии cout выводим на экран текст, заключённый в скобочках

cin >> x >> y >> z; //при помощи ф-ии cin вводим с клавиатуры переменные x y z

a = (pow(y,x+1))/(pow(fabs(y-2),1.0/3.0)+3); //подсчитываем первый промежуточный результат

b = (x+y/2)/(2*fabs(x+y)); //подсчитываем второй промежуточный результат;

c = pow(x+1,(-1/sin(z))); //подсчитываем третий промежуточный результат

res = a+b*c; //получаем конечный результат

cout << "x=" << x << "\ny=" << y << "\nz=" << z; //выводим на экран введённые с клавиатуры значения

cout << "\nResult = " << res << endl; //выводит на экран результат

getch(); //эта функция ждёт пока мы нажмём любую клавишу

}

Введя исходные данные x = 12.310-1; y = 15.4; z = 0.252103 (x и z – в форме с плавающей точкой), результат выполнения программы будет иметь следующий вид:

Задание №2. Реализация разветвляющихся алгоритмов

Ввести значения исходных данных x, y и z. Вычислить значение функции

rez =

Предусмотреть вывод сообщения, по какой ветви выполнялись вычисления.

Текст программы может иметь следующий вид:

#include "stdafx.h"

#include "conio.h"

#include "math.h"

void main()

{

double m,r,res; //объявляем наши исходные, промежуточные и конечные переменные, тип double чтобы они могли хранить дробные числа

puts("Enter m,r");

scanf("%lf%lf",&m,&r); //с помощью функции scanf мы считываем то, что ввели с клавиатуры

if (-2.5*m<r && -2*m>=r)

{

res = exp(-fabs(m+r))+log10(fabs(m)); //записываем нашу формулу вычисления

puts("-2.5*m < r < =-2*m"); //выводим на экран условия, которым удовлетворяют наши m и t при помощи puts

}

else

{

if ((-2*m<r))

{

res = exp(fabs(m+r))-log10(fabs(m)); //записываем нашу формулу вычисления

puts("r>-2*m"); //выводим на экран условия, которым удовлетворяют наши m и t при помощи puts

}

else

{

puts("r<-2.5*m"); //выводим на экран условия

puts("No rezult"); //сообщение об отсутствии результата

getch(); //ждём нажатия клавиши

return;

}

}

printf("Result = %.6lf",res); //выводим на экран результат при помощи функции printf

getch(); //эта функция ждёт пока мы нажмём любую клавишу

}

Результаты выполнения программы для различных исходных данных, вводимых в одной строке, разделяя их пробелами, могут иметь следующий вид:

1 вариант введенные значения соответствуют первому условию:

2 вариант введенные значения соответствуют второму условию:

Задание №3. Реализация циклических алгоритмов

Написать и отладить программу вывода всех значений функции S(x) для аргумента х, изменяющегося в интервале от а до b c шагом h и заданном n.

,

Текст программы предложенного задания может иметь следующий вид:

#include "stdafx.h"

#include "conio.h"

#include "math.h"

void main()

{

double Y,S,a,b,h,n,x,k,f; //объявляем наши исходные,промежуточные и конечные переменные, тип double чтобы они могли хранить дробные числа

puts("Enter a,b,h,n\n"); //при помощи ф-ии puts выводим на экран текст, заключённый в скобочках;

scanf("%lf%lf%lf%lf",&a,&b,&h,&n); //вводим с клавиатуры a,b,h и n

for (x = a;x <= b;x += h)

{

S = 0; //сумме изначально присваиваем значение 0

printf("x = %lf",x); //выводим текущее значение х

f = 1;

for (k = 0;k <= n;k++)

{

f*=(2*k+1); //вычисляем факториал

S+=pow(x,2*k+1)/f; //вычисляем один элемент формулы

}

printf(" S(x) = %.6lf",S); //выводим на экран значение суммы

Y = (exp(x)-exp(-x))/2; //вычисляем Y по данной нам формуле

printf(" Y(x) = %.6lf",Y); //выводим Y на экран

printf(" |Y(x)-S(x)|=%.6lf\n",fabs(Y-S)); //выводим на экран модуль разницы

}

getch();

}

Результат программы с введенными в одной строке значениями a=0.1, b=1, h=0.1 и n=10, будет иметь следующий вид:

Задание №4. Обработка одномерных массивов

В статическом массиве А размером N (не более 20), состоящем из целых чисел найти сумму модулей элементов массива, расположенных после первого элемента, рав­ного нулю. Размер массива и его элементы вводятся с клавиатуры.

Текст программы с использованием ввода-вывода в потоках может иметь следующий вид:

#include "stdafx.h"

#include "conio.h"

#include "iostream"

#include "math.h"

using namespace std;

void main()

{

float mas[20];

int n,i,sum=0,p=0; //объявляем переменные типа int

//mas[20]-массив с 20 элементами, каждый элемент - типа int,n - число элементов массива, с которыми мы будем работать

//i-счётчик ,p - будет хранить номер нулевых элемента в массиве

//sum - получившаяся сумма

cout << "Enter N(<=20)"; //при помощи ф-ии cout выводим на экран текст, заключённый в скобочках;

cin >> n; //при помощи ф-ии cin вводим с клавиатуры переменные

cout << "4tobi uvidet' korrektnuu rabotu,v massive dolgno bit' 1 nulevoi element\n";

cout << "\nMassiv\n";

for (i = 0;i < n;i++) //в этом цикле проходим по n элементам массива и инициализируем их

{

cout << "\t a[" << i+1 << "]="; //выводим на экран текущий элемент,\t - значок табуляции

cin >>mas[i]; //и вводим его значение с клавиатуры

}

for (i = 0;i < n;i++) //в этом цикле уже ищем числа, равные 0

{

if (mas[i] == 0) //условие - если число равно 0

{

p = i;

break;

}

}

for (i = p+1;i < n;i++)

sum+=fabs(mas[i]); //прибавляем к sum модуль значения текущего элемента массива

cout << "\nSumma =" <<sum; //выводит на экран результат

getch();

}

Результат выполнения программы может иметь следующий вид:

Задание №5. Обработка двухмерных динамических массивов. Функции пользователя

В целочисленном двухмерном динамическом массиве (матрице) размером NМ. Найти число элементов массива = T* и перемножить эти элементы. Ввод исходных данных (размеры массива и его элементы) и вывод результатов выполнить в основной функции. Решение поставленной задачи оформить в функции пользователя.

Текст программы может иметь следующий вид:

#include "stdafx.h"

#include "conio.h"

#include "iostream"

#include "math.h"

using namespace std;

void find_T(int,int,int &,int,int **); //это прототип нашей функции

void main()

{

int **mas,i,j,n,m,kol=0,T; //объявляем переменные типа int

//mas - наш двухмерный массив

//I,j - счётчики

//n,m - размер массива

//kol - количество элементов, равных T

//T - число, которое будем искать в массиве

cout << "Enter n,m :\n";

cin >> n >> m;

mas = new int *[n]; //создаём массив указателей

for (i = 0;i < n;i++) //в цикле создаем массив для каждого указателя в массиве указателей

mas[i] = new int[m];

cout <<"\nEnter T\n";

cin >> T;

cout <<"\nEnter the massive\n";

for (i = 0;i < n;i++) //в этом цикле вводим элементы массива

for (j = 0;j < m;j++)

{

cout << "a["<< i+1 << "][" << j+1 << "]=";

cin >> mas[i][j];

}

cout << "\n Matrix:\n";

for (i = 0;i < n;i++) //здесь выводим массив в виде матрицы

{

for (j = 0;j < m;j++)

cout << "\t" << mas[i][j];

cout << endl;

}

find_T(n,m,kol,T,mas); //вызываем нашу функцию.Она найдёт количество элементов массива,которые =T

cout <<"---------------------------------------------\n";

cout << "Summa = " << kol*T << "\nKol-vo elementov =T :" << kol; //сумму выводим как произведение kol на T

getch();

delete []mas; //удаляем память, отведённую под переменную mas

}

void find_T(int n,int m,int &kol,int T,int **mas)

{

for (int i = 0;i < n;i++) //в цикле проходим все значения массива, если какое-то =T - увеличиваем kol на 1

{

for (int j = 0;j < m;j++)

{

if (mas[i][j] == T)

{

kol++;

}

}

}

}

При вводе значений элементов массивов должен получиться следующий результат:

12