Nmax ~ 1000 0 < n < 4000 n ~ 106
Transkrypt
Nmax ~ 1000 0 < n < 4000 n ~ 106
Z ADANIA Z P ODSTAW P ROGRAMOWANIA (F ORTRAN 90/95) Zestaw II - na kwiecień 2004 Wskazówka do Zadania 2. Program obliczajacy ˛ średnia˛ arytmetyczna˛ powinien czytać dane ze standardowego wejścia do wystapienia ˛ znaku końca pliku i zapisywać je w tablicy jed (zadeklarowanym jako stała). Znak końca pliku nowymiarowej o rozmiarze wprowadzamy z klawiatury kombinacja˛ klawiszy Ctrl–D, w przypadku użycia potoku (np. ./a.out < mojedane.dat) dane b˛eda˛ czytane po prostu do końca pliku wejściowego. Prosz˛e zapoznać si˛e ze znaczeniem argumentu iostat przy wywołaniu instrukcji read. 6. Konwersja liczb arabskich na rzymskie (i w druga˛ stron˛e). Do wykonania tego zadania przyda sie znajomość instrukcji typu write (unit=*, fmt=”(a)”, advance=”no”) “M” która wypisuje napis (w tym wypadku: “M”) bez przechodzenia do nowej linii, co pozwala w prosty sposób “skleić” np. liczb˛e MCMLXXXIX z elementów M, CM, LXXX i IX. Ambitniejsze rozwiazanie ˛ tego problemu (niezb˛edne do przeprowadzenia konwersji w odwrotnym kierunku) wymaga użycia zmiennych napisowych i operacji na nich. Mile widziana byłaby wersja programu, która sama rozpoznaje, czy na wejście wprowadzono liczb˛e rzymska˛ (a wi˛ec napis) czy arabska˛ (liczba całkowita) i dokonuje . odpowiedniej konwersji. Wymagany zakres liczb: 7. Mnożenie dużych liczb naturalnych. Napisać program wczytujacy ˛ z klawiatury dwie duże liczby naturalne (jako napisy) i drukujacy ˛ ich iloczyn na ekran. Przez “duże” rozumiemy liczby przekraczajace ˛ zakres zmiennej typu integer. 8. Sito Erastotenesa. Poszukać informacji na temat algorytmu sita Erastotenesa i napisać program znajdujacy ˛ wszystkie liczby pierwsze mniejsze od zadanej wartości. 9. Kalendarz. Napisać program wczytujacy ˛ dat˛e w formacie dzień, miesiac, ˛ rok i obliczajacy ˛ dzień tygodnia (pami˛etać o konieczności uwzgl˛ednienia lat przest˛epnych). Można także dodać opcj˛e wypisywania pełnego kalendarza na zadany miesiac ˛ (w formie znanej z kalendarzy ściennych). 10. Obliczanie liczby metoda˛ Monte Carlo. Prosz˛e zapoznać si˛e z działaniem instrukcji random_number(x), służacej ˛ do generacji liczb pseudolosowych. Nast˛epnie wygene %$ ! ! &' . rować ciag ˛ punktów należacych do kwadratu "! #! . ' Wiedzac, ˛ że prawdopodobieństwo trafienia w koło )(+*,-( wynosi 0/ wyz naczyć przybliżona˛ wartość liczby na podstawie ułamka 12/ , gdzie 1 oznacza liczb˛e trafień we wn˛etrze koła. Na podstawie informacji na temat prób Bernouliego wyznaczyć bład Przeprowadzić opisane obliczenia dla kilku wartości 4356 87 ˛ 89 takiego 6:6:6oszacowania. : i różnych podstaw generatora (wczytywanych z klawiatury). 11. Całkowanie numeryczne. W tzw. metodzie trapezów przybliżamy wartość całki oznaczonej suma: ˛ * - / * - * : ˛ wartość całki ta˛ metoda.˛ Istotnym elementem jest Prosz˛e napisać program obliczajacy ). oszacowanie bł˛edu takiego rachunku (np. poprzez powtórzenie oblicze ń dla Definicj˛e funkcji można umieścić w osobnym pliku źródłowym (tak aby całość programu nie musiała być kompilowana za każdym razem), a do kompilacji wykorzystać komend˛e systemowa˛ make (to zagadnienie b˛edzie omówione na jednych z najbliższych zaj˛eć). Warto także napisać wersj˛e programu wykorzystujac ˛ a˛ metod˛e Simpsona i porównać ich dokładność. 12. Wyznaczanie zer funkcji metoda˛ bisekcji. Ta prosta metoda numeryczna jest opisana wyczerpujaco ˛ w ksiażce: ˛ K.Rościszewski, R.Wit, Nauka Fortranu 90/95 przez przykłady. Prosz˛e, podobnie jak w poprzednim zadaniu, umieścić definicj˛e funkcji w osobnym pliku źródłowym.