• Nie Znaleziono Wyników

Zadania z Języka C dla grup 7. i 9.

N/A
N/A
Protected

Academic year: 2021

Share "Zadania z Języka C dla grup 7. i 9."

Copied!
1
0
0

Pełen tekst

(1)

Zadania z Języka C dla grup 7. i 9.

Zestaw III - grudzień 2015

Uzupełnienie do Zadania 1. (o obliczaniu średniej arytmetycznej): W programie wczy- tującym dane ze standardowego wejścia można użyć konstrukcji

while (EOF!=scanf("%lf",&x)) { ... };

a wewnątrz pętli instrukcji break dla przypadku, gdyby wczytanie kolejnej liczby spowo- dowało przekroczenie założonego maksymalnego rozmiaru tablicy na dane (nmax). Na wejście programu można skierować, korzystając z mechanizmu potoków unixowych, plik zawierający kolumnę np. 1000 liczb pseudolosowych o rozkładzie równomiernym w przedziale 0 6 x < 1 (wygenerowanych osobnym programem). W takim przypadku, otrzymane wyniki powinny być bliskie: hxi ' 0.5 (średnia), σ(x) ' 16

3 ≈ 0.289 (od- chylenie standardowe).

11. Konwersja liczby całkowitej do postaci dwójkowej. Proszę napisać funkcje int Konwersja_Dec_Bin(unsigned dec, char *bin);

która konwertuje liczbę całkowitą (dec) do postaci tablicy znakowej (bin) zawie- rającej ciąg cyfr 0 i 1 odpowiadający zapisowi tej liczby w systemie dwójkowym;

wartość zwracana to liczba cyfr w zapisie dwójkowym (nie licząc wiodących zer).

W programie wywołującym tę funkcję, zmienną dec wczytujemy z klawiatury zaś tablicę bin wypisujemy na ekran za pomocą funkcji biblioteki standardowej (scanf i printf). Rozmiar tablicy bin można powiązać ze stałą WORD_BIT zdefiniowaną w pliku limits.h. Zadanie należy wykonać na dwa sposoby:

a) za pomocą dzielenia %2 i standardowych operacji arytmetycznych (+,-,*,/);

b) za pomocą operacji bitowych x & 01 oraz x=x>>1 (ewentualnie w wersji z prze- sunięciem bitowym w lewo: x & a oraz a=01<<i, gdzie i=0,1,2,... ).

12. Mnożenie z przesunięciami bitowymi. Proszę napisać funkcje, która mnoży dwie liczby typu unsigned (albo unsigned long), a wynik zapamiętuje w dwóch innych zmiennych, z których jedna przechowuje najmłodsze bity (ściśle mówiąc:

wynik mnożenia modulo UINT_MAX albo ULONG_MAX), zaś druga - pozostałe starsze bity. Funkcje można następnie wykorzystać do implementacji, w języku ANSI C, generatora liczb pseudolosowych Parka-Millera, który tworzy ciąg liczb opisany wzorem

rn+1 = 48271 · rn mod (231− 1),

począwszy od pewnej początkowej wartości np. r0 = 1 (to tzw. podstawa gene- ratora). Łatwo zauważyć, że próba implementacji takiego generatora z wykorzy- staniem zwykłego mnożenia liczb całkowitych szybko doprowadzi do przepełnienia zakresu i nieprawidłowych wyników.

Cytaty

Powiązane dokumenty

Wśród założeń gwarantujących prawdziwość wzoru na całkowanie przez pod- stawiania, oprócz wymagań „regularności” podstawienia i wykonalności potrzeb- nych operacji (np..

Wówczas funkcja ma sprawdzać czy ten warunek jest spełniony i wykonywać operację tylko w

Zbadać, czy podane ciągi punktów

Funkcje zmiennych losowych - zadania na

7.4 Zmienna losowa ma rozk lad geometryczny z parametrem p.. 7.6 Zmienna losowa ma rozk lad wyk

W przypadku funkcji generującej liczby losowe metodą Boxa-Mullera, można zadbać o to, aby przy nieparzystym wywołaniu była wykonywana cała pro- cedura począwszy od losowania liczb x

Napisać program, który czyta ciąg liczb ze standardowego wejścia aż do wystąpie- nia znaku końca pliku (kombinacja klawiszy Ctrl–D na klawiaturze), a następnie oblicza

, n−1, dla każdej permutacji określa liczbę punktów stałych k, oraz wylicza, ile razy w ciągu N permutacji mamy k = 0.. Ułamek N/N k=0 stanowi oszacowanie