#include <stdio.h> /* definicja funkcji */ int nwd(int a, int b) { int c; while (b != 0) { c = a % b; a = b; b = c; } return a; } int main() { /* deklaracje zmiennych */ int a, b; /* instrukjce programu */ printf("Podaj dwie liczby calkowite dodatnie: "); scanf("%d %d", &a, &b); if ( a >0 && b > 0) printf("NWD(%d,%d) = %d\n", a, b, nwd(a,b)); else printf("Niepoprawne dane\n"); return 0; }
Specyfikatory formatu
#include <stdio.h> /* program wczytuje i wyswietla wartosc podanej liczby rzeczywistej */ int main() { float x; printf("Podaj liczbe: "); scanf("%f", &x); printf("Podales liczbe %.3f \n", x); printf("Notacja naukowa %e \n", x); return 0; }
rand()
generator liczb losowych exit()
zamknięcie programu system()
uruchomienie polecenia systemowegoclock()
czas wykonywania programutime()
czas od dnia 1 stycznia 1970 roku #include<math.h> #include<stdio.h> int main() { float x, y; scanf("%f", &x); y = sqrt(x); printf("Pierwiastek z %f wynosi %f\n", x, y); }
Co wyświetli poniższy kod?
#include <stdio.h> int main ( ) { float x = 0.1; if ( x == 0.1 ) printf ( "OK" ) ; else printf ( "Nie OK") ; }
Napisz program wyznaczający precyzję obliczeniową (epsilon maszynowy) dla typu float
.
Porównaj uzyskany wynik z wartością stałej FLT_EPSILON
zadeklarowanej w pliku nagłówkowym <float.h>
.
Dodatkowe ćwiczenia nie podlegające ocenie.
Ćw. 1
Napisz program znajdujący pierwiastki równania kwadratowego $$y = ax^2 + bx + c$$ dla dowolnych $a, b, c$.
Przy wyznaczaniu pierwiastków tradycyjnym podejściem (z wyznaczeniem delty) może dojść do istotnego błędu zaokrągleń gdy delta $\sqrt{\Delta}$ jest bliska $b$. Spróbuj zniwelować wpływ tego błędu wykorzystując Wzory Viète’a
Ćw. 2
Napisz program wyznaczający $\sqrt{2}$ a następnie podnieś wynik do kwadratu. Wypisz wartość bledu względnego uzyskanego wyniku dla typu float
oraz osobno dla typu double
.
Ćw.3 Napisz program wyznaczający wartość wielomianu $f(x) = a_{n}x^n + \ldots + a_2x^2 +a_1x + a_0$ za pomocą schematu Hornera
Ćw. 4 Napisz program wyznaczający sumę szeregu $$\sum_{n=0}^{\infty} q^{n}=1+q+q^{2}+q^{3}+\ldots \qquad \text{dla}\quad |q| < 1$$
Dla podanych przez użytkownika wartości $q$ oraz $k$ program wypisuje:
Sprawdź wyniki programu dla $q=0.99$ i $k=10^6$. Dlaczego błędy obu przybliżeń się różnią?