Программирование линейных алгоритмов

Автор работы: Пользователь скрыл имя, 22 Января 2014 в 14:08, контрольная работа

Краткое описание

#include <iostream.h> // директивы препроцессора
#include <math.h>
int main()
{ // начало главной функции

Прикрепленные файлы: 1 файл

KR1-OAiP_1k-1s.doc

— 61.50 Кб (Скачать документ)

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

 

БГУИР

 

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

 

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

 

 

 

 

 

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

 

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

 

 

 

 

 

 

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

Специальности   МСТК

 

                            

 

Проверил: доцент Навродский А.А.

Оценка: ________________

________________________

(подпись)

________________________(дата)

Вариант №10

   

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

 

 
 

 

 

 

Задание№1

(Тема: Программирование линейных алгоритмов)

 

Условие:

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

s =2-x*√x+4√|y|*3√e1-sinz

при: x = 3,981*10-2; y = –1,625*103; z = 0,512.         Ответ: s = 1,26185.

 

Решение:

 

#include <iostream.h>       // директивы препроцессора

#include <math.h>

int main()

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

double x,y,z,s;          // объявление переменных с выделением памяти

cout <<"Vvedite x:"; // ввод исходных  переменных

cin>>x;

cout <<"Vvedite y:";

cin>>y;

cout <<"Vvedite z:";

cin>>z;

s=pow(2,-x)*sqrt(x+pow(fabs(y),1/4.))*pow(exp(x-1/sin(z)),1/3.);// подсчёт

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

return 0;                                       // возврат ОС начального состояния

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

 

 

 

 

 

 

 

 

 

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

 

Задание№2

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

 

Условие:

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

 

Решение:

 

#include <iostream.h>             // директивы препроцессора

#include <math.h>

int main()

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

double x,y,a,b,s;            // объявление переменных с выделением  памяти

cout <<"Vvedite x:"; cin>> x;     // ввод исходных переменных

cout <<"Vvedite y:"; cin>> y;

a=fabs(x*y); b=fabs(x);           // исключаем повторения вычислений  «|x*y|» и «|x|»

if (a>10){                                 // начало  функции «if» первой  ветви

       s=log(b+fabs(y)); cout<<"|x*y|>10, Resultat s="<<s<<endl; // считаем, выводим 1 ветвь

}                                              // конец первой ветви

else if (a<10) {                        // иначе, начало  функции «if»  второй ветви

       s=exp(x+y); cout<<"|x*y|<10, Resultat s="<<s<<endl;        // считаем, выводим 2 ветвь

}                                               // конец второй ветви

else {                                       // иначе (третья ветвь)

       s=pow(b,1/3.)+y; cout<<"|x*y|=10, Resultat s="<<s<<endl; // считаем, выводим 3 ветвь

}                                              // конец третьей ветви

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 x,y,a,b,h;          // объявление переменных с выделением  памяти

int n,i;                          // объявление целых переменных  с выделением памяти

cout<<"Vvedite kajdoe znachenie cheres ENTER: a,b,h,n:"<<endl;

cin>>a>>b>>h>>n;    // ввод исходных переменных

x=a;                            // первое значение «x»

do

{                                 // начало цикла «do»

y=1;                                               // начальное значение «y», при  «x=0» 

for(i=1;i<=n;i++)                          // условие подсчёта ∑

y+=pow(cos(x),i)/(2*i+1); // считаем ∑

cout<<setw(15)<<x<<setw(15)<<y<<endl; // вывод таблицы значений

x+=h;                                            // сдвиг на следующий член ∑

}                                 // конец цикла «do»

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

cout<<endl;               // конец строки

return 0;                    // возврат ОС начального состояния

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задание№4

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

 

Условие:

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

Решение:

 

#include <iostream.h> // директивы препроцессора

#include <math.h>

int main()

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

int a[10],i,k,b;

cout <<"Vvedite rasmer massiva:";   // ввод размера «k» массива

cin >> k;

for(i=0;i<k;i++)                                  // условие ввода чисел массива

                                   {                                                          // начало цикла «if»

cout <<"Vvedite a["<<i<<"]="; // ввод чисел массива

cin>> a[i];

}                                                          // конец цикла «if»

cout <<"Massiv a:"; //вывод на экран массива «a»

cout <<endl;             // конец строки

for(i=0;i<k;i++)       // условие вывода «a[i]»

cout <<a[i]<<" "; // вывод a[i] с пробелом

cout <<endl;             // конец строки

k--;       // уменьшаем «k» для сдвига «a[i]» в пределы массива

                                   b=k/2;  // пеменная середины массива

for(i=0;i<b&&a[i]==a[k];i++) // условие сравнения крайних чисел

{                                              // начало цикла «if»

k--;            // сдвиг влево для следующего сравнения

}                                             // конец цикла «if»

if(a[i]==a[k]) cout <<"Massiv simmetrichen"<<endl;

else cout <<"Massiv ne simmetrichen"<<endl;

return 0;               // возврат ОС начального состояния

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

 

 

 

 

 

 

 

 

 

 

Задание№5

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

динамических  двумерных массивов)

Условие:

 

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

 

Решение:

#include <iostream.h>

#include <iomanip.h>

#include <math.h>

int main()

{

double **a;

int i, j, n, m, imin, jmin;

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;

}

imin=1;                // Присваиваем min первому элементу под главной диагональю

jmin=0;

for(i=2;i<n;i++)  // условия сравнения элементов

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

{

if( a[i][j]< a[imin][jmin])                       // Поиск минимального значения

{   imin=i;

     jmin=j;  }

}

cout << "Min = " << a[imin][jmin]<< endl;

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

delete[]a[i];

delete[]a;

return 0;

}


Информация о работе Программирование линейных алгоритмов