User Tools

Site Tools


dydaktyka:cprog:2015:loops-solutions

This is an old revision of the document!


Pętla "while" - rozwiązania i odpowiedzi

Priorytety operatorów

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) < 61 < 61 (co oczywiście nie jest pożądanym wynikiem).

Pętla "while"

Zadanie 1

#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;
}

Pętla "do-while"

Zadanie 1

#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;
}

Zadanie 2

#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;
}

Zadanie 1

dydaktyka/cprog/2015/loops-solutions.1446731230.txt.gz · Last modified: 2020/03/25 11:46 (external edit)