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

контрольная 5 1 семестр

.doc
Скачиваний:
3
Добавлен:
01.04.2014
Размер:
264.7 Кб
Скачать

СОДЕРЖАНИЕ

СОДЕРЖАНИЕ 1

Задание №1. Программирование линейных алгоритмов 2

Задание №2. Программирование разветвляющихся алгоритмов 3

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

Задание №4. Программирование с использованием одномерных массивов 7

Задание №5. Указатели. Программирование с использованием динамических двумерных массивов 9

При решении задач использовалась среда разработки Microsoft Visual Studio 2010 Ultimate.

Задание №1. Программирование линейных алгоритмов

Постановка задачи.

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

при x = –15,246; y = 4,642210−⋅; z = 21. Ответ s =–182,038.

Решение.

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

// task1.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include "math.h"

int _tmain(int argc, _TCHAR* argv[])

{

double x=-15.246,y=0.04642,z=21,a,b,c,result;

a=1/pow(y,sqrt(fabs(x)));

b=x-y/2;

c=pow(sin(atan(z)),2);

result=b*log(a)+c;

printf("S=%.3lf\n",result);

return 0;

}

Демонстрация

Задание №2. Программирование разветвляющихся алгоритмов

Постановка задачи.

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

Решение.

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

// task2.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include <iostream>

#include <math.h>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

double x, y, s;

cout << "Vvedite x: ";

cin >> x;

cout << "Vvedite y: ";

cin >> y;

if (x>y)

{

s = y*sqrt(fabs(x))+3*sin(x);

cout << "1 vetv. Result = " << s << endl;

}

else if (x<y)

{

s = x*sqrt(fabs(x));

cout << "2 vetv. Result = " << s << endl;

}

else { // иначе

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

cout << "3 vetv. Result = " << s << endl;

}

return 0;

}

Демонстрация

  1. X>Y

  1. X<Y

  1. Иначе

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

Постановка задачи.

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

Решение.

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

// task3.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include <iostream>

#include <math.h>

#include <iomanip>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

double s=0,pi=3.14159265,x, a, b, h;

int n, i;

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

cin >> a >> b >> h >> n; // Ввод значений: 0.1 1.2 0.1 20

x = a;

do

{

for (i = 1; i <= n; i++) // Вычисление суммы

s += cos(i*pi/4)*pow(x,i)/(i+1);

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

x += h; // Изменение значения x на величину шага h

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

cout << endl; // Переход на новую строку

return 0;

}

Демонстрация

Задание №4. Программирование с использованием одномерных массивов

Постановка задачи.

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

5. Вывести все неповторяющиеся элементы массива.

Решение.

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

// task4.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include <iostream>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

int a[5],i;

cout<<"Enter massive:"<<endl;

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

cin>>a[i];

cout<<"An array of nonrepeating elements"<<endl;

int counter=0; //Переменная счетчик, указывает текущий элемент для сравнения

while(counter < 5)

{

int re = 0; //переменная, показывающая есть ли совпадения

for (i=0;i<5;i++){ //Количество элементов массива

if(a[counter]==a[i]&&counter!=i) re=1; //совпало

}

if(re==0) cout<<a[counter]<<endl; //выводим только если не совпало.

counter++; //переходим к следующему элементу

}

return 0;

}

Демонстрация

Задание №5. Указатели. Программирование с использованием динамических двумерных массивов

Постановка задачи.

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

5. Определить сумму элементов, расположенных на главной диагонали матрицы, и произведение элементов, расположенных на побочной диагонали матрицы.

Решение.

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

// task5.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include <iostream>

#include <iomanip>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

double **a;

int i, j, n, m,sum=0,proizv=1;

cout << "Vvedite razmer: 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 << "Vvedite a[" << i << "][" << j << "]: " ;

cin >> a[i][j];

}

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

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

{

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

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

cout << endl;

}

cout << "Summa el-tov na glavnoi diagonali" << endl;

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

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

if(i==j)

sum+=a[i][j];

cout << sum << endl;

cout << "Proizvedenie el-tov na pobochnoi diagonali" << endl;

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

proizv*=a[n-1-i][i];

cout << proizv << endl;

return 0;

}

Демонстрация

11