100819

Використання умовного оператора if при створенні програм мовою С ++

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

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

Параметр умова являє собою вираз логічного типу. Логічний вираз (умова) формує результат типу bool. Якщо в умовному операторі if ... else після обчислення значення виразу в умові повинно бути виконано кілька операторів...

Украинкский

2018-04-19

354 KB

0 чел.

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

ВИКОРИСТАННЯ УМОВНОГО ОПЕРАТОРА IF ПРИ СТВОРЕННІ ПРОГРАМ МОВОЮ С ++

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

Теоретичні відомості

Параметр умова являє собою вираз логічного типу, який може включати в себе наступні операції відношення: <, >, ==, >=, <=, !=, &&, ||

Оператори відношень і логічні оператори

Оператор

Значення

>

Більше

>=

Більше або рівно

<

Менше

<=

Менше або рівно

==

Рівно

!=

Не рівно

&&

І

||

АБО

!

НЕ

Логічний вираз (умова) формує результат типу bool, рівний true або false. Якщо логічний вираз приймає значення true, то виконується оператор1, інакше (else) - логічний вираз дорівнює false, виконується оператор2.

Якщо в операторі if на результат логічного виразу false відсутній оператор (гілки else немає), то здійснюється перехід до оператора, наступного за умовним.

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

Приклади рішення завдань

Приклад 1.

Ввести три цілих числа і розташувати їх у порядку зменшення: x> y> z. Обчислити значення функції f (z) = 3,5 + sin z — 0.47z. Якщо отриманий результат f (z) <0, то обчислити модуль | f (z) |, інакше знайти залишок від ділення чисел x і y.

Блок-схема алгоритму програми:

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

1. Підключаємо в файлі stdafx.h необхідні для роботи програми бібліотеки:

#include <iostream> - для роботи операторів введення / виведення.

#include <math.h> - для використання математичних функцій.

using namespace std;

2. Розробка розділу опису змінних

int x, y, z, t, s;

float a, b;

x, y, z- три цілих числа, що вводяться з клавіатури;

s - ціла змінна, залишок від ділення x на y;

t - додаткова змінна;

a - дійсна змінна для обчислення значення f (z);

b - дійсна змінна для округлення значення f (z);

3. Розробка тіла програми

При введенні вихідних даних з клавіатури для підказки, що вводити, використовуємо оператор виведення на екран cout << з відповідним текстом. Потім використовуємо оператор введення cin >> із зазначенням необхідних змінних. Наприклад, фрагмент діалогового введення змінних x, y, z має вигляд:

cout << "Введіть три числа х, y і z \ n";

cin >> x >> y >> z;

Щоб вивести на екран числа x, y, z в порядку зменшення необхідно розташувати в змінній x найбільше значення, а в змінній z найменше значення. Для цього потрібно порівняти спочатку значення змінних x і y. Якщо x <y, то необхідно поміняти значення змінних: в x записати значення y, а в y записати значення x. Ця процедура здійснюється за допомогою додаткової змінної t:

if (x <y) // порівняння значень змінних

{

t = x; // присвоїти змінній t значення змінної х

x = y; // присвоїти змінній x значення змінної y

y = t; // присвоїти змінній y значення змінної t

}

Якщо x> y, то міняти місцями значення не потрібно, тому що таке розташування значень змінних задовільняє заданій умові (в змінній x повинно бути більше число).

Далі необхідно порівняти значення змінних x і z. Якщо x <z, то необхідно поміняти значення змінних, якщо ні, то програма переходить на наступний умовний оператор порівняння if (y <z).

if (x<z)

{

t = x;

x = z;

z = t;

}

if (y<z)

{

t = y;

y = z;

z = t;

}

Синтаксис програми

#include<iostream>

#include<math.h>

using namespace std;

int main ( )

