11722

Умовний оператор в мові С++

Лабораторная работа

Информатика, кибернетика и программирование

Лабораторна робота №8 Тема: Умовний оператор в мові С Мета роботи: отримання практичних навиків в роботі з умовним оператором і розгалуженими алгоритмами в мові С. Теми для попереднього опрацьовування логічні операції умовний оператор Завданн

Украинкский

2013-04-10

143.5 KB

8 чел.

Лабораторна робота №8

Тема: Умовний оператор в мові С++

Мета роботи: отримання практичних навиків в роботі з умовним оператором і розгалуженими алгоритмами в мові С++.

Теми для попереднього опрацьовування

  •  логічні операції
  •  умовний оператор

Завдання для виконання

          Побудувати програму, яка вводить координати крапки (x, у) і визначає, чи потрапляє крапка в заштриховану область на малюнку, який відповідає Вашому варіанту. Попадання на межу області вважати попаданням в область.

Варіанти індивідуальних завдань

Варіант 1                       Варіант 2                   

Варіант 3      Варіант   4 

              

Варіант 5       Варіант 6                

Варіант 7       Варіант 8

              

Варіант 9       Варіант 10

              

Варіант 11                         Варіант 12

                 

Варіант 13       Варіант 14

              

Варіант 15       Варіант 16

              

Варіант 17       Варіант 18

              

Варіант 19       Варіант 20

              

Варіант 21                         Варіант 22

                 

Варіант 23       Варіант 24

              

Варіант 25       Варіант 26

              

Варіант 27       Варіант 28

              

Варіант 29       Варіант 30

              

Приклад рішення задачі (варіант 30)

  1.  

Розробка алгоритму рішення.

          Першим кроком алгоритму повинне бути введення координат крапки: x і у. Для більшої зручності при аналізі результатів можна вивести введені значення на екран.           Дослідження зображення на малюнку-завданні дає нам підставу затверджувати, що цільова область утворюється перетином: прямою з коефіцієнтом -1 і зсувом +1 і кола з центром на початку координат і радіусом 1, як показано на малюнку справа

          Рівняння цієї прямої:
          y=-x+1 

          Рівняння кола:
          x2+y2=1 

          Для перевірки попадання крапки в задану область потрібно перевірити умови того, що:
          1). Крапка лежить вище прямій або на ній, тобто:
          y>=-x+1
          2). Крапка лежить усередині кола або на ній, тобто:
          x2+y2<=1
          Крапка лежить в області, якщо виконуються обидві умови, якщо ж не виконується хоча б одна з них, крапка лежить зовні області. Отже, ці умови повинні бути з'єднані логічною операцією "ТА".

          Схема алгоритму приведена на малюнку нижче.

2. Визначення змінних програми

          Для реалізації алгоритму нам будуть потрібні тільки змінні для зберігання значень координат x і у. В умовах завдання не приведені вимоги до точності обчислень, малюнок представлений з досить невисокою точністю, тому для цих змінних було б достатньо типу float. Але відповідно до загального стилю програмування на С++ виберемо для них тип double.

3. Розробка тексту програми

 

Текст програми починається з включення файлу:

   #include <stdio.h>

оскільки нам обов'язково знадобляться функції стандартного уведення-виведення, які описані в цьому файлі.

          Далі йде заголовок і відкриття головної функції:

   int main(void){

і оголошення змінних, визначених в пункті 2.

   double x, у;

          Для кожної координати виводиться запрошення на її введення і вводиться її значення:

   printf("Введіть координату x >");

   scanf("%lf",&x);

   printf("Введіть координату у >");

   scanf("%lf",&y);

          Введені значення координат виводяться на екран:

   printf("x=%6.3lf;  y=%6.3lf\n",x,y);

          Далі йде перевірка умов попадання крапки в область. Обидві умови перевіряються одним виразом. Оскільки крапка потрапляє в область, якщо виконуються обидві умови разом, умови у виразі сполучені операцією "логічне ТА":

   if ( (y>=1-x)&& (x*x+y*y<=1) )

          Якщо значення логічного виразу в умовному операторі є істиннимо, то виводиться повідомлення про потрапляння:

   printf("Крапка потрапляє в область\n");

          В осоружному випадку виводиться повідомлення про не потрапляння:

   else printf("Крапка не потрапляє в область\n");

       

Повний текст програми приведений нижче.

/****************************************************/

/*              Лабораторна робота №7                   */

/*                 Умовний оператор                         */

/*         Приклад виконання. Варіант №30        */

/****************************************************/

#include <stdio.h>

int main(void){

double x, у; /* координати крапки */

 /* введення координат */

 printf("Введіть координату x >");

 scanf("%lf",&x);

 printf("Введіть координату у >");

 scanf("%lf",&y);

 /* вивід тільки що введених значень */

 printf("x=%6.3lf;  y=%6.3lf\n",x,y);

 /* перевірка умов */

 if ( (y>=1-x)

      && (x*x+y*y<=1) )

    printf("Крапка потрапляє в область\n");

 else printf("Крапка не потрапляє в область\n");

 return 0;

}

4. Відладка програми

          Найважливіше у відладці цієї програми - переконатися в тому, що програма видає правильні результати при різних комбінаціях вхідних даних. Отже, необхідно підібрати такі комбінації, які були б показовими для різних випадків розміщення крапки. Пропонуємо такі комбінації:
          1). крапка лежить нижче області - (0.4, 0.4);
          2). крапка лежить на нижній межі області - (0.5, 0.5);
          3). крапка лежить усередині області - (0.7, 0.6);
          4). крапка лежить на верхній межі області - (0.707, 0.707);
          5). крапка лежить вище області - (0.8, 0.8);
          6). крапка лежить на правому краю області - (1.0, 0.0);
          7). крапка лежить на лівому краю області - (0.0, 1.0);

