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

ИТиУвТС / ОАИП контр 1 вар 9

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

Задание №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;

}