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

Автор работы: Пользователь скрыл имя, 03 Января 2012 в 22:11, контрольная работа

Описание работы

Составить программу для вычисления значения rez в зависимости от поставленного условия. Для получения результатов подобрать исходные данные так, чтобы выполнялись все возможные ветви алгоритма. Перед выводом полученного результата должно выводиться сообщение о ветви, при прохождении которой он получен. Обратите внимание, что возможен случай, при котором исходные данные не будут подходить ни для одного из предложенных условий.

Содержание работы

Задание 1 2
Задание 2 4
Задание 3 7
Задание 4 9
Задание 5 11
Литература. 14

Файлы: 1 файл

ОАиП.doc

— 170.50 Кб (Скачать файл)
 

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

Учреждение  образования

«БЕЛОРУССКИЙ  ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИНФОРМАТИКИ  И РАДИОЭЛЕКТРОНИКИ»

Институт  информационных технологий 
 
 
 
 
 
 
 
 
 

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

КОНТРОЛЬНАЯ РАБОТА 

По курсу «Основы алгоритмизации и программирования» 

Вариант № 10 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

Содержание 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Задание 1

 

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

10. При x = 3.981´10-2, y = –1.625 ´ ´103, z = 0.512  ® a = 1.26185.
 

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

#include <iostream.h>

#include <conio.h>

#include <math.h> 

int main(){ 

      double x, y, z, a; 

      // Ввод исходных данных

      cout << "x =\t";

      cin >> x; endl;

      cout << "y =\t";

      cin >> y; endl;

      cout << "z = \t";

      cin >> z; endl; 

      // Вычисление формулы

      a = pow(2,-x)*sqrt(x+pow(fabs(y),1./4))*pow(exp(x-1/sin(z)),1./3);

      // Вывод результата

      cout << "\nX = " << x << "\nY = " << y

            << "\nZ = " << z << "\na = " << a << endl;

      cout << "Press any key..." << endl; 

      getch();

      return 0;

}

Результаты  работы программы

Задание 2

    Составить программу для вычисления значения rez в зависимости от поставленного условия. Для получения результатов подобрать исходные данные так, чтобы выполнялись все возможные ветви алгоритма. Перед выводом полученного результата должно выводиться сообщение о ветви, при прохождении которой он получен. Обратите внимание, что возможен случай, при котором исходные данные не будут подходить ни для одного из предложенных условий.

      10.  rez  =  .  
 

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

#include <iostream.h>

#include <conio.h>

#include <math.h> 

int main(){

      double s, n, rez; 

      // Ввод исходных данных

      cout << "Vvedite s =\t";

      cin >> s; endl;

      cout << "Vvedite n =\t";

      cin >> n; endl;

      // Логические выражения

      if (s > fabs(n)/2 && s <= fabs(n)){

            rez = sqrt(fabs(s*exp(2)-n*exp(-2)));

            cout << "\ns > fabs(n)/2 && s <= fabs(n)" << endl;

            cout << "\trez = " << rez << endl;

      }

      else {

            if (s >= fabs(n)){

                  rez = sqrt(fabs(s-n)*pow(sin(s+n),3));

                  cout << "\ns >= fabs(n)" << endl;

                  cout << "\trez = " << rez << endl;

            }

            else 

                  cout << "Ne opredeleno...." << endl;

      } 

      // Вывод результата

      cout << "\nPress any key..." << endl; 

      getch();

      return 0;

}

Результаты  работы программы

Выполнение 1-го условия 

Выполнение 2-го условия 

Выполнение 3-го условия 

Задание 3

Для каждого  x, изменяющегося от a до b с шагом h, найти значения функции Y(x), суммы S(x) и |Y(x)–S(x)| и вывести в виде таблицы. Значения a, b, h и n вводятся с клавиатуры.

Работу программы  проверить для a = 0,1; b = 1,0; h = 0,1; значение параметра n выбрать в зависимости от задания.

10. ,    .

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

#include "stdio.h"  

#include "conio.h"  

#include "math.h"  

void main()   

