Текст программы. Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

«Санкт-Петербургский государственный университет аэрокосмического приборостроения»

Кафедра 44

Руководитель

асс Вересов И.В.

Отчет

по лабораторной работе №4

по дисциплине ПРОГРАММИРОВАНИЕ

на тему: «Управляющие структуры “Циклы”»

П_АСП 44.4242.12

Работу выполнил

студент гр. В1441К Пономарев Алексей Валерьевич

СПб

2013 г.

Управляющая структура “Развилка”

Цель лабораторной работы: изучение концепций и освоение технологии структурного программирования, приобретение навыков структурного программирования на языке C/С++ циклических вычислений.

Задание на программирование: используя технологию структурного программирования, разработать программу решения двух индивидуальных задач, содержащую 3 вида циклических управляющих структур: Цикл - Пока (с предусловием), Цикл - До (с постусловием), Цикл - Для (с параметром). Реализовать интерфейс, обеспечивающий заданное расположение и назначение окон на экране при выполнении программы в соответствии с индивидуальным заданием

Текст программы

#include<iostream.h>;

#include<math.h>;

#include<conio.h>;

#include<stdlib.h>

#include<limits.h>

float recur1(int m, float y0, float y1);

float recur2(int m, float y0, float y1);

float recur3(int m, float y0, float y1);

float summ1(float eps);

float summ2(float eps);

float summ3(float eps);

void okno(int x1, int y1, int x2, int y2, int colfona, int colbukv);

void main()

{int var, m;

float rez1, rez2, rez3, eps, y0, y1, re1, re2, re3;

textbackground(BLACK);

textcolor(15);

clrscr();

for(;;)

{okno(43,5,78,10,1,15);

//vvod ish dannih

cprintf("\n vid deistviya:\n\r");

cprintf(" 1 - vichislenie po recurrentnoi formule\n\r");

cprintf(" 2 - nahojdenie summi ryada\n\r");

cprintf(" 3 - exit\n\r");

cprintf(" vvedite nomer deistviya ->");

cin >> var;

if (var!=1)

if(var!=2)

if(var!=3){

okno(43, 15, 78, 20, 6, 15);

cprintf (" nepravilnii cod deistviya ");}

switch(var)

{case 1: okno(5, 5, 40, 10, 2, 15);

//vvod ish dannih dlya 1

cprintf(" vvedite m ->");

cin >> m;

if (m >= 2){

okno(5, 5, 40, 10, 2, 15);

cprintf(" vvedite y0, y1 ->");

cin >> y0 >> y1;

re1 = recur1(m, y0, y1);

re2 = recur2(m, y0, y1);

re3 = recur3(m, y0, y1);

okno(5,15,40,20,4,15);

//vivod rez

cprintf(" dlya WHILE rezultat =%4.2f\n\r",re1);

cprintf(" dlya DO..WHILE rezultat =%4.2f\n\r",re2);

cprintf(" dlya FOR rezultat =%4.2f\n\r",re3);

}

else {

okno(43, 15, 78, 20, 6, 15);

cprintf ("!m<2 ");}

break;

case 2: okno(5, 5, 37, 10, 2, 15);

//vvod ish dannih dlya 2

cprintf(" vvedite tochnost vichesleniya\n\r");

cin >> eps;

rez1 = summ1(eps);

rez2 = summ2(eps);

rez3 = summ3(eps);

okno(5, 15, 40, 20, 4, 15);

//vivod rezultata

cprintf(" dlya WHILE rezultat =%f\n\r",rez1);

cprintf(" dlya DO..WHILE rezultat =%f\n\r",rez2);

cprintf(" dlya FOR rezultat =%f\n\r",rez3);

break;

case 3: abort();

//default: abort();

}//switch

}//for

}

//vivod okna na ekran

void okno(int x1, int y1, int x2, int y2, int colfona, int colbukv)

{window(x1, y1, x2, y2);

textbackground(colfona);

textcolor(colbukv);

clrscr();

}

//vicheslenie recurrentnogo virajeniya ciklom while

float recur1(int m, float y0, float y1)

{int i = 2;

float y;

while(i <= m)

{y = (y1 + y1 + y0)/3;

y0 = y1;

y1 = y;

i++;

}

return(y);

}

//vicheslenie recurrentnogo virajeniya ciklom do..while

float recur2(int m, float y0, float y1)

{int i = 2;

float y;

do

{y = (y1 + y1 + y0)/3;

y0 = y1;

y1 = y;

i++;

}

while(i <= m);

return(y);

}

//vicheslenie recurrentnogo virajeniya ciklom for

float recur3(int m, float y0, float y1)

{int i;

float y;

for(i = 2; i <= m; i++)

{y = (y1 + y1 + y0)/3;

y0 = y1;

y1 = y;

}

return(y);

}

//vicheslenie summi ryada ciklom while

float summ1(float eps)

{float rd=0, summa=0;

int n = 1;

while(fabs(rd) > eps)

{rd = 1/(n * n * (sin(n) + 1.1));

summa += rd;

n++;

}

return(summa);

}

//vicheslenie summi ryada ciklom do..while

float summ2(float eps)

{float rd=0, summa=0;

int n = 1;

do

{rd = 1/(n * n * (sin(n) + 1.1));

summa += rd;

n++;

}

while (fabs(rd) > eps);

return(summa);

}

//vicheslenie summi ryada ciklom for

float summ3(float eps)

{float rd=0, summa=0;

int n;

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

{rd = 1/(n * n * (sin(n) + 1.1));

if(fabs(rd) > eps) summa += rd;

else break;

}

return(summa);

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: