• Nie Znaleziono Wyników

Wyprowadź posortowane elementy tablicy t na ekran. Uruchom aplikację.

N/A
N/A
Protected

Academic year: 2021

Share "Wyprowadź posortowane elementy tablicy t na ekran. Uruchom aplikację."

Copied!
3
0
0

Pełen tekst

(1)

Laboratorium z informatyki sem. II/ćw. 5 Wydział Transportu PW - 2020/21

Materiały do użytku wewnętrznego strona 1

I

NSTRUKCJA DO

Ć

WICZENIA

5 I. Sortowanie tablicy t nierosnąco metodą bąbelkową

Algorytm sortowania bąbelkowego polega na przestawianiu dwóch sąsiednich elementów, gdy są ustawione w kolejności burzącej zadany porządek tablicy.

Przykład dla tablicy [ 4, 2, 5, 3 ] którą chcemy posortować nierosnąco 2 < 4, więc porównujemy dalej.

5 > 2 więc zamieniamy miejscami, tablica wygląda tak: [ 4, 5, 2, 3 ] 3 > 2 więc zamieniamy miejscami, tablica wygląda tak: [ 4, 5, 3, 2 ]

Przeanalizowaliśmy całą tablice, zaczynamy ten sam algorytm od początku, pomijając w porównywaniu ostatni element, ponieważ jest on już na dobrej pozycji w tablicy

5 > 4 więc zamieniamy miejscami, tablica wygląda tak: [5, 4, 3, 2 ]

3 < 4 więc kończymy ten krok, dwa ostatnie elementy są na właściwych miejscach

4 < 5 więc nie ma więcej przestawień, tablica jest uporządkowana nierosnąco : [ 5, 4, 3, 2 ] 1. Utwórz projekt o nazwie Projekt51 z klasą główną o nazwie Sortowanie.

2. Na początku metody main() zadeklaruj tablicę o nazwie t, o elementach całkowitych, równocześnie przypisując jej kolejnym elementom wartości początkowe. Możesz wpisać dowolne wartości całkowite oraz przyjąć dowolną ich liczbę. Na przykład takie jak w przykładzie powyżej:

int[] t = {4, 2, 5, 3 };

2. Następnie zadeklaruj zmienną całkowitą n i nadaj jej wartość początkową równą liczbie elementów tablicy:

int n = t.length;

3. Samodzielnie wyświetl na ekranie w jednym wierszu elementy tablicy t, poprzedzone tytułem "Tablica t". 4. Poniżej umieść dwie zagnieżdżone pętle for, a w nich instrukcje zamiany elementów tablicy, jeśli są ustawione

w porządku rosnącym

for(int i=0; i<n-1; i++)

for(int j=0; j<n-1-i; j++) if(t[j+1] > t[j]){

int pom= t[j+1]; //zapamiętanie w zmiennej pom wartości t[j+1]

t[j+1]=t[j];

t[j]=pom;}

5.

Wyprowadź posortowane elementy tablicy t na ekran. Uruchom aplikację.

II. Sortowanie tablicy t niemalejąco

Do sortowania tablicy t niemalejąco można zastosować ten sam algorytm, zmieniając jedynie warunek

zamiany

sąsiednich elementów na przeciwny, tzn. zamieniamy elementy t[j+1] i t[j]

jeśli

t[j+1] < t[j].

Można też wykorzystaćwbudowaną metodę sort klasy Arrays,

udostępnioną w

pakiecie java.util. Instrukcja sortowania niemalejąco tablicy t ma w tym przypadku postać:

Arrays.sort(t);

Konieczny jest import klasy Arrays, co realizujemy poleceniem Fix Imports lub dopisując ponad nagłówkiem całej klasy klauzulę importu biblioteki:

import java.util.Arrays;

1. Wykorzystaj metodę sort do sortowania tablicy t niemalejąco.

2. Do wyświetlenia tablicy można również wykorzystać metodę toString klasy Arrays, Wypróbuj tę metodę wyświetlając tablicę t w następujący sposób:

System.out.println(Arrays.toString(t));

III. Przykład tablicy dwuwymiarowej

1. Utwórz kolejny nowy projekt o nazwie Projekt52 z klasą główną o nazwie Tablica52. Zadeklaruj dwuwymiarową tablicę w o elementach całkowitych i wymiarach 45: Liczbę wierszy i liczbę kolumn tablicy zadeklaruj jako zmienne całkowite m oraz n, co pozwoli na łatwe modyfikowanie rozmiaru tablicy:

int m = 4, n = 5;

int[][] w = new int[m][n];

2. Dopisz instrukcję wyświetlającą nagłówek"TABLICA DWUWYMIAROWA o "..." wierszach i "..." kolumnach"

(w miejscu kropek umieść wartości zmiennych m oraz n)

3. Pod deklaracją tablicy w umieść dwie zagnieżdżone pętle for zawierające instrukcję, która do elementów tablicywwygeneruje liczby całkowite z przedziału <-15, 15)