{

double Y,S,a,b,h,n,x,k,f,z,i; 

puts("Vvedite a,b,h,n\n"); 

      scanf("%lf%lf%lf%lf",&a,&b,&h,&n);  

for (x = a;x <= b;x += h)  

      { 

       

S = 1;  

            printf("x = %.3lf",x);   

f = 1;  

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

    {

   

      for(i = 1;i <= 2*k;i++)

       {

       f=f*i;

       } 

            S+=pow(x,2*k)/f;  

            }

            printf("   S(x) = %.5lf",S);  

      Y =(exp(x)+exp(-x))/2;

            printf("   Y(x) = %.5lf",Y);  

            z = fabs(Y-S);    

            printf(" |Y(x)-S(x)| = %.5lf\n",z);  

      }

  getch();     

}

Результаты  работы программы

Задание 4

В одномерном целочисленном  массиве (размер массива (не больше 20) и значения его элементов вводить с клавиатуры) вычислить:

Сумму модулей элементов массива, расположенных  после минимального по модулю элемента.

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

#include <iostream.h>

#include <conio.h> 

int main(){

      typedef int mas[20]; // îïðåäåëåíèå òèïà ìàññèâ

      mas a;     // îïðåäåëåíèå ìàññèâà À

      unsigned short int iMinA, n, s=0, i, k, min=0; 

      cout << "Vvedite N (<=20):\t";

      cin >> n;

      cout << "\nMassiv A:" << endl;

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

            cout << "\t a[ " << i+1 << " ] = ";

            cin >> a[i];

            if (a[i]<0){

            a[i]=a[i]*(-1);

            }

      } 

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

            for (k=1; k<n-1; k++){ 

                  iMinA = (a[i] < a[k]) ? i : k; 

            } 

            if (a[iMinA] < a[min]) min = iMinA; // áûëè ëè óæå ÷èñëà ìåíüøå

      } 

      cout << "\n Minimal'nyi element massiva \"a[" << min+1 << "]\" is:\t" << a[min] << endl; 

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

            s += a[i];

       

      cout << "\nSumma = " << s << endl; 

      cout << "\n\nPress any key to exit" << endl; 

      getch();

      return 0;

}

Результаты  работы программы

Задание 5

В целочисленном  двухмерном динамическом массиве (матрице) размером N´М . 16. Найти число элементов массива < T* и их сумму. 

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

#include <iostream.h>

#include <conio.h>

#include <math.h>

void pr_kol(int, int, int, int**, int*);

void main()

{

int **a, i, j, n, m, T, kol;

cout << "\t Vvedite n, m, T : ";

cin >> n >> m >> T;

a = new int*[n];     

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

                a[i] = new int[m];

cout <<"\n Vvedite massiv" << endl;

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

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

                        cout << "\t a[" << i+1 << "][" << j+1 << "] = ";

                        cin >> a[i][j];

                }

cout <<"\n Massiv:" << endl;

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

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

                        cout << "\t" << a[i][j];

                cout << endl;

}

pr_kol(n, m, T, a, &kol);  

if (kol != 0)

   cout << "\n Summa = " << kol << endl;

else cout << "\n Elem < T net" << endl;

delete []a;    

cout << "\n\t Delete !" << endl;

cout << " Press any key ... " << endl;

getch();

}

void pr_kol(int a, int b, int T, int **x, int *k)

{

int i, j,m;

m=1;

*k = 0;

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

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

                  if(x[i][j] < T) 

                          (*k)=(*k)+x[i][j];

}

Результаты работы программы

 
 
 
 
 
 
 
 
 
 
 
 

Литература.

 
  1. Батура  М.П., Бусько В.Л., Корбит А.Г., Кривоносова  Т.М. Основы алгоритмизации и программирования. Язык Си : учеб.пособие. – Минск : БГУИР, 2007. 
  2. Березин Б.И., Березин С.Б. Начальный курс С и С++. – М.: Диалог-Мифи, 2004.
  3. Вирт Н. Алгоритмы и структуры данных. – М.: Мир,1989.
  4. Демидович Е.М. Основы алгоритмизации и программирования. Язык Си. – СПб.: БХВ-Петербург,2006.
  5. Ляхович В.Ф., Крамаров С.О. Основы информатики. – Ростов н/Д: Феникс, 2003.
  6. Страуструп, Б. Язык программирования C++ / Б. Страуструп: 2-е изд.: В 2 т. – Киев: ДиаСофт, 1993.

Информация о работе Основы алгоритмизации и программирования