- Grzegorz Góralski – strona własna
-
https://ggoralski.pl
-
Java [41] – Zadanie: wpływ mutacji na frekwencje alleli
Posted By
Grzegorz
On
In
java,programowanie |
No Comments
Zadanie programistyczne będzie dotyczyć symulacji wpływu mutacji na frekwencje (częstości) występowania alleli.
Nieco więcej na ten temat można znaleźć w mojej prezentacji[1] a także w odpowiedniej literaturze.
Teoria:
Rozpatrujemy dwa allele: A i a.
Frekwencję allelu A oznaczamy jako p, frekwencję a jako v.
Wartość frekwencji alleli może się mieścić między 0 a 1, przy czym:
p + q = 1
Allel A może mutować w allel a i odwrotnie.
Allel A mutuje w a z częstością u.
Allel a mutuje w A z częstością v.
Wartości u i v mieszczą się w zakresie 0 – 1.
Frekwencja allelu a bedzie wynosiła w następnym pokoleniu:
q1 = q + pu
Zatem zmiana p będzie wynosić:
∆q = pu
Analogicznie:
p1 = p + qv
∆p = qv
Zadanie:
Napisz program, który pobierze od użytkownika wartości:
początkowe q
u
v
liczbę pokoleń
Następnie program powinien przez zadaną liczbę pokoleń pokazywać kolejne wartości p i qa także ∆p i ∆q.
Java [22] – Zadania: obliczanie wartości π metodą Monte Carlo i na inne sposoby
Posted By
Grzegorz
On
In
java,programowanie |
No Comments
Tym razem zadania dotyczące obliczania wartości π. Najpierw spróbujemy użyć metody Monte Carlo a następnie bardziej klasycznych (i efektywnych) sposobów.
Zadanie 1: Obliczanie wartości π metodą Monte-Carlo
Czasem badając jakieś zjawisko nie jesteśmy w stanie po prostu wyliczyć wyniku. Na przykład nie znamy odpowiednich wzorów lub badany proces jest zbyt skomplikowany. W takich przypadkach z pomocą przychodzi metoda Monte Carlo. Jej twórcą jest, wspomniany wcześniej przy okazji automatów komórkowych, Stanisław Ulam. Nazwa, pochodzi od znanej dzielnicy Monako, dawniej będącej symbolem hazardu (dzisiaj raczej jest nim Las Vegas). Skoro hazard, to przypadek i prawdopodobieństwo. W końcu badania nad prawdopodobieństwem rozpoczęły się właśnie od analizy gier hazardowych. W ten sposób dochodzimy do sedna omawianej metody. Opiera się ona bowiem o losowanie wartości istotnych dla badanego zjawiska/obiektu/procesu w oparciu o znany rozkład tych wartości. Czyli, w uproszczeniu, tworzymy jakąś symulacje w której generujemy „przypadkowe” zdarzenia, których prawdopodobieństwo powinno możliwie odpowiadać występującym w rzeczywistości a następnie obserwujemy i analizujemy otrzymane wyniki.
Do klasycznych przykładów możliwego zastosowania metody Monte Carlo należy obliczanie wartości π. Oczywiście znane są dokładniejsze i bardziej wydajne metody[2] wyliczenia wartości tej stałej, do czego zresztą jeszcze wrócimy. Na razie zaprzęgniemy do pracy przypadek.
Zacznijmy od prostego rysunku koła o promieniu r wpisanego w w kwadrat:
Skoro promień koła wynosi r to bok kwadratu wynosi 2 r. Zatem wzory na pola obu figur będą wyglądać następująco:
Pole koła:
Pole kwadratu:
Stosunek pól obu figur możemy zapisać następująco:
Czyli:
Z czego wynika, że wartość π wynosi:
Tak więc, znając stosunek obu pól można wyznaczyć wartość π. Jak jednak go wyznaczyć używając zdarzeń losowych?
Wyobraźmy sobie, że nasz rysunek używamy jako tarczy strzeleckiej. Nie staramy się jednak strzelać w jakiś konkretny punkt, na przykład w środek, ale w jakiekolwiek, przypadkowo wybrane miejsce. Po jakimś czasie nasza tarcza mogłaby wyglądać na przykład tak:
Teraz dochodzimy do sedna. Jeśli strzały są przypadkowe to stosunek liczby trafień w obrębie koła do stosunku wszystkich trafień (czyli wewnątrz kwadratu) powinien odpowiadać stosunkowi pól obu figur.
Teraz przejdźmy do projektowania programu.
Z powyższych rozważań wynika, że program powinien:
Zasymulować określoną liczbę „strzałów”, czyli wygenerować „punkty” mieszczące się w „wirtualnym kwadracie”,
Następnie sprawdzić ile z punktów mieści się w obrębie „wirtualnego koła”,
Obliczyć stosunek punktów mieszczących się w kole do wszystkich
Obliczyć wartość π mnożąc wyliczony stosunek przez 4.
Z powyższych punktów dwa ostatnie są trywialne, natomiast pierwsze dwa mogą sprawić problemy początkującemu programiście.
Co to właściwie znaczy, że program powinien wygenerować „punkty”? Można to rozwiązać w ten sposób, że losujemy dwie liczby o wartości od 0 do długości boku kwadratu, które będą odpowiadały współrzędnym x i y.
Następnie trzeba sprawdzić czy punkt o wylosowanych współrzędnych mieści się w obrębie koła. Można tu wykorzystać wzór wykorzystywany w definicji okręgu[3], wg. której okrąg to zbiór punktów (x, y) spełniających równość:
Gdzie: x0 i y0 to współrzędne środka okręgu.
Ponieważ środek okręgu możemy ustalić w punkcie 0,0 układu współrzędnych, wzór można uprościć:
Nas jednak interesują punkty znajdujące się także wewnątrz okręgu, czyli w polu koła. Te punkty spełniają warunek:
Zauważ, że jeśli mówimy o stosunku pola koła i kwadratu, to będzie on taki sam dla ćwiartek obu figur:
Takie rozwiązanie będzie łatwiejsze do zaiplementowania, zwłaszcza jeśli przyjmiemy, że r = 1. Wtedy każda ze współrzędnych punktów będzie mieściła się w zakresie od 0 do 1, a do losowania liczb w tym zakresie znamy już odpowiednie metody[4].
Napisz program, który będzie wyliczał wartość π przy użyciu 100, 1000, 10 000, 100 000 oraz 1000 000 punktów a następnie wypisze obliczone wartości oraz ich dokładność, czyli różnice między wyliczonymi wartościami a znaną wartością π, którą możesz pobrać np. używając klasy Math[4].
Rozwiązanie - kliknij aby zobaczyć
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
publicclassPiMonteCarlo{
staticdoublepodajPi(intliczbaStrzalow){
intwKole=0;
// generowanie punktów
for(inti=0;i<liczbaStrzalow;i++){
doublex=Math.random();
doubley=Math.random();
// Sprawdzanie, czy punkt jest w kole
// r = 1, więc r * r = 1
if((x *x+y *y)<=1){
wKole++;
}
}
// obliczanie stosunku liczby punktów w kole do wszystkich punktów
doubles=(double)wKole/liczbaStrzalow;
return4*s;
}
publicstaticvoidmain(String[]args){
System.out.println("Pi = "+Math.PI);
// obliczanie Pi dla 00, 1000, 10 000, 100 000 oraz 1000 000 punktów
// można to zrobić za pomocą pętli
for(inti=100;i<=1000000;i *=10){
doublepi=podajPi(i);
System.out.println("Dla "+i+" punktów Pi = "+pi+"\n"
+"błąd = "+(pi-Math.PI));
}
}
}
Zadanie 2: Dokładniejsze obliczanie wartości π
Jak wspomniałem wyżej, w praktyce obliczanie π metodą Monte Carlo nie jest najlepszym z możliwych rozwiązań. Do tego typu obliczeń można używać różnych wzorów, ich przegląd można znaleźć np. na stronie Wikipedii poświęconej π[2]. Zauważ, że w większości mają one charakter iteracyjny. Należy pamiętać, że nie można wyliczyć i zapisać dokładnej wartości π, zatem w praktyce otrzymuje się mniej lub bardziej dokładne przybliżenia z mniejszą lub większą liczbą cyfr po przecinku.
Zadanie polega na napisaniu programu, który użyje kilku (co najmniej trzech) sposobów obliczania wartości π (np. (np. Leibnitza, Wallisa i Newtona) dla podanej przez użytkownika liczby kroków i porówna ich dokładność.
Dodatkowo, spróbuj napisać metodę z użyciem pętli i drugą metodę z wykorzystaniem rekurencji do wybranych wzorów.
Uwaga: nie stosuj metody rekurencyjnej dla dużej liczby iteracji ( ~ 10000 i wyżej), ponieważ może to spowodować błąd przepełnienia stosu (błąd: java.lang.StackOverflowError).
Java – zadania do prezentacji 1-6 cz. I
Posted By
Grzegorz
On
In
java,programowanie |
No Comments
Część I zadań do zakresu materiału znajdującego się prezentacjach 1-6 kursu z programowania Javy[5], obejmujących m. in.: zmienne, instrukcje wyboru, operatory logiczne, pętle, wprowadzanie danych z klawiatury, tablice jednowymiarowe. Zadania starałem się podać w kolejności od najłatwiejszych do najtrudniejszych, choć to rzecz względna ;-).
Silnia: Napisz program obliczający silnię
Zasada działania:
Użytkownik podaje liczbę, program oblicza silnię
Pola figur: Napisz program, który oblicza pole figur: koła, kwadratu, prostokąta.
Zasada działania:
Po uruchomieniu użytkownik widzi menu z którego wybiera rodzaj figury.
Następnie program prosi o podanie wymaganych wartości do obliczenia pola figury.
Program wyświetla pole figury i pyta czy jeszcze raz, czy zakończyć pracę i stosownie do wybranej opcji wraca od początku lub kończy działanie.
Lista studentów: Zapisz program obsługujący listę studentów i ich numery.
Zasada działania:
Użytkownik podaje liczbę studentów w grupie.
Następnie podaje kolejno imię i nazwisko (jako jeden ciąg znaków) każdego z nich.
Studenci otrzymują kolejne numery porządkowe od 1 wzwyż.
Pokazuje się menu w którym uzytkownik wybiera czy chce sprawdzić numer czy imię i nazwisko studenta czy też chce zakończyć.
Jeśli użytkownik wybrał koniec, to program kończy działanie.
Jeśli użytkownik podaje chce poznać numer studenta to wpisuje jego imię i nazwisko i otrzymuje jego numer porządkowy (od 1).
Jeśli użytkownik chce poznac imię i nazwisko studenta to wpisuje jego numer a program podaje wypisuje imię i nazwisko własciwe dla podanego numeru porządkowego
Program powraca do punktu d.
Roztwory: Napisz program, który pomaga przygotowanie roztworu wodnego o określonym stężeniu procentowym (wagowym).
Zasada działania:
Program pyta użytkownika o docelową objętość roztworu i stężenie procentowe substancji – np. uzytkownik wprowadza informację, że chce 20 ml roztworu 6%.
Program wyświetla objętość wody (zakładamy, że 1ml = 1g) oraz wagę substancji rozpuszczonej potrzebnej do wykonania roztworu.
Program powtarza działanie aż do chwili, kiedy uzytkownik zechce go zakończyć.
Dodatkowo: rozszerzyć funkcjonalność programu, tak aby działał także dla innych rozpuszczalników (inna gęstość).
Liczby: Napisz program, który działa tak:
Użytkownik podaje 10 liczb.
Program sprawdza, czy są one posortowane od największej do najmniejszej.
Program podaje największą i najmniejszą liczbę.
Prosi użytkownika o podanie liczby i sprawdza, czy znajduje się ona w tabeli.
Mierzenie i ważenie organizmów: Napisz program w którym użytkownik podaje wysokość organizmu oraz jego wagę a następnie program podaje odpowiednie dane.
Zasada działania:
Użytkownik deklaruje ile maksymalnie może być danych (zmierzonych i zważonych organizmów).
Następnie wprowadza kolejno wysokość oraz wagę każdego organizmu.
Po wprowadzeniu danych (może ich być mniej niż wcześniej zadeklarowana maksymalna wartość) program wypisuje:
Średni wzrost dla zbadanej próby.
Średnią wagę dla zbadanej próby.
Wartość minimalną i maksymalną dla obu parametrów.
Współczynnik waga/wzrost dla każdego organizmu.
Średni współczynnik waga/wzrost dla wszystkich organizmów.
Java – trzy dodatkowe zadania dotyczące tablic
Posted By
Grzegorz
On
In
java,programowanie |
No Comments
Dzisiaj umieszczam trzy dodatkowe zadania wraz z rozwiązaniami do części ćwiczeń kursu „Wstęp do programowania” [6]poświęconej tablicom. Dwa z nich dotyczą tablic jednowymiarowych, trzecie tablicy dwuwymiarowej.
Zanim przejdziesz do wskazówek, spróbuj sam rozwiązać zadanie.
Wskazówki
Ogólna idea odwracania zawartości tablicy test taka: ostatni element zamienia się miejscami z pierwszym, następnie przedostatni z drugim itd. aż dojdziemy do środka tablicy. Tu proces się zatrzymuje, gdybyśmy poszli dalej odwrócilibyśmy to co już odwrócone, a przecież nie o to chodzi.
Jednak w zamianie wartości tkwi pewien problem. Jeśli po prostu skopiowalibyśmy wartość z komórki ostatniej do pierwszej, to od razu stracilibyśmy wartość z komórki pierwszej. Uprzednio trzeba więc umieścić tą wartość w zmiennej tymczasowej, z której następnie ją pobierzemy aby umieścić w ostatniej komórce.
Zamiana więc będzie przebiegała w trzech krokach:
Skopiowanie wartości z komórki pierwszej do zmiennej.
Skopiowanie wartości z komórki ostatniej do pierwszej.
Skopiowanie wartości ze zmiennej do komórki ostatniej.
Dla „wzrokowców” dodatkowo obrazek ilustrujący ten proces:
Później proces się powtarza dla komórki drugiej i przedostatniej itd…
Tu trafiamy na kolejny problem. Łatwo jest uzyskać indeks komórki pierwszej, drugiej, trzeciej itd., będzie to po prostu wartość i z klasycznej pętli for. Ale jak uzyskać indeksy kolejnych komórek od końca?
Magiczna formuła będzie wyglądała tak: tablica.length-1-i. Zastanów się dlaczego. Szczegółowe wyjaśnienie w kodzie.
Kod
class OdwracanieTablicy {
public static void main(String[] args) {
int[] tablica = {1,2,3,4,5,6,7};
// zmienna "tymczasowa" która będzie tymczasowo przechowywać wartości
int tmp;
int l = tablica.length;
System.out.print("Przed odwróceniem: ");
for (int i: tablica) System.out.print(i+" ");
// petla od 0 do l/2 ponieważ zamieniamy raz element
// ostatni z pierwszym, przedostatni z drugim itd,
// aż dojdziemy do środka tablicy.
for (int i = 0; i &lt; l/2; i++) {
// kopiowanie wartości z tablicy do zmiennej
tmp = tablica[i];
// kopiowanie wartości do kolejnych komórek z miejsca l-1-i bo:
// l: (długość tablicy)
// -1: bo ostatni indeks w tablicy jest
// o 1 mniejszy niż nr. ostatniego indeksu
// -i: przesuwamy się o 1 od końca do środka
tablica[i]=tablica[l-1-i];
// kopiowanie wartości ze zmiennej "tymczasowej" do komórki
// z której pobrano wartość i skopiowano o do komórki o indeksie i
tablica[l-1-i]=tmp;
}
System.out.print("nPo odwróceniu: ");
for (int i: tablica) System.out.print(i+" ");
}
}
Zadanie 2 – obliczanie wariancji
Tym razem obliczymy wariancję dla zestawu liczb, które mogą być np. pomiarami.
Stwórz tablicę 1-wymiarową, wypełnioną liczbami typu double.
Oblicz i wydrukuj wariancję dla tego zestawu liczb.
Wzór na wariancję wygląda tak:
Gdzie:
s2 – wariancja
xi – kolejny pomiar
xs – średnia z pomiarów
N – liczba pomiarów
Zanim przejdziesz do wskazówek, spróbuj sam rozwiązać zadanie.
Wskazówki
Kolejne pomiary, to właśnie kolejne liczby w naszej tablicy.
Jak widać potrzebna będzie najpierw średnia z pomiarów, a do jej policzenia musimy mieć sumę wszystkich elementów. Można to zrobić przy użyciu pętli iterującej po tablicy, jak robiliśmy to poprzednio. Sumę dzielimy przez liczbę elementów w tablicy, otrzymując średnią.
Następnie trzeba obliczyć sumę kwadratów różnicy xi-xs. Na razie nie poznaliśmy jeszcze niezwykle pomocnego w obliczeniach pakietu Math, więc do uzyskania drugiej potęgi użyjemy po prostu mnożenia.
Ponieważ będziemy odejmować średnią od kolejnych pomiarów, znów zastosujemy pętlę.
Reszta jest trywialna.
Kod
class Wariancja {
public static void main(String[] args) {
double[] tablica = {1.0,2.0,2.5,4.0,3.7,3.5,2.3,2.5,3.6};
double suma=0.0;
double srednia=0.0;
double sumaRoznic=0.0;
int N = tablica.length;
double wariancja;
// Obliczanie sumy elementów w tablicy
for (int i = 0; i &lt; N; i++) {
suma+=tablica[i];
}
System.out.println("Suma: "+suma);
// Obliczanie średniej wartości w tablicy
srednia = suma/N;
System.out.println("Średnia: "+srednia);
// Obliczanie sumy kwadratów różnic wartości i średniej
for (int i = 0; i &lt; N; i++) {
sumaRoznic+=(tablica[i]-srednia)*(tablica[i]-srednia);
}
System.out.println("Suma różnic: "+sumaRoznic);
// Obliczanie wariancji
wariancja = sumaRoznic/(N-1);
System.out.println("Wariancja: "+wariancja);
}
}
Zadanie 3 – Obliczanie średnich wartości z kolumn w tablicy
Tym razem wyobraźmy sobie, że mamy tabelę z danymi, podobną do takich jakich używamy np. w arkuszach kalkulacyjnych. W naszym przypadku będzie to po prostu tablica dwuwymiarowa 10×10 wypełniona wartościami od 0 do 99 (patrz „Java – tablice cz. II (07)[8]„). Następnie trzeba będzie obliczyć średnie z wartości w poszczególnych kolumnach (a raczej w tym co wyobrażamy sobie jako kolumny).
Podsumowując zadanie:
Stwórz tablicę 100-elementową, dwuwymiarową: 10×10 i wypełnij ją liczbami od 0-99
Oblicz średnie dla liczb znajdujących się w kolejnych kolumnach (dla każdej kolumny osobna średnia)
Zanim przejdziesz do wskazówek, spróbuj sam rozwiązać zadanie.
Wskazówki
Jak wypełnić tabelę, można przeczytać tutaj[8].
Teraz będziemy musieli obliczyć średnie, a do ich obliczenia, jak wiadomo, konieczne będą najpierw sumy elementów.
Ponieważ będziemy chcieli przechować sumy wartości z poszczególnych kolumn, a także średnie. Stworzymy w tym celu dwie, jednowymiarowe tablice. Ich długość będzie odpowiadała długości wymiaru tablicy który uznajemy za rząd, czyli 10 (zresztą w naszym przykładzie tyle samo jest kolumn co rzędów).
Następnie, utworzymy dwie zagnieżdżone pętle, podobne do tych które zastosowaliśmy do wypełniania tablicy.
W pętli zewnętrznej pobierane są rzędy, a w pętli wewnętrznej wartości z kolumn, które będą dodawane do wartości z tablicy przechowującej sumy elementów. Po przejściu wszystkich rzędów otrzymamy tablicę z sumami kolumn.
Teraz pobieramy kolejne wartości z tablicy z sumami i dzielimy je przez 10 (liczba elementów), a wyniki umieszczamy w tablicy przechowującej średnie.
Pozostaje wypisać wartości średnich.
Oczywiście nie jest to jedyna możliwa droga rozwiązania problemu. Jak już uporasz się z tym sposobem, zastanów się na przykład, czy nie można by się obyć bez tablicy przechowującej sumy wartości?
Kod
class SrednieKolumn {
public static void main(String[] args) {
int[][] tablica = new int[10][10];
double[] sumy = new double[10];
double[] srednie = new double[10];
int licz=0;
// Wypełnianie tablicy wartościami d 0 do 99
for (int i = 0; i &lt; 10; i++) {
for (int j = 0; j &lt; 10; j++) {
tablica[i][j]=licz++;
}
}
// Obliczanie sum wartości w kolumnach
// i to indeks rzędu, przy każdej iteracji pętli zewnętrznej
// pobierane są rzędy
for (int i = 0; i &lt; 10; i++) {
// j to indeks kolumny, więc w tablicy sumy[] obliczane są
// sumy wartości z kolumn tablicy tablica[] o takich samych indeksach
for (int j = 0; j &lt; 10; j++) {
// przy każdej iteracji pętli wewnętrznej, pobierane są
// wartości komórek z kolejnych kolumn i dodawane
// do wartości w tablicy sumy[]
sumy[j]=sumy[j]+tablica[i][j];
}
}
// Z tablicy sumy pobierane są kolejne sumy wartości,
// dzielone przez liczbę rzędów, obliczone w ten
// sposób wartości kopiowane są do tablicy srednie[]
for (int i = 0; i &lt; 10; i++) {
srednie[i]=sumy[i]/10;
}
for (double s: srednie) System.out.print(s+" ");
}
}
W sekcji “Genetyka-ćwiczenia” umieściłem uaktualnioną wersję prezentacji dotyczącą frekwencji allelu oraz genotypów i prawa Hardy’ego-Weinberga, prezentację z zadaniami do frekwencji i prawa H-W, a także dodatkowy zestaw zadań z rozwiązaniami do II części ćwiczeń.]]–>
Posted By
Grzegorz
On
In
java,programowanie |
No Comments
Zamieszczam kolejne zadania dotyczące przede wszystkim operacji na tablicach dwuwymiarowych.
Przy okazji informuję, że uaktualniłem poprzednie posty o rozwiązania zadań, tam gdzie ich jeszcze nie było.
Zadania
Poniżej podano dane pomiarowe dla 5 populacji (po 10 pomiarów) dotyczące liczby młodych urodzonych przez samicę.
Umieść te dane w programie i oblicz dla każdej z populacji średnią, zaokrąglaną do liczb całkowitych w dół (podpowiedź: jeśli wynik dzielenia, który zawiera część dziesiętną przypiszemy do zmiennej typu int to część ułamkowa zostanie odcięta).
Narysuj na ekranie histogram poziomy na którym znają się średnie i słupki pokazujące te średnie:
5 *****
7 *******
6 ******
8 ********
5 *****
Napisz program który pobierze od użytkownika liczbę, po czym wypisze na ekranie trójkąt Pascala o zadanej liczbie rzędów. Wartość każdej komórki, oprócz skrajnych 1, niech oblicza sumując sąsiednie komórki z rzędu powyżej.
Dane pomiarowe dla 5 populacji są wpisz do tabeli, oblicz średnią zaokrąglaną w dół dla każdej populacji a następnie wydrukuj poziomy histogram (pełna treść – patrz wyżej).
// tablica z danymi - w rzędach dane
// dla poszczególnych populacji
int[][] dane={
{7,8,4,6,7,8,5,4,5,4},
{9,9,8,7,8,6,7,8,8,9},
{5,6,7,7,6,5,6,5,7,8},
{9,8,9,8,7,8,9,9,8,7},
{7,5,4,5,4,7,6,5,8,6}};
// w tej tablicy będziemy przechowywać
// średnie dla poszczególnych populacji
int[] srednie = new int[5];
int suma;
int i=0;
int sumaWszystkich=0;
// Pętla w której pobieramy "rzędy" - w każdym
// są dane dla jednej populacji
for (int tab[] : dane) {
// zmienna w której przechowujemy sumę wartości
suma=0;
// pętla która pobiera kolejne dane dla populacji
// a następnie je po kolei sumuje
for (int d : tab) {
// każda kolejna wartość jest dodawana do
// otrzymanej poprzednio sumy i przypisywana
// do zmiennej suma
suma=suma+d;
}
// obliczmy średnią dla populacji a następnie
// wpisujemy obliczoną wartośc do tablicy w której
// przechowujemy średnie dla populacji
srednie[i]=suma/tab.length;
// teraz będziemy obliczać dane dla nastepnej populacji
// więc zwiększamy i o 1
i++;
}
// Rysujemy poziomy histogram
// Pobieramy kolejne wartości z tabeli przechowującej
// średnie z kolejnych populacji
for(int j : srednie) {
// wypisujemy wartość średniej
System.out.print(j+" ");
// pętla która wykonuje się tyle razy ile wynosi średnia
// za każdym obrotem pętli drukowany jest znak *
for (int k=0; k<j;k++) {
System.out.print("*");
}
// kiedy został wydrukowany "słupek" dla populacji
// trzeba przejśc do nowej linii
System.out.println();
}
Przykładowe zadania do cz. III ćwiczeń z genetyki
Posted By
Grzegorz
On
In
Uncategorized |
No Comments