{

int x, y, z, t, s;

floata, b;

cout<<” Введіть три цілих числа х, y и z \n”;

cin>>x>>y>>z;

// розташувати числа x, y, z в порядку зменшення

if (x<y)

{

t=x;

x=y;

y=t;

}

if(x<z)

{

t=x;

x=z;

z=t;

}

if(y<z)

{

t=y;

y=z;

z=t;

}

cout<<”Вивід значень x, y и z в порядку зменшення”<<’\n’;

cout<<x<<’’“<<y<<”“<<”“<<z<<’\n’;

a=13.5+sin (z) – 0.47*z;// обчислення значення f (z)

cout<<”Значення f (z)=”<<a<<’\n’;

if (a<0)

{

b=fabs(a);// знаходження модуля |f(z)|

cout<<”|f(z)|=”<<b<<’\n’;

}

else

{

s=x % y;// знаходження залишку від ділення x на y

cout<<”Залишок від ділення”<<x<<” на ”<<y<<” = ”<<s<<’\n’;

}

return 0;

}

Приклад 2.

Дана заштрихована область (рис.) і точка з координатами х і у, які вводяться з клавіатури. Написати програму, що визначає, чи потрапляє точка в заштриховану область. Результат вивести у вигляді текстового повідомлення.

Рис. Графічна побудова для завдання 2

Вибір методу

Запишемо умови потрапляння точки в область у вигляді формули. Крапка може потрапити в праве півколо або в ліве півколо, в обох випадках значення у має бути негативним. Для того щоб операція АБО була виконана раніше, ніж операція І, необхідні круглі дужки.

y<0 І ((x−1)2+y2≤1 АБО (x+1)2+y2≤1)

Схема алгоритму програми

Умовний оператор для визначення попадання точки в заштриховану область має вигляд:

if (y < 0&& ((x − 1)*(x − 1) + y * y<=1 || (x + 1)*(x + 1) + y*y <= 1))

cout<<” Точка попадає в область\n“;

else

cout<<” Точка не попадає в область\n”;

Синтаксис програми

#include<iostream>

using namespace std;

int main()

{

float x, y;

cout<<” Введіть координати точки \n”;

cin>>x>>y;

// перевірка попадання точки у заштриховану область

if (y < 0 && ((x − 1) * (x − 1) + y * y <= 1 || (x + 1)*(x + 1) + y * y <= 1))

cout<<” Точка попадає в область\n“;

else

cout<<” Точка не попадає в область\n”;

return 0;

}

Оператор-перемикач switch є модифікатором умовного оператора і дозволяє здійснювати багатоваріантний вибір, замінюючи групу вкладених операторів if-else. Схема алгоритму, яка реалізується оператором, представлена ​​на рисунку:

Параметр <вираз> - це вираз перераховувального типу: цілого, символьного, логічного або користувацького. Параметр знач 1, знач 2 ... знач n- const значення, які будуть порівнюватися із значенням виразу. При збігу цих значень буде виконуватися відповідний оператор. Якщо таких збігів не виявлено, то буде виконуватися оператор m в секції default. Значення default може бути відсутнім, в цьому випадку відбудеться перехід до наступного оператора. Оператор break служить для припинення виконання оператора-перемикача.

Приклад 3.

Написати програму, що визначає, яка з курсорних клавіш була натиснута.

Для визначення, яка з курсорних клавіш натиснута користувачем, використаємо функцію _getwch (), яка повертає код натиснутої клавіші. В разі натискання функціональних або курсорних клавіш ця функція повертає 0 або 0xE0 (в залежності від компілятора), а її повторний виклик дозволяє отримати розширений код клавіші.

Опис рішення задачі на псевдокоді

1. Початок.

2. Визначення натиснутої клавіші курсора.

3. Вивід результату на екран.

4. Кінець.

Блок-схема алгоритму програми

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

1. Підключаємо в файлі stdafx.h необхідні для роботи програми бібліотеки:

#include <iostream>  для роботи операторів вводу / виводу.

#include <conio.h>  для роботи функції _getch ().

using namespace std;

2. Розробка розділу опису змінних

int k;

k -змінна цілого типу, яка визначає код натиснутої клавіші.

3. Розробка тіла програми

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

Синтаксис програми

#include <iostream>

#include <conio.h>

using namespace std;

int main ()

