к_1 алгоритмизация_вр3_фзо
.doc
Министерство образования Республики Беларусь
БГУИР
Факультет заочного обучения
Кафедра вычислительных методов и программирования
Контрольная работа № 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 - Результат выполнения программы отображенный на мониторе компьютера