This is an old revision of the document!
Laboratorium: Pętla "while", formatowanie kodu, debuggowanie
Aby sprawdzić, czy dla zadanej liczby $x$ zachodzi $4 < x < 6$ należy zapisać wyrażenie następująco:
if (4 < x && x < 6) ...
Wyrażenie 4 < x < 6
zgodnie z priorytetami operatorów równoważne jest (4 < x) < 6
, a ponieważ w języku C operatory porównania (np. '<') zwraca wartość całkowitą 1
bądź 0
, to przykładowo dla $x = 7$ otrzymamy (1 < 7) < 6
⇔ 1 < 6
⇔ 1
(co oczywiście nie jest pożądanym wynikiem).
#include <stdio.h> #include <stdlib.h> int main() { int n = 5; int k = 3; int iloczyn = 0; int n0 = n; // zapamietaj wartosc `n`, bo bedziemy ja modyfikowac... while (n > 0) { iloczyn = iloczyn + k; n = n - 1; } printf("%d * %d = %d\n", n0, k, iloczyn); return 0; }
#include <stdio.h> #include <stdlib.h> int main() { int n; do { printf("Podaj liczbe dodatnia: "); scanf("%d", &n); } while (n <= 0); printf("OK, wpisano %d.\n", n); return 0; }
#include <stdio.h> #include <stdlib.h> int main() { int n; do { n = rand() % 101; } while (n < 10 || n > 15); // zgodnie z prawem de Morgana: // ~(a && b) == ~a || ~b printf("OK, wpisano %d.\n", n); return 0; }