Funcții ciudate și uniforme în programarea în C
Operatorul de module din C
Operatorul de module din C (reprezentat ca simbol '%') acționează ca un tip de divizare. Dar, în loc să împartă două numere și să returneze coeficientul pentru utilizator, operatorul modulului împarte două numere și returnează restul ca un întreg. În acest exemplu, apar două operații ale modulului, fiecare returnând o valoare identică:
int x = 11% 4 // restul de 11/4 = 3 int și = 13% 5 // restul de 13/5 = 3
Utilizați modulul pentru a determina numerele paralele și impare
Deoarece operația modulo determină restul unei divizări între două numere, pare logic ca operatorul modulo să fie folosit pentru a găsi numere impare și neregulate. Un număr par, prin definiție, este orice număr divizibil cu 2. Prin urmare, numărul returnează un zero la obținerea modulului divizării cu 2. Mai simplu, un număr "n" este chiar dacă "n% 2" este egal cu zero. De exemplu, acest cod definește o funcție care ia un număr întreg și returnează un număr întreg (0 sau 1) în funcție de faptul dacă numărul este egal sau nu.
int esteEven (int x) {retur (x% 2); }
O funcție de generare de numere par și impare
Folosind modulul de operare, se pare simplu să se creeze o funcție care generează numere impare sau neregulate. Un programator poate considera că este util să genereze o listă cu numere par și impare. În acest caz, este simplu pentru buclă și dimensiune de câmp introdusă de utilizator singurul lucru pe care trebuie să-l creați o colecție de numere:
void evenGenerate (dimensiunea int) {int i = 0;
pentru (i; i <= mărime; i ++) {if (i% 2 == 0) cout << i << endl; }}
Acest lucru generează cifre solide. Programatorul poate schimba instrucțiunea "if" pentru a spune "if (i% 2 == 1)" pentru a genera numere impare.
Alternative la Modulus
Modulul în sine nu este o operație simplă, ci conține trei calcule matematice într-una. Acest lucru se datorează faptului că operația "x% y" este de fapt egală cu "x - y * (x / y)". Cunoscând acest lucru, un programator poate împărți operația sau poate găsi modalități de a încorpora părțile operației cu alte operații pentru a optimiza timpul. Dar pentru utilizare și ușurința generală în codarea operatorului de module funcționează bine. Următoarele servește ca un exemplu de două metode împreună în C:
int x = 10% 2; // 10/2 = 5 fără restul int y = 10 - (2 * (10/2)); // În ordine de operare, 10/2 = 5; 5 * 2 = 10; 10 - 10 = 0 odihnă