This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
dydaktyka:cprog:2016:conditionals-solutions [2016/10/20 09:46] pkleczek [Zadanie INRANGE] |
— (current) | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Instrukcje warunkowe, operatory relacyjne i logiczne - rozwiązania i odpowiedzi ====== | ||
- | |||
- | Laboratorium: [[dydaktyka:cprog:2015:conditionals]] | ||
- | |||
- | ===== Zadanie IF-1 ===== | ||
- | |||
- | <code c if-1.c> | ||
- | #include <stdio.h> | ||
- | |||
- | int main() | ||
- | { | ||
- | int a, b; | ||
- | |||
- | printf("Podaj dwie liczby calkowite: "); | ||
- | scanf("%d %d", &a, &b); | ||
- | |||
- | if (a == b) { | ||
- | printf("1\n"); | ||
- | } else { | ||
- | printf("0\n"); | ||
- | } | ||
- | |||
- | return 0; | ||
- | } | ||
- | </code> | ||
- | |||
- | To zadanie można również rozwiązać znacznie krócej, nie korzystając z instrukcji ''if-else''. Poniższy program korzysta z faktu, że wyrażenie logiczne w języku C przyjmuje wartość całkowitą 0 (fałsz) bądź 1 (prawda): | ||
- | |||
- | <code c if-1_no-if.c> | ||
- | #include <stdio.h> | ||
- | |||
- | int main() | ||
- | { | ||
- | int a, b; | ||
- | |||
- | printf("Podaj dwie liczby calkowite: "); | ||
- | scanf("%d %d", &a, &b); | ||
- | |||
- | printf("%d\n", a == b); | ||
- | |||
- | return 0; | ||
- | } | ||
- | </code> | ||
- | |||
- | ===== Zadanie LOGOP-1 ===== | ||
- | |||
- | <code c logop-1.c> | ||
- | #include <stdio.h> | ||
- | |||
- | int main() | ||
- | { | ||
- | double a, b, c; | ||
- | |||
- | printf("Podaj trzy liczby: "); | ||
- | scanf("%lf %lf %lf", &a, &b, &c); | ||
- | |||
- | if (a > 0 && b > 0 && c > 0) { | ||
- | printf("Trzy dodatnie!\n"); | ||
- | } else if ((a > 0 && b > 0 && c <= 0) || (a > 0 && b <= 0 && c > 0) || (a <= 0 && b > 0 && c > 0)) { | ||
- | printf("Dwie dodatnie!\n"); | ||
- | } else { | ||
- | printf("Nic :(\n"); | ||
- | } | ||
- | |||
- | return 0; | ||
- | } | ||
- | </code> | ||
- | |||
- | ===== Zadanie SQEQ ===== | ||
- | |||
- | Uwagi: | ||
- | * W języku C operator ''^'' oznacza nie tyle potęgowanie, co operację [[https://pl.wikipedia.org/wiki/Alternatywa_wykluczaj%C4%85ca|XOR]] na bitach operandów :-) \\ Czyli nie piszemy ''delta = b ^ 2 + 4 * a * c'', tylko ''delta = b * b + 4 * a * c'' | ||
- | |||
- | <code c sqeq.c> | ||
- | #include <stdio.h> | ||
- | #include <stdlib.h> | ||
- | |||
- | int main() | ||
- | { | ||
- | double a, b, c; | ||
- | double delta; | ||
- | |||
- | printf("Podaj wspolczynniki a, b i c: "); | ||
- | scanf("%lf %lf %lf", &a, &b, &c); | ||
- | |||
- | delta = b * b - 4 * a * c; | ||
- | |||
- | printf("delta = %.4f : ", delta); | ||
- | |||
- | if (delta < 0) { | ||
- | printf("brak pierwiastkow"); | ||
- | } else if (delta == 0) { | ||
- | printf("jeden pierwiastek"); | ||
- | } else { | ||
- | printf("dwa pierwiastki"); | ||
- | } | ||
- | |||
- | printf("\n"); | ||
- | |||
- | return 0; | ||
- | } | ||
- | </code> | ||
- | |||
- | ===== Zadanie INRANGE-1 ===== | ||
- | |||
- | <code c inrange-1.c> | ||
- | #include <stdio.h> | ||
- | |||
- | int main() | ||
- | { | ||
- | double x; | ||
- | |||
- | printf("Podaj liczbe `x`: "); | ||
- | scanf("%lf", &x); | ||
- | |||
- | if (3 <= x && x < 6) { | ||
- | printf("Nierownosc spelniona!\n"); | ||
- | } else { | ||
- | printf("Nierownosc falszywa!\n"); | ||
- | } | ||
- | |||
- | return 0; | ||
- | } | ||
- | </code> | ||
- | |||
- | ===== Zadanie INRANGE-2 ===== | ||
- | |||
- | <code c inrange-2.c> | ||
- | #include <stdio.h> | ||
- | |||
- | int main() | ||
- | { | ||
- | double x; | ||
- | |||
- | printf("Podaj liczbe `x`: "); | ||
- | scanf("%lf", &x); | ||
- | |||
- | if (2 <= x && x < 7 && x != 5) { | ||
- | printf("Nierownosc spelniona!\n"); | ||
- | } else { | ||
- | printf("Nierownosc falszywa!\n"); | ||
- | } | ||
- | |||
- | return 0; | ||
- | } | ||
- | </code> | ||
- | |||
- | |||
- | ===== Zadanie EVEN ===== | ||
- | |||
- | <code c even.c> | ||
- | #include <stdio.h> | ||
- | #include <stdlib.h> | ||
- | |||
- | int main() | ||
- | { | ||
- | int n; | ||
- | |||
- | printf("Podaj liczbe calkowita: "); | ||
- | scanf("%d", &n); | ||
- | |||
- | if (n % 2 == 0) { | ||
- | printf("Liczba %d jest parzysta.\n", n); | ||
- | } else { | ||
- | // reszta z dzielenia wynosi 1 | ||
- | printf("Liczba %d jest nieparzysta.\n", n); | ||
- | } | ||
- | |||
- | return 0; | ||
- | } | ||
- | </code> | ||
- | |||