ФЕДЕРАЛЬНОЕ АГЕНТСТВО СВЯЗИ Ордена Трудового Красного Знамени федеральное государственное бюджетное образовательное учреждение высшего образования «МОСКОВСКИЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ СВЯЗИ И ИНФОРМАТИКИ» Кафедра "Информатики" Лабораторная работа №4 «Программирование алгоритмов вложенных циклических структур» Выполнил: студентка группы БИН2051 Голубочкина А. С. Проверил: Доцент Саркисова И. О. Москва 2020 Лабораторная работа №4 «Программирование алгоритмов вложенных циклических структур» 1. Задание на разработку проекта «Проект-ЛР4-11»: Построить таблицу значений функции z(x,y) и найти сумму и количество положительных значений функции при изменении x на отрезке [a; b] с шагом h1 и y на отрезке [c; d] с шагом h2. a= 1 b=5 h1= 0.4 c=0 d=6 h2=0.3 x +y z(x,y)= если x € [2;4] и y € [1;5], ( x + 1) если 1< x <2 и 0<y<1, x-y в противном случае 2. Расположение элементов на форме: Рис.1 Форма проекта ЛР 1-1 3. Таблица используемых объектов и их свойств. Объект Имя объекта Форма Form1 Текстовое поле textBox1 Текстовое поле textBox2 Текстовое поле textBox3 Текстовое поле textBox4 Свойство Таблица 1. Значение свойства Name Form1 Text БИН2051 Голубочкина А.С. ЛР4 Лабораторная работа №4 «Программирование алгоритмов вложенных циклических структур» BackColor (Palette Name Оранжевый Text “”(Пусто) Font Arial; 12 Enabled False Name txtNpoz Text “”(Пусто) Font Arial; 12 Enabled False Name txta Text “”(Пусто) Font Arial; 12 Enabled True Name txtb Text “”(Пусто) Font Arial; 12 Enabled True txtS Текстовое поле textBox5 Текстовое поле textBox6 Текстовое поле textBox7 Текстовое поле textBox8 Метка Метка Метка Метка Label1 Label2 Label3 Label4 Name txth1 Text “”(Пусто) Font Arial; 12 Enabled True Name txtc Text “”(Пусто) Font Arial; 12 Enabled True Name txtd Text “”(Пусто) Font Arial; 12 Enabled True Name txth2 Text “”(Пусто) Font Arial; 12 Enabled True Text Сумма z>0 BackColor Черный Font Arial; 12 Text Количество z>0 BackColor Черный Font Arial; 12 Text a BackColor Черный Font Arial; 12 Text b BackColor Черный Font Arial; 12 Метка Метка Метка Метка Метка Label5 Label6 Label7 Label8 Label9 Text h1 BackColor Черный Font Arial; 12 Text c BackColor Черный Font Arial; 12 Text d BackColor Черный Font Arial; 12 Text h2 BackColor Черный Font Arial; 12 Text Диапазон и шаг переменной BackColor Черный Font Arial; 12 Кнопка button1 Text Вычислить Кнопка Button2 Text Завершить 4. Разработка схемы алгоритма Рис.2 Вычисление функции func Рис.3 Схема алгоритма 5. Программный код проекта 6. //файл с функциями решения задачи 7. #include "stdafx.h" 8. //табулируемая функция двух переменных 9. float f(float x,float y) 10. { 11. float z; 12. if ((x >= 2 && x <= 4) && (y >= 1 && y <= 5)) 13. z=(x+y); 14. else 15. if (x>1 && x<2 && y>0 && y<1) 16. z=(sqrt(x+1)); 17. else z=(x-y); 18. return z; 19. } 20. //формирование таблицы значений функции 21. float RegCikl2(float a, float b, float h1, float c, float d, float h2,int& Npos, ListBox^ Lb) 22. { 23. int n1=floor((b-a)/h1)+1; 24. int n2=floor((d-c)/h2)+1; 25. float S=0; 26. Npos=0; 27. float x,y,z; 28. x=a; //начальное значение x 29. String ^ fs; //строка для вывода в listBox 30. // строка из 4-х пробелов для разделения столбцов x и y при выводе 31. String^ probel = String(' ',4).ToString(); 32. Lb->Items->Clear(); //очистка списка 33. for (int i=1;i<=n1;i++) 34. { 35. y=c; //начальное значение y 36. for (int j=1; j<=n2; j++) 37. { 38. z=f(x,y); // вычисление значения функции 39. if (z>0) {S+=z; Npos++;} 40. // формируем строк для вывода в ListBox 41. if (j==1) //чтобы x выводился только один раз 42. fs=String::Format("x={0,-9:F2}y={1,10:F6}{2,4}z={3,10:F6}", x,y,probel,z); 43. else 44. { 45. String^ ss=String(' ',12).ToString(); // 12 пробелов 46. fs=String::Format("{0,-12}y={1,10:F6}{2,4}z={3,10:F6}",ss,y,probel,z); 47. } 48. // выводим строку в ListBox 49. Lb->Items->Add(fs); 50. y+=h2; 51. } 52. x+=h1; 53. } 54. return S; 55. } 56. 6. Результаты выполнения проекта Рис.3 Результат вычислений 7. Доказательство правильности результатов