for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) {

w[i][j] = (int)(30*Math.random()-15);

// (int)-operator rzutowania typu rzeczywistego na typ całkowity int }

}

4. W wewnętrznej pętli for dodaj instrukcję wyświetlającą elementy i-tego wiersza tablicy w oddzielone spacjami. Aby przejść do nowej linii po zakończeniu wiersza, pod wewnętrzną pętlą for wywołaj metodę

println() bez parametrów. Ostatecznie pętle tworzenia i wyświetlania tablicy w mają postać:

(2)

Laboratorium z informatyki sem. II/ćw. 5 Wydział Transportu PW - 2020/21

Materiały do użytku wewnętrznego strona 2

System.out.println("Elementy tablicy w wyświetlone wierszami");

for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) {

w[i][j] = (int)(30*Math.random()-15);

System.out.print(w[i][j]+ "\t");

}

System.out.println();

}

5. Uruchom program i zaobserwuj wyświetlone wyniki.

Przykład zastosowania zagnieżdżonych pętli for_each w tablicy dwuwymiarowej

6. Powtórz wyświetlanie tablicy w wierszami, tym razem korzystając z rozszerzonej instrukcji pętli (foreach), która bez jawnego używania indeksów, wyświetli tablicę wiersz po wierszu:

System.out.println("tablica w wyświetlona za pomocą podwójnej pętli foreach");

for (int[] k : w) {//zewnętrzna pętla for, w której zmienna k przyjmuje wartości kolejnych wierszy for (int z : k) { // wewnętrzna pętla for, w której na zmienną z podstawiane są

// elementy wiersza k System.out.print(z + "\t");

} //koniec wewnętrznej pętli for System.out.println();

} // koniec zewnętrznej pętli for,

7. Ponownie uruchom program.:

III. Instrukcja if oraz if-else. Operacje na tablicy dwuwymiarowej: zliczanie elementów w tablicy oraz w wybranym wierszu.

1. W dalszym ciągu zliczymy w tablicy w elementy dodatnie, ujemne i zerowe. Na początku metody main()

powyżej podwójnej pętli for, w której tworzymy tablicę w, zadeklaruj trzy zmienne całkowite ld, lu, lz, które posłużą jako liczniki dodatnich, ujemnych i zerowych elementów tablicy; nadaj im wartości początkowe zero:

int ld = 0, lu = 0, lz =0;

2. W wewnętrznej pętli for umieść instrukcję warunkową if, która zliczy dodatnie elementy tablicy w:

if (w[i][j] > 0) ld++;

3. Aby zliczyć elementy ujemne i równe zeru, podobnie jak w punkcie 2, dodaj instrukcje if warunkowo zwiększające wartości liczników lu i lz. Zastosuj odpowiednie operatory porównania: symbol mniejszości <

oraz symbol równości == (dwuznak).

4. Za końcem pętli zewnętrznej dodaj instrukcje wyświetlające na ekranie wartości liczników ld, lu oraz lz. 5. Uruchom program.

6. Kolejnym zadaniem będzie obliczenie procentu elementów dodatnich w wybranym wierszu tablicy. Numer wiersza wczytamy z klawiatury. W dalszym ciągu metody main() zadeklaruj zmienną całkowitą o nazwie nr, przechowującą numer wiersza tablicy w. Samodzielnie dopisz instrukcje czytania z klawiatury wartości zmiennej nr. Czytanie poprzedź podpowiedzią, podając zakres dopuszczalnych wartości od 1 do m. Pamiętaj o utworzeniu obiektu we klasy BufferedReader i obsłudze odpowiednich błędów.

7. Sprawdź za pomocą instrukcji warunkowej, czy wpisana liczba mieści się w zakresie <1, m>, jeśli nie, to wyprowadź odpowiedni komunikat, w przeciwnym przypadku oblicz procent elementów dodatnich w wybranym wierszu:

int ldw = 0;

if (nr < 1 || nr > m) {

System.out.println(" niepoprawny numer wiersza");

} else {

for (int j = 0; j < n; j++) { if (w[nr-1][j] > 0) { ldw++;

} }

System.out.println("procent elementów dodatnich w "+nr+

" wierszu="+ldw*100.0/n+" %");}

8. Uruchom program i sprawdź jego działanie.

IV. Przykład tablicy o elementach typu char - tworzenie tablicy znaków

1. Utwórz kolejny nowy projekt typu Java Application, nadaj projektowi nazwę Projekt53 a klasie głównej - nazwę Tablica53 . Zadeklaruj tablice dwuwymiarową o elementach typu char:

char[][] x= new char[5][5];

2. W elementach tablicy powyżej przekątnej umieść znak '*', poniżej ' #', a na przekątnej znak '&'

