bsuir.info
БГУИР: Дистанционное и заочное обучение
(файловый архив)
Вход (быстрый)
Регистрация
Категории каталога
Другое [236]
Форма входа
Поиск
Статистика

Онлайн всего: 3
Гостей: 3
Пользователей: 0
Файловый архив
Файлы » ИТиУвТС » Другое

ОАиП, КР №1, вариант 11
Подробности о скачивании 19.01.2012, 19:29
Задача 1
Создать программу вычисления указанной величины. Результат проверить при заданных исходных значениях.

При x = 6.251, y = 0.827, z = 25.001  b = 0.8343.


Обобщенная схема алгоритма:

#include <iostream.h>
#include <conio.h>
#include <math.h>
#include <stdio.h>
int main()
{
double x, y, z, a, b, c, d, rez ;
// ввод исходных данных
cout << "\n x,y,z = " << endl;
cin >> x >> y >> z;
//вычисление результата
a=pow(y,(pow(fabs(x),1/3)));
b=pow(cos(y),3)*fabs(x-y);
c=pow(sin(z),2)/sqrt(x+y)+1;
d=exp(fabs(x-y))+x/2;
rez=b*c/d+a;
// вывод на экран исходных данных и результата
cout << "\n x = " << x << "\n y = " << y << "\n z = " << z << "\nRezultat = " << rez << endl;
cout << "Press any key ... " << endl;
getch();// задержка
return 0;
}

Задача 2
Составить программу для вычисления значения rez в зависимости от поставленного условия.
Для получения результатов подобрать исходные данные так, чтобы выполнялись все возможные ветви алгоритма. Перед выводом полученного результата должно выводиться сообщение о ветви, при прохождении которой он получен. Обратить внимание, что возможен случай, при котором исходные данные не будут подходить ни для одного из предложенных условий.
rez =
Обобщенная схема алгоритма:



#include <conio.h>
#include <iostream.h>
#include <stdio.h>
#include <math.h>
void main()
{
double p, z, rez;
cout << "Vvedite p, z" << endl;
cin >> p >> z; // ввод данных
if ((0<p)&&(p<=(z+1))) // условие для выполнения первой ветви
{rez =pow(z,3)-log(fabs(p)+fabs(z));
cout << " 0<p<=z+1 " << endl; //вывод на экран первой ветви и результата
cout << "\n\t Rezultat rez = " << rez;}
else if (p>(z+1)) // условие для выполнения второй ветви
{ rez = log(fabs(p-z))+pow(cos(p),2);
cout << " p>z+1" << endl; //вывод на экран второй ветви и результата
cout << "\n\t Rezultat rez = " << rez;}
else cout << " Vne diapazona " << endl; //вывод сообщения, если не выполняются условия ветвей
cout <<"\nPress any key ... " << endl;
getch();
}





Задача 3
Для каждого x, изменяющегося от a до b с шагом h, найти значения функции Y(x), суммы S(x) и |Y(x)–S(x)| и вывести в виде таблицы. Значения a, b, h и n вводятся с клавиатуры. Так как значение S(x) является рядом разложения функции Y(x), при правильном решении значения S и Y для заданного аргумента x (для тестовых значений исходных данных) должны совпадать в целой части и в первых двух-четырех позициях после десятичной точки.
Работу программы проверить для a = 0,1; b = 1,0; h = 0,1; значение параметра n выбрать в зависимости от задания.
, .
Обобщенная схема алгоритма:

#include <stdio.h>
#include <conio.h>
#include <iomanip.h>
#include<iostream.h>
#include <math.h>
int main()
{
double a,b,h,x,y,s,r,m,razn;
int n,k;
cout << "Vvedite a,b,h,n" << endl; //ввод данных
cin >> a >> b >> h >> n;
puts("---- x ---- ---- Y(x) ---- ---- S(x) ---- ---- |Y(x)-S(x)| ----");
for(x = a; x<=b; x+=h) {
s =m= r=1;
for(k = 1; k<=n+1; k++) { // цикл нахождения S(x) и Y(x)
m=m*k; // нахождение факториала (k!)
r=(k*k+1)*pow(x/2,k)/m;
s=s+r; }
y=exp(x/2)*(x*x/4+x/2+1);
razn=fabs(y-s);
cout << setw(9) << x << setw(15) << y << setw(15) << s << setw(15) << razn << endl; //вывод результатов на экран
}
getch();
return 0;
}