{

int k;

cout << "Натисніть одну з курсорних клавіш \ n"; // вивід на екран тексту

k = _getwch (); // виклик функції, що визначає код натиснутої клавіші

k = _getwch (); // повторний виклик функції

switch (k) // оператор вибору

{

case77: cout << "Стрілка вправо \ n";

break;

case 75: cout << "Стрілка вліво \ n";

break;

case 72: cout << "Стрілка вверх \ n";

break;

case 80: cout << "Стрілка вніз \ n";

break;

default: cout << "Не стрілка \ n";

}

return 0;

}

Відлагодження і запуск програми

Для запуску програми на виконання використовуємо комбінацію клавіш Ctrl + F5. Результати роботи програми наведені нижче:

Натисніть одну з курсорних клавіш

Стрілка вгору

Натисніть одну з курсорних клавіш

Стрілка вправо

Індивідуальні завдання

Варіант 1

1. Скласти блок-схему алгоритму та програму, яка визначатиме, чи пройде куля з радіусом r в квадратний отвір зі стороною a.

2.Визначити номер квадранта, в якому знаходиться точка з заданими координатами х,у.

  1. Ввести з клавіатури два рядки і порівняти їх за кількістю символів.
  2. Використовуючи  умовний оператор, скласти програму для обчислення f(x), х ввести з клавіатури

5. Скласти програму для наступної задачі

Перевірити, чи лежить точка з заданими координатами на одній з сторін трикутника, що заданий координатами його вершин

6. Використовуючи оператор вибору, скласти програму для наступної задачі

За номером дня тижня вивести на друк робочий це день або вихідний, вважаючи вихідними суботу та неділю

7. Використовуючи оператор вибору, скласти програму для наступної задачі

Обчислити у = 1 + х / х2 для будь-якого значення х. Округлити отримане значення до найближчого цілого. Надрукувати назву старшої цифри отриманого числа.Варіант 2

  1. Скласти блок-схему алгоритму та програму, яка визначатиме, чи пройде куля з радіусом r в квадратний отвір зі стороною a.
  2. Визначити номер квадранта, в якому знаходиться точка з заданими координатами х,у.
  3. Ввести з клавіатури два рядки і порівняти їх за кількістю символів.
  4. Використовуючи  умовний оператор, скласти програму для обчислення f(x), х ввести з клавіатури

  1. Скласти програму для наступної задачі

Задані відрізки a,b,c,d. З’ясувати, чи утворюють вони паралелограм.

  1. Використовуючи оператор вибору, скласти програму для наступної задачі

За номером місяця вказати, до якої пори  року він відноситься

  1. Використовуючи оператор вибору, скласти програму для наступної задачі

Дано 3 десяткові цифри. Вивести на друк назву меншої з цих цифр і надрукувати її назву.Варіант 3

  1. Скласти блок-схему алгоритму та програму, яка визначатиме, чи пройде куля з радіусом r в квадратний отвір зі стороною a.
  2. Визначити номер квадранта, в якому знаходиться точка з заданими координатами х,у.
  3. Ввести з клавіатури два рядки і порівняти їх за кількістю символів.
  4. Використовуючи  умовний оператор, скласти програму для обчислення f(x), х ввести з клавіатури

  1. Скласти програму для наступної задачі

Задані площі кола і квадрата. З’ясувати, чи коло вписане в квадрат.

  1. Використовуючи оператор вибору, скласти програму для наступної задачі

За номером місяця вивести на друк кількість днів у ньому словами, наприклад: «У січні тридцять один день»

  1. Використовуючи оператор вибору, скласти програму для наступної задачі

Якщо перша цифра чотиризначного числа 1, то знайти суму цифр даного числа, якщо 2 - знайти різницю двох останніх цифр числа, якщо перша цифра 8, то знайти добуток двох останніх цифр числа, інакше, вивести на друк назву першої цифри числа.Варіант 4

  1. Скласти блок-схему алгоритму та програму, яка визначатиме, чи пройде куля з радіусом r в квадратний отвір зі стороною a.
  2. Визначити номер квадранта, в якому знаходиться точка з заданими координатами х,у.
  3. Ввести з клавіатури два рядки і порівняти їх за кількістю символів.
  4. Використовуючи  умовний оператор, скласти програму для обчислення f(x), х ввести з клавіатури

  1. Скласти програму для наступної задачі

Визначити, чи серед цифр заданого тризначного числа є однакові

  1. Використовуючи оператор вибору, скласти програму для наступної задачі

