User Tools

Site Tools


dydaktyka:cprog:2016:conditionals-solutions

This is an old revision of the document!


Instrukcje warunkowe, operatory relacyjne i logiczne - rozwiązania i odpowiedzi

Zadanie IF-1

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

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):

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

Zadanie LOGOP-1

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

Zadanie SQEQ

Uwagi:

  • W języku C operator ^ oznacza nie tyle potęgowanie, co operację XOR na bitach operandów :-)
    Czyli nie piszemy delta = b ^ 2 + 4 * a * c, tylko delta = b * b + 4 * a * 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;
}

Zadanie EVEN

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;
}
dydaktyka/cprog/2016/conditionals-solutions.1476945533.txt.gz · Last modified: 2020/03/25 11:46 (external edit)