5. Результати роботи програми

          Нижче приведені результати роботи програми для вхідних даних по п. 4:

x=0.400;  y=0.400

Крапка не потрапляє в область

x= 0.500;  y= 0.500

Крапка потрапляє в область

x= 0.700;  y= 0.600

Крапка потрапляє в область

x= 0.707;  y= 0.707

Крапка потрапляє в область

x= 0.800;  y= 0.800

Крапка не потрапляє в область

x= 0.100;  y= 0.000

Крапка потрапляє в область

x= 0.000;  y= 1.000

Крапка потрапляє в область


 

А также другие работы, которые могут Вас заинтересовать

65112. Об основных этапах становления татарской нации 248.5 KB
  Проблему формирования татарской нации на сегодня трудно считать изученной сколько-нибудь исчерпывающе. Ее автор выделил три основных этапа становления татарской буржуазной нации: первый с конца ХVII до конца ХVIII вв.
65113. Проблема этнического единства татар 73.5 KB
  Самый свежий пример подобного рода относится к крымским татарам среди которых недавно происходила большая дискуссия по вопросу об идентичности быть ли им крымскими татарами къырым татарлары къырым татар халкы или принять название крымчан къырымлы къырым халкы.
65114. ТАТАРЫ (ПОПУЛЯРНЫЙ ОЧЕРК ЭТНИЧЕСКОЙ ИСТОРИИ И ДЕМОГРАФИИ) 92.5 KB
  Татары являются одним из крупных тюркоязычных этносов. Татарский народ прошел длительный путь исторического развития и имел в прошлом свою государственность древнетюркские каганаты Причерноморская Булгария Хазарский каганат Волжская Булгария Золотая Орда Казанское Крымское...
65115. Образование Золотой Орды и формирование средневекового татарского этноса (XIII – первая четверть XV века) 299.5 KB
  Золотая Орда как великая евразийская империя вторая после Тюркского каганата существовал сравнительно недолгий период а на фоне истории мировой цивилизации и достаточно незначительный. Это государство современники называли поразному...
65116. ЮГО-ВОСТОК ТАТАРСТАНА: ПРОБЛЕМА ИЗУЧЕНИЯ ЭТНИЧЕСКОЙ ИСТОРИИ РЕГИОНА XIV-XVII ВЕКОВ 123.5 KB
  В связи с состоянием источников ранняя история татарского населения юго-восточных районов республики остается исследованной недостаточно. Дискуссионным остается вопрос о существовании в этой зоне татарского населения до начала XVIII века.
65117. Из истории изучения формирования тюркоязычного населения Пермского края 63.5 KB
  Тюркоязычное население Пермского края татары и башкиры длительное время поддерживали интенсивные этнические контакты. Именно поэтому история изучения формирования пермских татар и башкир рассматривается вместе.
65118. К вопросу о клановой принадлежности Тайбугидов (по русским и тюркским источникам) 45 KB
  Носители титула Сибирский князь Тайбугиды возводимые в сохранившихся в составе так называемых Сибирских летописей родословных к некоему князю Тайбуге см. Родословная их согласно Сибирским летописям выглядит так: I II III IV Царь Он князь Тайбуга князь Ходжа князь Мар Адер Одер...
65119. К вопросу об этносоциальной структуре татарских ханств (на примере Казанского и Касимовского ханств ХV-сер. ХVI вв.) 49.5 KB
  Более чем двухвековой спор сторонников булгарского и золотоордынского ("татарского") происхождения волго-уральских татар сегодня приобретает новый импульс. Объясняется это тем, что появился целый ряд новых исследований, раскрывающих роль золотоордынско-тюркского компонента в формировании татар Поволжья.
65120. Чингисхан. Формирование личности Темучжина 117.5 KB
  В давнем споре эпоха ли создает личности или личности формируют эпоху нет пока ни победителей ни побежденных. Эпоха несомненно сыграла огромную роль в формировании личности Темучжина будущего Чингисхана. В любом случае это было время когда первое еще дочингисовское государство монголов именовавшееся...