Одиниці маси пронумеровані в такий спосіб: 1 - кілограм, 2 - міліграм, 3 - грам, 4 - тонна. Дано номер одиниці маси і маса тіла M в цих одиницях (M - дійсне число). Вивести масу даного тіла в кілограмах.

  1. Використовуючи оператор вибору, скласти програму для наступної задачі

Якщо остання цифра тризначного числа 2, то знайти різницю цифр даного числа, інакше - надрукувати назву першої цифри тризначного числа.Варіант 5

  1. Скласти блок-схему алгоритму та програму, яка визначатиме, чи пройде куля з радіусом r в квадратний отвір зі стороною a.
  2. Визначити номер квадранта, в якому знаходиться точка з заданими координатами х,у.
  3. Ввести з клавіатури два рядки і порівняти їх за кількістю символів.
  4. Використовуючи  умовний оператор, скласти програму для обчислення f(x), х ввести з клавіатури

  1. Скласти програму для наступної задачі

Задати три числа і розташувати їх у порядку зростання.

  1. Використовуючи оператор вибору, скласти програму для наступної задачі

Одиниці відстані пронумеровані в такий спосіб: 1 - сантиметр, 2 - міліметр, 3 - дециметр, 4 - метр. Дано номер одиниці відстані і значення відстаніS в цих одиницях (s - дійсне число). Вивести масу даного тіла в кілометрах.

  1. Використовуючи оператор вибору, скласти програму для наступної задачі

Для цілого числа n, що вводиться з клавіатури, надрукувати фразу «мені n років», враховуючи при цьому, що при деяких значеннях n слово «років» треба замінити на слово «рік» або «роки».

Варіант 6

  1. Скласти блок-схему алгоритму та програму, яка визначатиме, чи пройде куля з радіусом r в квадратний отвір зі стороною a.
  2. Визначити номер квадранта, в якому знаходиться точка з заданими координатами х,у.
  3. Ввести з клавіатури два рядки і порівняти їх за кількістю символів.
  4. Використовуючи  умовний оператор, скласти програму для обчислення f(x), х ввести з клавіатури

  1. Скласти програму для наступної задачі

Задати кут в градусах і визначити, в якій чверті він знаходиться

  1. Використовуючи оператор вибору, скласти програму для наступної задачі

Створіть текстове меню, в якому при виборі першого пункту обчислюється косинус введеного числа, при виборі другого пункту – синус, при виборі третього — тангенс

  1. Використовуючи оператор вибору, скласти програму для наступної задачі

Для натурального числа k надрукувати фразу «Ми знайшли k грибів в лісі», погодивши закінчення слова «грибів» з числом k.

Варіант 7

  1. Скласти блок-схему алгоритму та програму, яка визначатиме, чи пройде куля з радіусом r в квадратний отвір зі стороною a.
  2. Визначити номер квадранта, в якому знаходиться точка з заданими координатами х,у.
  3. Ввести з клавіатури два рядки і порівняти їх за кількістю символів.
  4. Використовуючи  умовний оператор, скласти програму для обчислення f(x), х ввести з клавіатури

  1. Скласти програму для наступної задачі

Задати три числа і розташувати їх у порядку зростання.

  1. Використовуючи оператор вибору, скласти програму для наступної задачі

Створіть текстове меню, в якому при виборі першого пункту обчислюється значення квадрату введеного числа, при виборі другого пункту – значення кубу, при виборі третього пункту – значення квадратного кореня.

  1. Використовуючи оператор вибору, скласти програму для наступної задачі

Для натурального числа k надрукувати фразу «Ми знайшли k грибів в лісі», погодивши закінчення слова «грибів» з числом k.

Варіант 8

  1. Скласти блок-схему алгоритму та програму, яка визначатиме, чи пройде куля з радіусом r в квадратний отвір зі стороною a.
  2. Визначити номер квадранта, в якому знаходиться точка з заданими координатами х,у.
  3. Ввести з клавіатури два рядки і порівняти їх за кількістю символів.
  4. Використовуючи  умовний оператор, скласти програму для обчислення f(x), х ввести з клавіатури

  1. Скласти програму для наступної задачі

