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

к_1 алгоритмизация_вр3_фзо

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

Министерство образования Республики Беларусь

БГУИР

Факультет заочного обучения

Кафедра вычислительных методов и программирования

Контрольная работа № 1

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

в среде VISUAL C++»

Выполнил студент гр. 000000

Специальности ООО

Оооооооооооооо О.О.

Проверил:_______________

________________________

Оценка:_________________

________________________

(подпись)

________________________

(дата)

Почтовый адрес:

123456, Ооооооо обл., г.Ооооооооо, ул.Ооооооооо, д.00.

т. (8-029) 000-00-00 (МТС)

e-mail: ооооооооо@ооо.оо

2010

СОДЕРЖАНИЕ

1. Задание №1

Тема: Среда программирования VISUAL C++. Программирование линейных алгоритмов 3

2. Задание №2

Тема: Программирование разветвляющихся алгоритмов 4

3. Задание №3

Тема: Программирование циклических алгоритмов 5

4. Задание №4

Тема: Программирование с использованием одномерных массивов 7

5. Задание №5

Тема: Указатели. Программирование с использованием динамических массивов 9

ЗАДАНИЕ 1

Тема: Среда программирования VISUAL C++. Программирование линейных алгоритмов

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

Исходные данные: (Вариант 3)

.

При x = 3,74·10-2; y = -0,825; z = 0,16·102. Ответ: s = 1,05534.

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

#include<iostream.h> //Ввод библиотек

#include<math.h>

int main ()

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

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

cout<<"Vvedite x: "; //Ввод значений x,y,z

cin>>x;

cout<<"Vvedite y: ";

cin>>y;

cout<<"Vvedite z: ";

cin>>z;

a=1+pow(sin(x+y),2); //Вычисление выражения

b=fabs(x-2*y/(1+pow(x,2)*pow(y,2)));

c=pow(x,fabs(y));

d=pow(cos(atan(1/z)),2);

s=(a/b)*c+d;

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

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

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

Рисунок 1 - Результат выполнения программы отображенный на мониторе компьютера

ЗАДАНИЕ 2

Тема: Программирование разветвляющихся алгоритмов

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

Исходные данные: (Вариант 3)

.

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

#include<iostream.h> //Ввод библиотек

#include<math.h>

int main( )

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

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

cout<<"Vvedite x: "; //Ввод значений x,y

cin>>x;

cout<<"Vvedite y: ";

cin>>y;

double f_xy=x-y; //Объявление переменной

if (f_xy==0) {s=pow(x,2)+pow(y,1/3.)+sin(y); //x-y=0

cout<<"1Vetv.Result = "<<s<<endl;}

else if (f_xy>0) {s=pow(x-y,2)+log(fabs(x)); //x-y>0

cout<<"2Vetv.Result = "<<s<<endl;}

else {s=pow(y-x,2)+tan(y); //иначе

cout<<"3Vetv.Result = "<<s<<endl;}

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

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

Рисунок 2 - Результат выполнения программы отображенный на мониторе компьютера

ЗАДАНИЕ 3

Тема: Программирование циклических алгоритмов

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

Исходные данные: Вариант 3.

.

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

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

#include<iomanip.h>

#include<math.h>

int main()

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

double a,b,h,s,x;

int i,k;

cout<<"Vvedite a,b,h,k"<<endl; //Ввод значений a,b,h,k

cin>>a>>b>>h>>k; // 0.1 1.2 0.1 20

x=a;

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

{

s=0; //Обнуление перед циклом

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

s+=pow(x,i-1)/sin(i*x);

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

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

}

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

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

return 0;

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

Рисунок 3 - Результат выполнения программы отображенный на мониторе компьютера

ЗАДАНИЕ 4

Тема: Программирование с использованием одномерных массивов

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

Исходные данные: (Вариант 3) Найти и поменять местами элементы, имеющие минимальное и максимальное значения в массиве.

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

#include<iostream.h> //Включение библиотек

#include<math.h>

int main()

{

int a[100],i,n,min,max,min_ind,max_ind,temp;

cout<<"Vvedite razmer matricy : "; //Ввод одномерного массива

cin>>n;

cout<<endl;

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

{cout<<"Vvedite a["<<i<<" ] = ";

cin>>a[i]; }

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

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

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

cout<<endl<<endl;

min=max=a[0]; //Поиск min и max элементов

min_ind=max_ind=0; //массива

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

if(a[i]<min){min=a[i];min_ind=i;}

else if(a[i]>max){max=a[i];max_ind=i;}

cout<<"max = "<<max<<" ind = "max_ind<<endl; //Вывод max и min

cout<<"min = "<<min<<" ind = "min_ind<<endl; //элемента

cout<<endl;

temp=a[min_ind]; //Замена элементов

a[min_ind]=a[max_ind]; //в массиве

a[max_ind]=temp;

for(i=0;i<n;i++) //Вывод измененного

cout<<a[i] <<" "; //массива

cout<<endl<<endl;

return 0;

}

Рисунок 4 - Результат выполнения программы отображенный на мониторе компьютера

ЗАДАНИЕ 5

Тема: Указатели. Программирование с использованием динамических массивов

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

Исходные данные: (Вариант 3). Определить сумму отрицательных элементов, расположенных выше побочной диагонали матрицы.

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

#include<iostream.h>

#include<iomanip.h>

#include<math.h>

int main()

{

double **a,s;

int i,j,n,m;

cout<<" Vvedite razmer matr.N = ";

cin>>n;

cout<<endl;

m=n;

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<<endl;

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

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

{

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

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

cout<<endl;

}

s=0;

for(i=0;i<n-1;i++) //Определение суммы

for(j=0;j<m-1-i;j++) //отрицательных элем.

if(a[i][j]<0)s+=a[i][j];

cout<<endl<<" Summa otr.elem = "<<s<<endl<<endl;

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

delete[]a[i]; //памяти

delete[]a;

a=NULL;

return 0;

}

Для проверки применялась следующая матрица :

-1

3

6

4

2

5

-1

2

4

6

-3

-1

-5

7

9

0

-3

2

-3

1

-1

-4

1

-2

5

Рисунок 5 - Проверочная матрица

Рисунок 6 - Результат выполнения программы отображенный на мониторе компьютера

15