for (int i = 0; i < 5; i++) {

(3)

Laboratorium z informatyki sem. II/ćw. 5 Wydział Transportu PW - 2020/21

Materiały do użytku wewnętrznego strona 3

for (int j = 0; j < 5; j++) { if (i < j) {

x[i][j] = '*';

} else { if (j == i) { x[i][j] = '&';

} else {

x[i][j] = '#'; } }

} }

3. Wyświetl elementy tablicy x na ekranie wierszami, Poszczególne elementy wierszy oddziel spacjami. Na początku wyświetl tytuł ”Tablica znaków”. Uruchom program.

V. Tworzenie menu aplikacji –wykorzystanie instrukcji switch

W następnych punktach utworzymy menu wyboru, które w zależności od podanej liczby z klawiatury wypełnia wybrany zakres komórek tablicy x znakami specjalnymi ♥, reprezentowanym przez znak unikodu '\u2665' 1. Poniżej instrukcji wyświetlającej tablicę x na ekranie dopisz menu wyboru:

System.out.println("Podaj sposób wypełnienia tablicy :");

System.out.println (" 1-pod główną przekątną \n 2-pod drugą przekątną "

+ "\n 3-nad główną przekątną \n 4-nad drugą przekątną : ");

2. Odczytaj wybór użytkownika programu dopisując instrukcje:

BufferedReader we = new BufferedReader(new InputStreamReader(System.in));

int wybór = Integer.parseInt(we.readLine());

3. Poniżej dopisz instrukcję switch, w której zostanie wykonany odpowiedni kod dla dwóch pierwszych opcji menu:

switch (wybór) { case 1:

for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { if (i > j) {

x[i][j] = '\u2665';

} } } break;

case 2:

for (int i = 0; i < 5; i++) { for (int j = 0; j < 5; j++) { if (i >4- j) {

x[i][j] = '\u2665';

} } } break;

default : System.out.println(" zły wybór");

}

4. Poniżej instrukcji switch ponownie wyświetl elementy tablicy x na ekranie wierszami, Poszczególne elementy wierszy oddziel spacjami. Na początku wyświetl tytuł ”Tablica znaków po zmianie”.

5. Uruchom dwukrotnie program dla dwóch pierwszych opcji menu.

6. Dopisz w instrukcji switch, algorytm realizujący przypadki, kiedy zostaną wybrane z menu pozostałe opcje.

7. Uruchom program sprawdzając działanie algorytmu.

Zadania do samodzielnego wykonania

1. Zmodyfikuj Projekt51 tak by użytkownik programu wybierał

porządek

sortowania tablicy t

2. Napisz program, który czyta liczby całkowite wprowadzane z klawiatury, liczy wprowadzone dane i oblicza ich sumę. Liczba danych nie jest z góry znana. Wczytanie zera kończy przebieg programu, powodując wyświetlenie liczby wczytanych danych i ich sumy.

3. Napisz program, który do tablicy dwuwymiarowej o 6 wierszach i 8 kolumnach generuje całkowite liczby losowe z przedziału<-10, 10>, a następnie oblicza i wyświetla procent elementów

dodatnich w losowo wybranej kolumnie.

4. Napisz program, który dla wartości całkowitej n podanej z klawiatury, wypełnia tablicę dwuwymiarową o wymiarach (2n+1 )x (2n+1) gwiazdkami, które utworzą wzór:

*

* *

* *

* * *

Cytaty

Powiązane dokumenty

Uruchom program, sprawdź efekt podania wartości, która nie występuje w tablicy, wartości występującej w tablicy oraz efekt niepoprawnego podania liczby.. catch z

Zaimportuj ten interfejs, a następnie lewym przyciskiem myszy kliknij ikonę żarówki po lewej stronie nagłówka klasy Skoczek i wybierz polecenie Implement all abstract

Rzeka bieży wartko środkiem koryta, bliżej zaś brzegów łamią jej bieg ogromne głazy, wskutek czego rozdziela się i tworzy wielkie zalewy napełnione niemal stojąca

Sporządzić histogramy dla obu tablic oraz określić rozmiary kodu pierwotnego i wynikowego (rozważyć przypadek (1) i (2) dla kompresji bezstratnej)... Uwaga: współczynnik kompresji SK

Warstwa nawierzchni powinna być wykonana z elementów jednakowej grubości. Na większym fragmencie robót zaleca się stosować płyty dostarczone w tej samej partii

- grupa 1: redaguje opis wyglądu Soplicowa z uwzględnieniem jego walorów turystycznych (las, stawy, zamek Horeszków, świątynia dumania, ogródek Zosi, matecznik) oraz wykonuje

[-10.2, 15.3). Wykorzystując standardową funkcję qsort opracować funkcję, która sortuje elementy tablicy rosnąco. Wyprowadzić zawartość tablicy na ekran. Zainicjować tablicę

Funkcja moŜe otrzymać przez listę parametrów tablice oraz liczbę elementów, natomiast powinna zwracać przez wynik.. (return) nowa