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

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

ОАИП контр 1 вар 9
Подробности о скачивании 01.06.2011, 18:48
Задание №1. Линейный вычислительный процесс

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

.
При x = 1.825102, y = 18.225, z = –3.29810-2   = 1.2131.

Код программы:

#include <stdio.h>
#include <conio.h>
#include <math.h>

int main(int argc, char* argv[]){
double x,y,z,res;
double a,b,c,d,e,f,g;
puts("\n\t x,y,z = ");
res = scanf("%lf%lf%lf",&x,&y,&z);
a = pow(x,y/x);
b = pow(y/x,1.0/3.0);
c = a-b;
d = cos(y)-z/(y-x);
e = 1+pow(y-x,2);
f = d/e;
g = (y-x)*f;
res = c+g;
printf("\n x = %7.3lf\n y = %7.3lf\n z = %7.3lf\nResult = %lf\n",x,y,z,res);
puts("Press any key ...");
getch();
return 0;
}

Задание №2. Реализация разветвляющихся алгоритмов
2.3.9 Составить программу для вычисления значения rez в зависимости от поставленного условия.
Для получения результатов подобрать исходные данные так, чтобы выполнялись все возможные ветви алгоритма. Перед выводом полученного результата должно выводиться сообщение о ветви, при прохождении которой он получен. Обратите внимание, что возможен случай, при котором исходные данные не будут подходить ни для одного из предложенных условий.
rez =
Код программы:
#include <stdio.h>
#include <conio.h>
#include <math.h>

int main(int argc, char* argv[]){
double m1,m2,a,res;
puts("Input m1, m2");
res = scanf("%lf%lf",&m1,&m2);
a = fabs(m1-2*m2);
if (a>1) {
res = 2*(m1-m2)*exp(m1/m2-1.0);
puts(" |m1-2*m2|>1");
printf("\n\t Result = %8.6lf", res);
} else if (a>0.1) {
res = (m1-2*m2)/(m1*m1+2*m2*m2);
puts(" 0.1<|m1-2*m2|<=1");
printf("\n\t Result = %8.6lf", res);
} else {
puts(" |m1-2*m2|<=0.1");
puts("\n\t “Уважаемый преподаватель, я обратил внимание, что возможен случай, при котором исходные данные не будут подходить ни для одного из предложенных условий. Собственно это и есть тот самый случай"); // Codepage 866
}
puts("\nPress any key ...");
getch();
return 0;
}

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

3.3.9 Для каждого 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>

int main(int argc, char* argv[]){
double a,b,x,h,r,s,y,m;
int k,n,zn;
puts("Input a,b,h,n");
r = scanf("%lf%lf%lf%d",&a,&b,&h,&n);
for (x=a; x<=b; x+=h){
zn = -1;
for (k=1; k<=n; k++){
zn *= -1;
r = zn*pow(x,2*k+1)/(4.0*k*k-1.0);
s += r;
}
y = (1+x*x)/2*atan(x)-x/2;
m = fabs(y-s);
printf("\n x=%8.2lf\tY(x)=%8.5lf\tS(x)=%8.5lf\t|Y(x)-S(x)|=%8.5lf",x,y,s,m);
}
puts("\nPress any key ...");
getch();
return 0;
}

Задание №4. Обработка одномерных массивов
4.3.9 В одномерном целочисленном массиве (размер массива (не больше 20) и значения его элементов вводить с клавиатуры) вычислить:
Сумму элементов массива, расположенных после последнего элемента, равного нулю.
Код программы:
#include <stdio.h>
#include <conio.h>
#include <math.h>

int main(int argc, char* argv[]){
int a[20],n,i,t,r,s = 0,ni = -1;
puts("Input N (<=20)");
r = scanf("%d",&n);
for (i=0; i<n; i++){
printf("\t a[%d]=",i+1);
r = scanf("%d",&t);
a[i] = t;
if (t==0){
s = 0;
ni = i;
} else s += t;
}
if (ni>-1) printf("Sum = %d\n",s);
else printf("В массиве нет элементов равных нулю. Сумма всех элементов равна %d\n",s);
puts("Press any key ...");
getch();
return 0;
}

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

Код программы:

#include <stdio.h>
#include <iostream>
#include <conio.h>

int sum_count(int a, int b, int c, 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]>c){
s += x[i][j];
(*k)++;
}
return s;
}

int main(int argc, char* argv[]){
using namespace std;
int **a,i,j,n,m,t,sum,count;
cout << "\t Input N, M, T : ";
cin >> n >> m >> t;
a = new int*[n];
cout << "\n Input A\n";
for (i=0; i<n; i++){
a[i] = new int[m];
for (j=0; j<m; j++){
cout << "\t a[" << i+1 << "][" << j+1 << "] = ";
cin >> a[i][j];
}
}
cout << "\n Matrix A:\n";
for (i=0; i<n; i++){
for (j=0; j<m; j++)
cout << "\t" << a[i][j];
cout << endl;
}
sum = sum_count(n,m,t,a,&count);
cout << "\n Count = " << count << "\t Sum = " << sum << endl;
delete []a;
cout << "\n\t Delete !\n";
cout << " Press any key ...\n";
getch();
return 0;
}
Категория: Другое | Добавил: Pseudonym
Просмотров: 1364 | Загрузок: 30
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]