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

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Файловый архив
Файлы » ПЭ » Другое

Контрольная ОАиП 12в.
Подробности о скачивании 24.05.2012, 19:33
Министерство образования республики Беларусь
Учреждение образования
"БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ И РАДИОЭЛЕКТРОНИКИ"
Институт информационных технологий

Специальность Промышленная Электроника

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

По курсу Основы Алгоритмизации и Программирования

Вариант №12

Студент-заочник 1 курса
Группы №183123
ФИО
Адрес г.Минск
Тел. +375

Минск, 2011

Задание №1
Создать программу вычисления указанной величины. Результат проверить при заданных исходных значениях.

При x = 3.251, y = 0.325, z = 0.466 10-4 c = 4.025.
4.25143
Текст программы с использованием стандартных функций ввода-вывода, может иметь следующий вид:

#include <stdio.h>
#include <conio.h>
#include <math.h>
double const pi=3.1415926;
void main()
{
double x, y, z, a, b ,c;
puts("Enter x, y, z = ");
scanf("%lf %lf %lf", &x, &y, &z);
a=pow(2,(pow(y,x)))+pow(pow(3,x),y);
b=y*(atan(z)-pi/6)/(fabs(x)+1/(y*y+1));
c=a-b;
printf("\n x = %lf\n y = %lf\n z = %lf\nRezult = %lf\n", x, y, z, c);
puts("Press any key ... ");
getch();
}


Задание №2
Составить программу для вычисления значения rez в зависимости от поставленного условия.
Для получения результатов подобрать исходные данные так, чтобы выполнялись все возможные ветви алгоритма. Перед выводом полученного результата должно выводиться сообщение о ветви, при прохождении которой он получен. Обратите внимание, что возможен случай, при котором исходные данные не будут подходить ни для одного из предложенных условий.
rez =
Текст программы может иметь следующий вид:
#include <conio.h>
#include <stdio.h>
#include <math.h>
void main()
{
double x, t, rez;
puts("Input t, x");
scanf("%lf%lf",&t, &x);
if (x >= 10*t){
rez=sqrt(fabs(x*exp(sin(x))+t*exp((-2)*x)));
puts(" x >= 10*t");
}
else {
if(x>=3*t && x<10*t)
{
rez=sqrt(fabs(x+t)*exp(cos(x)));
puts(" 3*t <= x < 10*t");
}
else{puts("x < 3*t");
return;}
}
printf("\n\t Rez = %8.6lf\n", rez);
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 <math.h>
void main()
{
double a, b, x, h, y, f, s=0, mod;
int j, n, z, k=0, fac;
puts("Input a,b,h,n");
scanf("%lf%lf%lf%d", &a, &b, &h, &n);

for(x = a; x<=b; x+=h) {
if(k%2==0) z=1; else z=-1;
if(k==0) fac=1;
else{
j=1; fac = 1;
while(j<=2*k){fac*=j; j++;}
}
f=z*(2*pow(k,2)+1)/fac*pow(x,2*k);
s+=f;
y=((1-(pow(x,2)/2))*cos(x))-((x/2)*sin(x));
printf("\n x= %8.2lf sum= %8.7lf y=%lf mod=%lf", x,s,y,mod); k++;
if(k==n)break;
}
puts("\nPress any key ... ");
getch();
}
Результат программы с введенными в одной строке значениями a=0.1, b=1.0, h=0.1 и n=10, будет иметь следующий вид:




Задание №4
В одномерном целочисленном массиве (размер массива (не больше 20) и значения его элементов вводить с клавиатуры) вычислить:
Сумму элементов массива, расположенных после первого положительного элемента.
Текст программы с использованием ввода-вывода в потоках может иметь следующий вид:
#include <iostream.h>
#include <conio.h>
void main()
{
int a[20], n, i, j, z, s = 0;
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];
}
for(i=0; i<n;i++)
if(a[i] > 0){ z = i; break;}
for(j=z+1; j<n; j++)
s += a[j];
cout << "\n\t Summa = " << s << endl;
cout << "\n Press any key ... " << endl;
getch();
}

Блок-схема программы тогда будет иметь вид:



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



Задание №5
В двухмерном целочисленном массиве (размеры массива N, M и значения его элементов вводить с клавиатуры) найти указанное значение.
Массив в памяти разместить динамически (с использованием операций new и delete), ввод исходных данных и вывод полученных результатов выполнить в основной функции, а решение задачи оформить в виде отдельной функции пользователя. Не использовать глобальных переменных.
Найти число элементов массива < T (вводится с клавиатуры) и перемножить эти элементы.
Текст программы может иметь следующий вид:
#include <iostream.h>
#include <conio.h>
int Fun_Prod_Kol(int, int, int**, int*);
void main()
{
int **a, i, j, n, m, proiz, kol;
cout << "\t Input N, M : ";
cin >> n >> m;
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;}
proiz = Fun_Prod_Kol(n, m, a, &kol);
cout << "\n Kol-vo = " << kol << "\t Proizvedenie = " << proiz << endl;
delete []a;
cout << "\n\t Delete !" << endl;
cout << " Press any key ... " << endl;
getch();}
int Fun_Prod_Kol(int a, int b, int **x, int *k)
{
int i, j, T, pr=1;
*k = 0;
cout << "Enter T" << endl;
cin >> T;
for(i=0; i<a;i++)
for(j=0; j<b;j++)
if(x[i][j] < T){
(*k)++;
pr *= x[i][j];
}
return pr;
}
Блок-схема программы тогда будет иметь вид:


Блок-схема подпрограммы пользователя будет иметь вид:


Из функции мы должны получить два скалярных результата - количество элементов массива меньших заданного Т и их сумму. С помощью оператора return мы возвращаем сумму, а второе значение мы передаем в точку вызова с помощью указателя (адреса): при обращении к функции в качестве четвертого параметра передаем адрес &kol, а в функции используем "содержимое, находящееся по указанному адресу" *k ( * - операция разадресации).
При вводе значений элементов массивов в одной строке через пробелы должен получиться следующий результат:
Категория: Другое | Добавил: Malish
Просмотров: 2314 | Загрузок: 21
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]