Визначити, чи задані три числа утворюють арифметичну прогресію

  1. Використовуючи оператор вибору, скласти програму для наступної задачі

Типи логарифму пронумеровані  в такий спосіб: 1 - натуральний, 2 - десятковий, 3 – з основою, значення якої вводиться з клавіатури. Ввести з клавіатури додатне значення і вивести для нього результат обчислень

  1. Використовуючи оператор вибору, скласти програму для наступної задачі

Знайти мінімальну цифру тризначного числа. Вивести на екран її назву. Визначити парність цього числа

Варіант 9

  1. Скласти блок-схему алгоритму та програму, яка визначатиме, чи пройде куля з радіусом r в квадратний отвір зі стороною a.
  2. Визначити номер квадранта, в якому знаходиться точка з заданими координатами х,у.
  3. Ввести з клавіатури два рядки і порівняти їх за кількістю символів.
  4. Використовуючи  умовний оператор, скласти програму для обчислення f(x), х ввести з клавіатури

  1. Скласти програму для наступної задачі

Визначити, чи задані три числа утворюють геометричну прогресію

  1. Використовуючи оператор вибору, скласти програму для наступної задачі

Написати програму обчислення вартості покупки з урахуванням знижки. Знижка в 5% надається якщо вартість покупки більше 500 гривень, в 15% якщо вартість більше 1000 гривень.

  1. Використовуючи оператор вибору, скласти програму для наступної задачі

Написати програму, яка запитує у користувача номер місяця народження, потім виводить назву місяця або повідомлення про помилку.

Варіант 10

  1. Скласти блок-схему алгоритму та програму, яка визначатиме, чи пройде куля з радіусом r в квадратний отвір зі стороною a.
  2. Визначити номер квадранта, в якому знаходиться точка з заданими координатами х,у.
  3. Ввести з клавіатури два рядки і порівняти їх за кількістю символів.
  4. Використовуючи  умовний оператор, скласти програму для обчислення f(x), х ввести з клавіатури

  1. Скласти програму для наступної задачі

Визначити, чи рік є високосним

  1. Використовуючи оператор вибору, скласти програму для наступної задачі

За номером вивести назви префіксів до одиниць вимірювань, наприклад: 1 - мілі, 2 - мікро і т.д.

  1. Використовуючи оператор вибору, скласти програму для наступної задачі

Якщо остання цифра тризначного числа 5, то знайти суму цифр даного числа, якщо 3 — знайти різницю цифр даного числа, інакше - надрукувати назву другої цифри тризначного числа

Варіант 11

  1. Скласти блок-схему алгоритму та програму, яка визначатиме, чи пройде куля з радіусом r в квадратний отвір зі стороною a.
  2. Визначити номер квадранта, в якому знаходиться точка з заданими координатами х,у.
  3. Ввести з клавіатури два рядки і порівняти їх за кількістю символів.
  4. Використовуючи  умовний оператор, скласти програму для обчислення f(x), х ввести з клавіатури

  1. Скласти програму для наступної задачі

Визначити, чи знаходиться точка з введеними координатами вище чи нижче прямої у=2х-3

  1. Використовуючи оператор вибору, скласти програму для наступної задачі

Створіть текстове меню, в якому при виборі першого пункту виводиться привітання, при виборі другого пункту – запрошення до роботи на комп’ютері, при виборі третього — пропонується завершити роботу

  1. Використовуючи оператор вибору, скласти програму для наступної задачі

Якщо перша цифра чотиризначного числа 2, то знайти різницю двох останніх цифр числа, якщо перша цифра більше 2 і менше 8, то знайти добуток двох останніх цифр числа, інакше, вивести на друк назву першої цифри числа.

Варіант 12

  1. Скласти блок-схему алгоритму та програму, яка визначатиме, чи пройде куля з радіусом r в квадратний отвір зі стороною a.
  2. Визначити номер квадранта, в якому знаходиться точка з заданими координатами х,у.
  3. Ввести з клавіатури два рядки і порівняти їх за кількістю символів.
  4. Використовуючи  умовний оператор, скласти програму для обчислення f(x), х ввести з клавіатури

  1. Скласти програму для наступної задачі

