Liché a sudé funkce v programování v C
Operátor modulu v C
Operátor modulu v C (reprezentovaný jako symbol '%') působí jako typ rozdělení. Ale namísto rozdělení dvou čísel a vrácení kvocientu uživateli, operátor modulu rozdělí dvě čísla a vrátí zbytek jako celé číslo. V tomto příkladu dochází k dvěma operacím modulů, z nichž každá vrací stejnou hodnotu:
int x = 11% 4 / zbytek 11/4 = 3 int a = 13% 5 / zbytek 13/5 = 3
Modul použijte k určení sudých a lichých čísel
Vzhledem k tomu, že operace modulo určuje zbytek rozdělení mezi dvěma čísly, zdá se logické, že operátor modulo se používá k nalezení lichých a sudých čísel. Počitatelné číslo je podle definice libovolné číslo dělitelné číslem 2. Proto číslo vrátí nulu při získání modulu dělení o 2. Jednodušeji, číslo "n" je i když "n% 2" se rovná nule. Tento kód například definuje funkci, která má celé číslo a vrátí celé číslo (0 nebo 1) podle toho, zda je číslo rovnoměrné nebo ne.
int jeEven (int x) {return (x% 2); }}
Funkce generování sudých a lichých čísel
Při použití modulu se zdá jednoduché vytvořit funkci, která generuje lichá nebo lichá čísla. Programátor může považovat za užitečné vytvořit seznam sudých a lichých čísel. V takovém případě je jednoduchá smyčka a velikost pole zadaná uživatelem jedinou věcí, kterou potřebujete pro vytvoření sbírky čísel:
void evenGenerate (velikost int) {int i = 0;
pro (i; i <= velikost; i ++) {if (i% 2 == 0) cout << i << endl; }}
Toto generuje párná čísla. Programátor může změnit příkaz "if" a říci "if (i% 2 == 1)" pro generování lichých čísel.
Alternativy k modulu
Samotný modul není jednoduchá operace, ale obsahuje tři matematické výpočty v jednom. Je to proto, že operace "x% y" se skutečně rovná "x - y * (x / y)". Tímto způsobem programátor může tuto operaci rozdělit nebo najít způsoby, jak zahrnout části operace s jinými operacemi, aby optimalizoval čas. Ale pro použití a obecnou jednoduchost při kódování operátor modulu funguje dobře. Následuje příklad dvou metod společně v C:
int x = 10% 2; // 10/2 = 5 bez zbytku int y = 10 - (2 * (10/2)); // V pořadí, 10/2 = 5; 5 * 2 = 10; 10 - 10 = 0 odpočinku