Задача 4
В одномерном целочисленном массиве (размер массива (не больше 20) и значения его элементов вводить с клавиатуры) вычислить cумму элементов массива, расположенных после минимального элемента.

Обобщенная схема алгоритма:

#include <iostream.h>
#include <conio.h>
void main()
{
int a[20], n, i, min, sum = 0, k;
cout << "\t Input N (<=20) "; //ввод элементов массива
cin >> n;
cout <<"\n\t Massiv A" << endl; //вывод на экран элементов массива
for(i = 0; i < n; i++) {
cout << "\t a[ " << i+1 << " ] = ";
cin >> a[i];
}
min=a[0];
for(i=0; i<n;i++) //цикл нахождения минимального элемента
if(a[i] < min){
min=a[i];
k=i; // запоминание позиции минимального элемента
}
for(i=k+1; i<n;i++) //цикл высчитывания суммы элементов
sum+=a[i];
cout << "\n Min. element = " << a[k] << endl; //вывод на экран результатов
cout << "\n Summa posle min. elementa= " << sum << endl;
cout << "\n Press any key ... " << endl;
getch();
}

Задача 5
В двухмерном целочисленном массиве (размеры массива N, M и значения его элементов вводить с клавиатуры) Найти число элементов массива < T ( T вводить с клавиатуры) и их сумму. Массив в памяти разместить динамически (с использованием операций new и delete), ввод исходных данных и вывод полученных результатов выполнить в основной функции, а решение задачи оформить в виде отдельной функции пользователя. Не использовать глобальных переменных.

Обобщенная схема алгоритма:

Обобщенная схема алгоритма функции int Fun_Sum_Kol(int, int, int, int**, int*):

#include <iostream.h>
#include <conio.h>
int Fun_Sum_Kol(int, int, int, int**, int*); // Описание прототипа функции
void main()
{
int **a, i, j, n, m, sum, kol,t;
cout << "\t Input N, M: "; // ввод параметров массива
cin >> n >> m;
cout << "\t Input T: ";
cin >> t;
a = new int*[n]; // Захват памяти под указатели
for(i=0; i<n;i++)
a[i] = new int[m]; // Захват памяти под элементы
cout <<"\n Input A" << endl; // ввод элементов массива
for(i=0; i<n; i++)
for(j=0; j<m; j++){
cout << "\t a[" << i+1 << "][" << j+1 << "] = ";
cin >> a[i][j];
}
cout <<"\n Matrix A:" << endl; // вывод элементов массива на экран
for(i=0; i<n; i++) {
for(j=0; j<m; j++)
cout << "\t" << a[i][j];
cout << endl;
}
// Обращение к функции с указанием фактических аргументов
sum = Fun_Sum_Kol(n, m, t, a, &kol);
cout << "\n Kol-vo elementov < T= " << kol << "\t Summa elementov < T = " << sum << endl; //вывод результатов на экран
delete []a; // Освобождение памяти
cout << "\n\t Delete !" << endl;
cout << " Press any key ... " << endl;
getch();
}
// Реализация описанной выше функции, в заголовке которой указаны формальные параметры, идентификаторы которых обрабатываются в ее коде
int Fun_Sum_Kol(int a, int b, int t, int **x, int *k)
{
int i, j, s=0;
*k = 0; //присвоение указателю нуля
for(i=0; i<a;i++) //цикл нахождения элементов меньше Т и вычисление результатов
for(j=0; j<b;j++)
if(x[i][j] <t){
(*k)++;
s +=x[i][j]; }
return s;
}
Категория: Другое | Добавил: zaochnica
Просмотров: 1360 | Загрузок: 28
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]