Задані площі кола і квадрата. З’ясувати, чи коло описує квадрат

  1. Використовуючи оператор вибору, скласти програму для наступної задачі

Для натурального числа k надрукувати фразу «Ми знайшли k грибів в лісі», погодивши закінчення слова «грибів» з числом k.

  1. Використовуючи оператор вибору, скласти програму для наступної задачі

Ввести з клавіатури ціле тризначне число. Вивести на екран назву другої цифри числа.

Варіант 13

  1. Скласти блок-схему алгоритму та програму, яка визначатиме, чи пройде куля з радіусом r в квадратний отвір зі стороною a.
  2. Визначити номер квадранта, в якому знаходиться точка з заданими координатами х,у.
  3. Ввести з клавіатури два рядки і порівняти їх за кількістю символів.
  4. Використовуючи  умовний оператор, скласти програму для обчислення f(x), х ввести з клавіатури

  1. Скласти програму для наступної задачі

Знайти різницю двох найменших з трьох чисел, що вводяться з клавіатури.

  1. Використовуючи оператор вибору, скласти програму для наступної задачі

Написати програму, яка запитує у користувача номер місяця народження, потім виводить назву місяця або повідомлення про помилку

  1. Використовуючи оператор вибору, скласти програму для наступної задачі

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

Зміст звіту

  1. Титульний аркуш.
  2. Мета роботи.
  3. Хід роботи з приведеними:
    • умовами задач;
    • блок-схемами алгоритмів;
    • кодами програм;
    • описом отриманого результату виконання програм;
    • скріни виконання програми.
      1. Висновки.


 

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

49076. Расчет термической обработки стали марки 5ХНМ 275.5 KB
  Если обрабатывается мягкий материал (дерево, пластмассы, цветные металлы) или при обработке стали и чугуна применяются малые скорости резания и стружка имеет малое сечение, то в единицу времени на процесс резания затрачивается мало энергии. Если обработка происходит при больших скоростях резания, обрабатываются твердые металлы и стружка имеет большое сечение
49077. ИССЛЕДОВАНИЕ ОРГАНА КОНТРОЛЯ ПОГАСАНИЯ ДУГИ 136.5 KB
  Исследуемая модель линии При угле передачи 0 и переходном сопротивлении Rпер=30 Ом напряжение на зажимах реактора относительно земли в фазе А где первый график модуль напряжения а второй угол. Используя значения напряжения после t=0.02 с изменяя место короткого замыкания а также значение угла передачи можно получить зависимости: Рисунок 2 Зависимость напряжения на реакторе от места повреждения при угле передачи 30 Рисунок 3 Зависимость напряжения на реакторе от места повреждения при...
49080. ДАТЧИК ВЛАЖНОСТИ 248.5 KB
  Описание физической величины Описание и выбор метода измерения влажности Метод высушивания Дистилляционный метод Экстракционные методы Химический метод Метод СВЧ-влагометрии Нейтронный метод Инфракрасные влагомеры Кондуктометрические датчики Выбор метода Выбор и описание датчика Влагомер ВП4 Влагомер для порошкообразных материалов Датчик влажности для формовочной смеси Датчик влажности для зерна Автоматическая...
49081. Разработка рациональной системы применения удобрений в конкретных почвенно-климатических условиях хозяйства 1.06 MB
  Производственные показатели для составления системы применения удобрений Выход навоза заготовка хранение и технология внесения органических удобрений Составление системы применения удобрений в расчете на планируемый урожай при освоении севооборота Составление системы применения удобрений на планируемый урожай в освоенном севообороте
49083. Шестипольный полевой севооборот в отделении совхоза Калининской области 1.31 MB
  Производственные показатели для составления системы применения удобрений. Выход навоза заготовка хранение и технология внесения органических удобрений. Технология внесения органических удобрений на примере одного поля. Составление системы применения удобрений на планируемый урожай при освоении севооборота18 4.
49084. Сущность демократической формы организации и осуществления власти 64 KB
  Проблема понимания демократии сейчас по-настоящему актуальна. В связи с провозглашением большинства политических систем современных государств демократическими, данным словом постоянно оперируют лица, связанные с политикой