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

ОАиП Вариант №8 (ФЗО) 1 курс

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

ЗАДАНИЕ 1

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

Алгоритм решения для данного математического выражения на языке программирования С++ выглядит следующим образом:

#include <iostream.h> //Подключение необходимых библиотек

#include <math.h>

int main ()

{ //Начало главной функции программы

double a, b, c, s, x, y, z; //Объявление переменных

cout<<"Enter x: "; //Ввод значений переменных по заданию

cin>>x;

cout<<"Enter y: ";

cin>>y;

cout<<"Enter z: ";

cin>>z;

a=exp(fabs(x-y))*pow(fabs(x-y),(x+y)); //Вычисления

b=atan(x)+atan(z);

c=pow(pow(x,6)+pow(log(y),2),1/3.);

s=a/b+c;

cout<<"Result s= " << s << endl; //Вывод результата на экран

return 0; //Завершение выполнения программы

} //Конец главной функции

ЗАДАНИЕ 2

Составить программу вычисления выражения согласно указанному варианту. Предусмотреть вывод информации о выбранной ветви вычислений.

Листинг программы выглядит так:

#include <iostream.h> //Подключение необходимых библиотек

#include <math.h>

int main ()

{ //Начало главной функции программы

double s, x, y; //Объявление переменных

cout<<"Enter x: "; //Ввод значений переменных по заданию

cin>>x;

cout<<"Enter y: ";

cin>>y;

double f_xy=x/y;

if (f_xy<0) { //Срабатывает при x/y<0

s=pow(pow(x,2)+y,3);

cout<<"1'st Result offset= "<<s<<endl;

}

else if (f_xy>0) { //Срабатывает при x/y>0

s=log(fabs(f_xy)+f_xy);

cout<<"2'nd Result offset= "<<s<<endl;

}

else { //Срабатывает в любых других случаях

s=pow(fabs(sin(y)),1/3.);

cout<<"3'rd Result offset= "<<s<<endl;

}

return 0; //Завершение выполнения программы

} //Конец главной функции

ЗАДАНИЕ 3

Вывести на экран таблицу значений функции y(x) для x, изменяющегося от a = 0,1 до b = 1,2 с шагом h = 0,1.

Листинг программы выглядит следующим образом:

#include <iostream.h> //Подключение необходимых библиотек

#include <math.h>

#include <iomanip.h>

int main()

{ //Начало главной функции программы

double s, x, a, b, h;

int n, i;

cout<<"Enter a, b, h, n:"<<endl;

cin>>a>>b>>h>>n; //Ввод значений 0,1 1,2 0,1 20

x=a;

do //Начало цикла по х

{

s=1; //Значение суммы при n=1

for(i=1;i<=n;i++); //Цикл вычисления суммы s

s+=(2*pow(n,2)+1)/2*n*pow(x,2*n-2);

cout<<setw(15)<<x<<setw(15)<<s<<endl; //Вывод таблицы

x+=h; //Увеличение х на значение шага h

}

while(x<=b+h/2); //Проверка условия продолжения цикла по х

cout<<endl;

return 0;

}

ЗАДАНИЕ 4

Ввести одномерный статический массив из k чисел. Выполнить в соответствии с номером варианта индивидуальное задание и вывести на экран исходные данные и полученный результат.

8. Удалить минимальный и максимальный элементы массива.

Поставленная задача решается с помощью такой программы:

#include <iostream.h>

#include <math.h>

int main()

{

int a[10], i, j, n, min, imin, max, imax;

cout << "Enter size: "; //Ввод одномерного массива

cin >> n;

for (i=0; i<n; i++)

{

cout << "Enter a[" << i << "]= " ;

cin >> a[i];

}

cout << "Massiv a:" << endl; //Вывод одномерного массива

for (i=0; i<n; i++)

cout << a[i] << " " ;

cout << endl;

min=max=a[0]; //Определение min и max

imin=imax=0; //элементов массива и их индексы

for (i=1; i<n; i++)

if (a[i]<min)

{

min=a[i];

imin = i;

}

else

if (a[i]>max)

{

max=a[i];

imax = i;

}

for (i=0; i<n; i++)

{

if (a[i]==min) //Если минимальный, то

{

for (j=i+1; j<n; j++) //сдвинуть все элементы, стоящие

a[j-1]=a[j]; //после удаляемого на одну позицию

n--; //Уменьшение размера массива

i--; //Возврат к предыдущему индексу

}

if (a[i]==max) //То же, но для максимального элемента

{

for (j=i+1; j<n; j++)

a[j-1]=a[j];

n--;

i--;

}

}

cout << "Max = " << max << " i=" << imax << endl; //Вывод min, max

cout << "Min = " << min << " i=" << imin << endl; //и их индексов

cout << "Massiv a:" << endl; //Вывод результирующего массива

for (i=0; i<n; i++)

cout << a[i] << " " ;

cout << endl;

return 0;

}

ЗАДАНИЕ 5

Ввести матрицу размером NxM. Память для массива выделить динамически. Выполнить в соответствии с номером варианта индивидуальное задание и вывести на экран исходные данные и полученный результат.

8. Найти минимальный среди элементов, лежащих выше главной диагонали.

Алгоритм поставленной задачи на языке С++ выглядит так:

#include <iostream.h>

#include <iomanip.h>

#include <math.h>

int main()

{

double **a;

int i, j, n, m, min;

cout << "Enter size: n, m" << endl;

cin >> n >> m;

a = new double*[n]; //Выделение памяти под массив указателей

for(i=0; i<n; i++) //Выделение памяти под соответствующие

a[i] = new double[m]; //этим указателям строки матрицы

for (i=0; i<n; i++) //Ввод двухмерного массива

for (j=0; j<m; j++)

{

cout << "Enter a[" << i << "][" << j << "]: " ;

cin >> a[i][j];

}

cout << "Array A:" << endl; //Вывод двумерного массива

for (i=0; i<n; i++)

{

for (j=0; j<m; j++)

cout << setw (9) << a[i][j] << " ";

cout << endl;

}

min=a[0][1]; //Поиск минимального элемента выше диагонали

for (i=0; i<n-1; i++)

for (j=1; j<m-i; j++)

if (a[i][i+j]<min)

min=a[i][i+j];

cout <<"Min element = "<< min << endl; //Вывод результата

for(i=0; i<n; i++) //Освобождение выделенной памяти

delete [] a[i];

delete []a;

a = NULL;

cout << endl;

cin >>i;

return 0;

}

ИСПОЛЬЗОВАННАЯ ЛИТЕРАТУРА

1. А. А. Навроцкий, И. Н. Коренская, В. Л. Бусько

«Основы алгоритмизации и программирования в среде visual c++»

БГУИР, Минск 2009

2. В.Л.Бусько, А.Г.Корбит, Т.М.Кривоносова

«Основы алгоритмизации и программирования. Конспект лекций»

Минск 2006

3. Различные источники Интернета подобной тематики.

13