
ИТиУвТС / ОАиП
.docxМинистерство образования Республики Беларусь
Учреждение образования
«БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ»
Институт информационных технологий
Специальность______ИТиУТС_____________________
КОНТРОЛЬНАЯ РАБОТА
По курсу__________ОАиП_____________________
Вариант № 14
Студент-заочник 1 курса
Группы № 082424
ФИО
Адрес:
Тел.
Минск,
2010
Задание №1. Линейный вычислительный процесс
Cоставить программу вычисления арифметического выражения для заданных значений x, y, z :
.
При x = 12.310-1, y = 15.4, z = 0.252103 g = 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.310-1; y = 15.4; z = 0.252103 (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++;
}
}
}
}
При вводе значений элементов массивов должен получиться следующий результат: