vilniaus gedimino technikos … · web viewČia q – visų žodžių kiekis. geometrinės...

69
VILNIAUS GEDIMINO TECHNIKOS UNIVERSITETAS INFORMACINIŲ TECHNOLOGIJŲ KATEDRA dr. L. Pupeikienė PROGRAMAVIMO KALBA JAVA LABORATORINIŲ DARBŲ UŽDUOTYS IR REIKALAVIMAI

Upload: phamthuy

Post on 25-Jan-2019

219 views

Category:

Documents


0 download

TRANSCRIPT

VILNIAUS GEDIMINO TECHNIKOS UNIVERSITETASINFORMACINIŲ TECHNOLOGIJŲ KATEDRA

dr. L. Pupeikienė

PROGRAMAVIMO KALBA JAVA

LABORATORINIŲ DARBŲ UŽDUOTYS IR REIKALAVIMAI

Vilnius 2010

UDK įrašomas leidykloje

L. Pupeikienė. Programavimo kalba JAVA: Laboratorinių darbų užduotys ir reikalavimai. Vilnius: Technika, 2010. 52 p.

Trumpas leidinio aprašas.Leidinys yra sukurtas pagal JAVA programavimo kalbos kursą

(FMITB02719). Atliekant visus laboratorinius darbus studentai praktiškai išmoks taikyti vaisą paskaitų metu išdėstytą teoriją. Laboratorinių darbų medžiaga skirta I pakopos 1 kurso studentams. Pritaikytas 09P, 01T, 07T kryptims.

Leidinį rekomendavo VGTU ________ fakulteto studijų komitetas

Recenzavo: mokslinis vardas ir laipsnis, Vardas Pavardė, darbovietė (pvz., VGTU Fizikos katedra)mokslinis vardas ir laipsnis, Vardas Pavardė, darbovietė

http://leidykla.vgtu.ltVGTU leidyklos TECHNIKA _____ mokomosios metodinės literatūros knyga

ISBN įrašomas leidykloje

© Pupeikienė, L., 2010© VGTU leidykla TECHNIKA, 2010

TURINys

1. 1 laboratorinis darbas (1 LD)..............................................42. 1 LD sprendimo pavyzdžiai................................................53. 1 LD individualios užduotys...............................................74. 2 laboratorinis darbas (2 LD)............................................105. 2 LD sprendimo pavyzdžiai..............................................116. 3 laboratorinis darbas (3 LD)............................................137. 3 LD sprendimo pavyzdžiai..............................................148. 3 LD individualios užduotys.............................................159. 4-5 laboratorinis darbas (4-5 LD).....................................1610. 4-5 LD sprendimo pavyzdžiai..........................................1811. 6-9 laboratorinis darbas (6-9 LD).....................................1912. 6-9 LD sprendimo pavyzdžiai..........................................2013. 6-9 LD individualios užduotys.........................................2214. 10-14 laboratorinis darbas (10-14 LD).............................3415. Applet GUI įrankio įdiegimas į Eclipse platformą...........3516. Naudingi adresai ...........................................................3817. Nurodymai ataskaitai........................................................3918. Ataskaitos pavyzdys.........................................................40

1. 1 LABORATORINIS DARBAS (1 LD)

Darbo tikslas – Susipažinti su JAVA programavimo kalbos struktūra ir parašyti programą pagal duotą užduotį.

Bendra užduotis – pagal individualią užduotį parašyti programą, kuri turėtų būti:

1. projekto sukūrimas;2. rezultatų spausdinimas į ekraną;3. skaičiavimų metodas ir jo iškvietimas;4. išsamus dialogas su vartotoju;5. Redagavimas, kompiliavimas ir paleidimas;6. dėstytojo nurodytų papildomų užduočių vykdymas.

4

2. 1 LD SPRENDIMO PAVYZDŽIAI

Komentarų išvedimo pavyzdys:

class HelloWorld {   public static void main(String[] args) 

{   System.out.println("Hello, World");    }} Atsakymas:

Hello World

Teksto ir rezultatų išvedimo pavyzdys:

class InOutExample {

public static void main(String[] args) { boolean b; int i = 16, j = 100, ats = 0; b = i > j; System.out.print("b="+b);

b = j >= i; System.out.println("; b="+b); ats = i*j+i-j*10; System.out.println("ats= "+ats); System.out.println(ats+"="+i+"*"+j+"+"+i+"-"

+j+"*10"); char c = 'a'; b = c == 'z'; System.out.print("b= "+b); b = c == 'a'; System.out.println("; b= "+b); }

}Atsakymas: b= false; b= trueats= 616616=16*100+16-100*10b= false; b= true

Matematinių funkcijų pavyzdys:

class MathsFunctionsExamples {  public static void main(String[] args) 

{ double a = 16.7;     System.out.println(a+" rounded="+Math.round(a));     System.out.println(a+" floored="+Math.floor(a));     System.out.println(a+" ceiling="+Math.ceil(a));     System.out.println(a+" rounded integer="+

+Math.rint(a));     System.out.println(a+" square root="+Math.sqrt(a));

5

     System.out.println(a+" absolute="+Math.abs(a));     System.out.println(-+a" absolute="+Math.abs(-a));     System.out.println("e to the power 3 ="+

+Math.exp(3));     System.out.println("2 to the power 3 ="+

+Math.pow(2,3));     float g = 8.5F;     System.out.println("min "+a+" and "+g+" = "+

+Math.min(a,g));     System.out.println("max "+a+" and "+g+" = "+

+Math.max(a,g));   }}

Atsakymas: 16.7 rounded = 1716.7 floored = 16.016.7 ceiling = 17.016.7 rounded integer = 17.016.7 square root = 4.0865633483405116.7 absolute = 16.7-16.7 absolute = 16.7e to the power 3 = 20.0855369231876682 to the power 3 = 8.0min 16.7 and 8.5 = 8.5max 16.7 and 8.5 = 16.7

6

3. 1 LD INDIVIDUALIOS UŽDUOTYS

1 Parašykite programą, kuri suskaičiuotų reiškinį: a2+sin=S. a ir įveda vartotojas.

2 Parašykite programą, kuri suskaičiuotų reiškinį: 2R(R+H)=S. R ir H įveda vartotojas.

3 Parašykite programą, kuri suskaičiuotų reiškinį: (R+r)L+ R2+r2=S. R, r ir L įveda vartotojas.

4 Parašykite programą, kuri suskaičiuotų reiškinį: 1/3H(R2+ r2+Rr)=V. R, r ir H įveda vartotojas.

5 Parašykite programą, kuri suskaičiuotų reiškinį: 4/3R3=V. R įveda vartotojas.

6 Parašykite programą, kuri suskaičiuotų reiškinį: cos + cos = 2cos* ½ (+)*cos½(-). ir įveda vartotojas.

7 Parašykite programą, kuri suskaičiuotų reiškinį: a2+b2=c2. a, b įveda vartotojas.

8 Parašykite programą, kuri suskaičiuotų reiškinį: sin+sin= 2sin½(+)*cos ½(-). ir įveda vartotojas.

9 Parašykite programą, kuri suskaičiuotų reiškinį: tg+tg= (sin(+))/(cos*cos). ir įveda vartotojas.

10 Parašykite programą, kuri suskaičiuotų reiškinį: ctg+ctg= (sin(+))/(sin*sin). ir įveda vartotojas.

11 Parašykite programą, kuri suskaičiuotų reiškinį: ctg*ctg= (sin(-))/(sin*sin). ir įveda vartotojas.

12 Parašykite programą, kuri suskaičiuotų reiškinį: sin*sin= ½(cos(-)-cos(+)). ir įveda vartotojas.

13 Parašykite programą, kuri suskaičiuotų reiškinį: cos*cos= ½(cos(+)+cos(-)). ir įveda vartotojas.

14 Parašykite programą, kuri suskaičiuotų reiškinį: sin *cos= ½(sin( + )+sin( - )). ir įveda vartotojas.

15 Parašykite programą, kuri suskaičiuotų reiškinį: cos*cos= ½(cos(+)+cos(-)). ir įveda vartotojas.

7

16 Parašykite programą, kuri suskaičiuotų reiškinį: ctg*ctg= (sin(-))/(sin*sin). ir įveda vartotojas.

17 Parašykite programą, kuri suskaičiuotų reiškinį: sin*sin= ½(cos(-)-cos(+)). ir įveda vartotojas.

18 Parašykite programą, kuri suskaičiuotų reiškinį: sin *cos= ½(sin( + )+sin( - )) .. ir įveda vartotojas.

19 Parašykite programą, kuri suskaičiuotų reiškinį: ctg+ctg= (sin(+))/(sin*sin). ir įveda vartotojas.

20 Parašykite programą, kuri suskaičiuotų reiškinį: tg-tg= (sin(-))/(cos*cos). ir įveda vartotojas.

21 Parašykite programą, kuri suskaičiuotų reiškinį: sin+sin= 2sin½(+)*cos½(-). ir įveda vartotojas.

22 Parašykite programą, kuri suskaičiuotų reiškinį: a2+b2=c2. a, b įveda vartotojas.

23Parašykite programą, kuri suskaičiuotų reiškinį: cos + cos = 2cos*1/2(+)*cos1/2(-). ir įveda vartotojas.

24 Parašykite programą, kuri suskaičiuotų reiškinį: 4/3R3=V. R įveda vartotojas.

25 Parašykite programą, kuri suskaičiuotų reiškinį: 1/3H(R2+ r2+Rr)=V. R, r ir H įveda vartotojas.

26 Parašykite programą, kuri suskaičiuotų reiškinį: (R+r)L+ R2+r2=S. R, r ir L įveda vartotojas.

27 Parašykite programą, kuri suskaičiuotų reiškinį: 2R(R+ H)=S. R ir H įveda vartotojas.

28 Parašykite programą, kuri suskaičiuotų reiškinį: a2+sin=S. a ir įveda vartotojas.

29 Parašykite programą, kuri suskaičiuotų reiškinį: 1/3H(R2+ r2+Rr)=V. R, r ir H įveda vartotojas.

30 Parašykite programą, kuri suskaičiuotų reiškinį: 4/3R3=V. R įveda vartotojas.

31 Parašykite programą, kuri suskaičiuotų reiškinį: sin-sin= 2sin½(-)*cos½(+). ir įveda vartotojas.

8

32 Parašykite programą, kuri suskaičiuotų reiškinį: sin-sin= 2sin½(-)*cos½(+). ir įveda vartotojas.

33 Parašykite programą, kuri suskaičiuotų reiškinį: . ir įveda vartotojas.

34 Parašykite programą, kuri suskaičiuotų reiškinį: sin *cos= ½(sin( + )+sin( - )). ir įveda vartotojas.

35 Parašykite programą, kuri suskaičiuotų reiškinį: tg+tg= (sin(+))/(cos*cos). ir įveda vartotojas.

9

4. 2 LABORATORINIS DARBAS (2 LD)

Darbo tikslas – panaudoti sakinį if bei ciklą while ir parašyti programą pagal duotą užduotį.

Bendra užduotis – Papildykite savo pirmosios užduoties programą sakiniu if ir ciklu while:

1. reikalingus skaičius skaičiavimams vartotojas gali įvesti klaviatūros pagalba;

2. jeigu gautas skaičius yra: teigiamas – jį paversti neigiamu; neigiamas – jį paversti teigiamu;

3. paverstąjį skaičių padauginti iš vartotojo (klaviatūra) įvestojo skaičiaus;

4. jeigu gautas skaičius yra: teigiamas – išvesti patį skaičių pranešime „gautas

skaičius 0201 yra teigiamas“; neigiamas – išvesti patį skaičių pranešime „gautas

skaičius -0201 yra neigiamas“; nulis – išvesti pranešimą „gautas skaičius 0 yra

neutralus“;5. skaičiavimai vykdomi ir išvedimas vykdomi

skirtinguose metoduose;6. programa atliktų skaičiavimus su kaskart naujais

įvedamais vartotojo skaičiais tol, kol vartotojas nenutrauks ciklo pats.

10

5. 2 LD SPRENDIMO PAVYZDŽIAI

Duomenų nuskaitymo iš ekrano pavyzdys:

import java.util.Scanner;public class first { public static void main(String[] args) { Scanner in = new Scanner(System.in);

int a, b, c;System.out.print("Iveskite a =: "); a = in.nextInt();System.out.print("Iveskite c =: "); c = in.nextInt();in.close();b=((a*c)+(2*a*c))/3;System.out.println("((a*c)+(2*a*c))/3=b");

System.out.println("(("+a+"*"+c+")+(2*"+a+"*"+c+"))/3="+b);}

}

Atsakymas: Iveskite a =: 2Iveskite c =: 3((a*c)+(2*a*c))/3=b((2*3)+(2*2*3))/3=6

 Skaičiavimų atlikimo pavyzdys naudojant atskirą metodą:

import java.io.*;import java.util.Scanner;

class exam { static int getKeyboardInput() throws IOException { Scanner in = new Scanner(System.in); int sk = in.nextInt(); in.close(); return sk; }

static public void main(String[] args) throws IOException { System.out.print("Enter a number: ");

int s = getKeyboardInput(); System.out.print("keyboard input is: "); System.out.println(s); System.out.println("That’s it"); }}

Atsakymas: Enter a number: 123keyboard input is: 123That’s it

11

while ir for ciklų naudojimo pavyzdys:

public class Java_Break{ public static void main(String args[])

{ int modulo = 10, i = 0,j = 0; while(i < modulo){ for(;;i++)

{ for(;j < i;j++)System.out.println("modulo:"+modulo+"\t\ti:"+i);if (i == modulo)

break;else { modulo--;

continue; }}

}System.out.println("\nValue, what breaks while, is:"+modulo);

}}

Atsakymas: modulo:9 i:1modulo:8 i:2modulo:7 i:3modulo:6 i:4modulo:5 i:5

Value, what breaks while, is:5

if sakinio pavyzdys:

import javax.swing.*;

class IfElseIfStatementExample {    public static void main(String[] args) 

{ String s="";       int age = 16;      if(age < 13) s = "pre-teenager";       else if (age > 19) s = "post-teenager";       else s = "teenager";       System.out.println("a person aged "+age+" is a "+s);   }}

Atsakymas: a person aged 16 is a teenager

12

6. 3 LABORATORINIS DARBAS (3 LD)

Darbo tikslas – išmokti dirbti su for ir while ciklo sakiniais.Bendra užduotis – Pakeisti 1LD užduotį ir panaudojant for ir

while ciklo sakinius atlikti tokius veiksmus:1. programa turi būti kartojama, kol neįvedamas simbolis

pabaigos simbolis;2. kas kartą turi būti įvedamos naujos kintamųjų reikšmės

(pirmojo laboratorinio darbo užduočiai skaičiuoti);3. atlikus skaičiavimus prie gauto rezultato (suskaičiavus

pirmojo laboratorinio darbo sąlygą) (tam tikrą skaičių žingsnių (sk)) turi būti iš pradžių pridedamas, o po to ir pradinio gauto rezultato atimamas žingsnis (ž);

4. po kiekvieno veiksmo turi būti parodomi komentarai ir gautasis naujas skaičius. Pavyzdys ir pateiktas atsakymas pavaizduota žemiau;

5. kai įvedamas programos darbo pabaigos simbolis, programa turi išvesti komentarą apie darbo pabaigą ir baigti darbą;

6. kiek skaičių pridėti ir koks yra žingsnis nurodyta individualiose užduotyse.

Pvz.: galutinis rezultatas yra 25, sk=3 ir ž=2, 6, 18. Pridedame ir atimame ,3 kartus (sk=3) tokią žingsnių seką ž=2, 6, 18.

for ciklo skaičiavimų atsakymas ekrane turi būti toks:„Sumavimas. Prie gauto rezultato 25:“„Pridėjus 2 atsakymas yra 27“„Pridėjus 6 atsakymas yra 33“„Pridėjus 18 atsakymas yra 51“

„Atimtis. Iš gauto rezultato 25:“„Atėmus 2 atsakymas yra 23“„Atėmus 6 atsakymas yra 17“„Atėmus 18 atsakymas yra -1“

13

7. 3 LD SPRENDIMO PAVYZDŽIAI

for ciklo panaudojimo pavyzdys:

class ForLoop { public static void main(String[] args)

{ String word = "even newel level";char l1 = 'e', l2 = 'l';int c1=0, c2=0;

for(int i=0; i<word.length(); i++) { char c = word.charAt(i); if(c==l1) { c1++; } else if (c==l2) { c2++;}}

System.out.println("the words '"+word+"' contains "++c1+"-"+l1+"'s and "+c2+"-"+l2+"'s");

}

}Atsakymas: the words 'even newel level' contains 6-e's and 3-l's

do-while ciklo panaudojimo pavyzdys:

public class nnn { public static void main(String args[])

{ boolean value = true;String str = "Heavenly bodies";int i = 9, modulo = str.length(); do{ i++; modulo--;

System.out.println("welcome "+i+" time");if((modulo == i) && (value == true))

break;

}while(value);

}

}

Atsakymas: welcome 10 timewelcome 11 timewelcome 12 time

14

8. 3 LD INDIVIDUALIOS UŽDUOTYS

1 sk – 5ž – 2,4,8, 11 sk – 9

ž – 2,4,8,16, 21 sk – 5ž – 3,2,4,3,5 31 sk – 9

ž – 1,1,2,3,5,

2 sk – 6ž – 1,3,4,7, 12 sk – 4

ž – 1,3,9,27, 22 sk – 6ž – 1,5,2,4,3,3 32 sk – 8

ž – 1,3,4,7

3 sk – 8ž – 2,4,6,8, 13 sk – 7

ž – 1,3,4,7, 23 sk – 6ž – 1,8,27,64, 33 sk – 7

ž – 2,4,6,8,

4 sk – 8ž – 1,1,2,3,5 14 sk – 6

ž – 1,1,2,3,5, 24 sk – 8ž – 2,5,8,11, 34 sk – 6

ž – 3,7,11,15,

5 sk – 9ž – 1,3,5,7, 15 sk –5

ž – 1,3,5,7, 25 sk – 5ž – 1,3,9,27, 35 sk – 5

ž – 1,8,3,6,5

6 sk – 9ž – 2,5,8,11, 16 sk – 9

ž – 1,5,2,4,3,3, 26 sk – 5ž – 1,1,2,3,5, 36 sk – 5

ž – 1,8,27,64,

7 sk – 8ž – 1,8,27,64, 17 sk – 8

ž – 3,7,11,15, 27 sk – 6ž – 1,3,9,27, 37 sk – 6

ž – 2,5,8,11,

8 sk – 7ž – 3,7,11,15, 18 sk – 7

ž – 3,2,4,3,5,4,6 28 sk – 7ž – 1,3,5,7, 38 sk – 5

ž – 2,4,6,8,

9 sk – 6ž – 3,2,4,3,5,4 19 sk – 6

ž – 2,5,8,11, 29 sk – 8ž – 2,4,8,16, 39 sk – 8

ž – 3,2,4,3,5,4

10 sk – 5ž – 1,5,2,4,3 20 sk – 5

ž – 3,2,4,3,5 30 sk – 9ž – 3,7,11,15, 40 sk – 9

ž –1,5,2,4,3,3,

15

9. 4-5 LABORATORINIS DARBAS (4-5 LD)

Darbo tikslas – išmokti dirbti su masyvais ir dvimatėmis matricomis.

Bendra užduotis – papildykite trečio laboratorinio darbo programą:1. Dvimatės matricos X[][] eilutė užpildoma skaičiais gautais pridėjus

ir atėmus ž skaičius. X[][] eilutės ilgis yra 2*sk. Pvz.: sk=4. Tada pridedam ir atimam 2*4 skaičius (nes sk = 4), eilutė turi būti 16 elementų ilgio, nes pridedam 8 ir atimam 8 elementus (taigi pagal pavyzdį gaunam, kad X[...][16]).

2. Eilučių skaičius yra 2*sk. T.y. jei sk = 4, eilučių skaičius turi būti 2*4 (taigi pagal pavyzdį gaunam, kad X[8][16]).

3. Dvimatės matricos eilutes pildyti kiekvieną kartą pagal gautąjį naująjį rezultatą (vartotojui įvedus naujus skaičius, skirtus 1LD rezultatui skaičiuoti).

4. Į dvimatę matricą galima vesti ne daugiau nei 2*sk eilučių (t.y. negalima viršyti nustatytojo eilučių kiekio, bet galima užpildyti mažesniu eilučių kiekiu).

5. Dvimatės matricos neužpildytos eilutės pildomos „0“. 6. Suformuoti vienmates matricas pagal individualų sk (masyvus).

Masyvų ilgiai vienodi. Masyvų elementų skaičius lygus dvimatės matricos stulpelių skaičiui (stulpelių skaičius gaunamas 1 punkte).

7. Masyvai (a – e) pildomi tokiu būdu:a. Vienas elementas lygus kiekvieno dvimatės matricos stulpelio

sumai. Gaunamas masyvas A[].b. Vienas elementas lygus kiekvieno dvimatės matricos stulpelio

sandaugai. Gaunamas masyvas B[]. Jei yra neužpildytųjų eilučių – į jas programa neturi kreipti dėmesio.

c. Masyvų sudėtis turi būti atliekama taip: A[] masyvo pirmas elementas su B[] paskutiniuoju, A[] masyvo antras elementas su B[] priešpaskutiniuoju ir t.t. Rezultatas turi būti surašomas į C[] masyvą.

d. Masyvų dalyba turi būti atliekama taip: B[] masyvo paskutinis elementas padalintas iš A[] masyvo paskutinio elemento, B[] priešpaskutinis elementas padalintas ir A[] priešpaskutinio elemento ir t.t. Rezultatai turi būti surašyti į D[] masyvą;

e. Surikiuokite susumuoto masyvo C[] duomenis didėjimo ir mažėjimo tvarka ir įrašykite į E[] masyvą;

16

Pradinius, tarpinius ir galutinius rezultatus atspausdinti ekrane lentelės forma.

17

Darbo rezultatų pavyzdys:-------------------------------------------------------------------------------------------------------------------------------------------------------------------| | Sumavimas || Atimtis |-------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 || 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |-------------------------------------------------------------------------------------------------------------------------------------------------------------------| 1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 || -1 | -2 | -3 | -4 | -5 | -6 | -7 | -8 || 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 || 1 | 0 | -1 | -2 | -3 | -4 | -5 | -6 || 3 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 || 4 | 3 | 2 | 1 | 0 | -1 | -2 | -3 | : : : : : : : : : : : : : : : : :| 8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 || 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |

----------------------------------------------------------------------------------------------------------------------------------------| Nr. | a | b | Suma | Dalyba | Didėjimas | Mažėjimas |----------------------------------------------------------------------------------------------------------------------------------------| 1 | 10 | 18 | 10+1040=1050 | 1040/31=33.54 | 49 | 1050 || 2 | 13 | 56 | 13+756=769 | 756/28=27 | 84 | 769 || 3 | 16 | 120 | 16+528=544 | 528/25=21.12 | 145 | 544 || 4 | 19 | 216 | 19+350=369 | 350/22=15.90 | 238 | 369 || 5 | 22 | 350 | 22+216=238 | 216/19=11.36 | 369 | 238 || 6 | 25 | 528 | 25+120=145 | 120/16=7.5 | 544 | 145 || 7 | 28 | 756 | 28+56=84 | 56/13=4.31 | 769 | 84 || 8 | 31 | 1040 | 31+18=49 | 18/9=2 | 1050 | 49 |----------------------------------------------------------------------------------------------------------------------------------------

10. 4-5 LD SPRENDIMO PAVYZDŽIAI

Matricos formavimo pavyzdys:

: int [][] matr = new int[5][10];int [] mas = new int[10];//Priskiriam for(int i=0; i<5; i++){ // suformuojam vienmati masyva is 10 elementu

for(int j=0; j<10; j++){

mas[j] = in.nextInt();}// priskiriam masyvo elementus matricos eilutes emementamsfor(int j=0; j<10; j++){

matr[i][j] = mas[j];}

}:

Masyvo rikiavimo algoritmo pavyzdys (skaičiams):

:// sveiku skaiciu vienmacio masyvo skaiciu rikiavimas mazejimo tvarkafor(int x=0; x<n; x++){

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

if(array[y]>array[y+1]){ int temp = array[y+1];

array[y+1] = array[y];array[y] = temp;

}}

}:

11. 6-9 LABORATORINIS DARBAS (6-9 LD)

Darbo tikslas – išmokti: Parašyti funkcijas matricoje esantiems duomenims apdoroti; Perkrauti operatorius; Kurti paketus; Taikyti paveldėjimą; Įterpti/šalinti elementus ir skaityti duomenis iš failo.

Bendra užduotis – parašykite programą pagal duotą individualią užduotį, kurioje būtų:

1. Duomenų nuskaitymas iš failo;2. Dvimatės matricos kūrimas;3. Matricų išmatavimus gali nustatymas automatiškai arba

dialogo metu;4. Tušti matricos elementai turi būti užpildymas

tarpais/nuliais;5. Jei yra daugyba, neįtraukti elementų, kuriuos užpildome

4. punkto metu;6. Sumuojami, dauginami, skaičiuojami tik tie elementai,

kuriuos įvedė vartotojas arba nuskaitė iš failo;7. Pradiniai, tarpiniai ir galutiniai rezultatai būtų

atspausdinami ekrane lentelės forma.

20

12. 6-9 LD SPRENDIMO PAVYZDŽIAI

Matricos formavimo pavyzdys:

: int [][] matr = new int[5][10];int [] mas = new int[10];//Priskiriam for(int i=0; i<5; i++){ // suformuojam vienmati masyva is 10 elementufor(int j=0; j<10; j++){

mas[j] = in.nextInt();}// priskiriam masyvo elementus matricos eilutes emementamsfor(int j=0; j<10; j++){

matr[i][j] = mas[j];}

}:

Paveldėjimo pavyzdys:

class A {  A(int i) {    System.out.println("A constructor");  }}class B extends A {  B(int i)  {    super(i);     System.out.println("B constructor");  }}class C extends B {  C()  {    super(11);     System.out.println("C constructor"); }}

public class MainClass {   public static void main(String[] args)  {    C x = new C();  }}

Atsakymas: A constructor B constructor C constructor

21

Masyvo rikiavimo algoritmo pavyzdys (skaičiams):

:// sveiku skaiciu vienmacio masyvo skaiciu rikiavimas mazejimo tvarkafor(int x=0; x<n; x++){

for(int y=0; y<n-1; y++){if(array[y]>array[y+1]){ int temp = array[y+1];array[y+1] = array[y];array[y] = temp;

}}

}:

Operatorių perkrovimo pavyzdys:

public class MainClass { public static void printArray(Double[] inputArray) { for (Double element : inputArray) System.out.printf("%s ", element); System.out.println(); } public static void printArray(Character[] inputArray) { for (Character element : inputArray) System.out.printf("%s ", element); System.out.println(); } public static void main(String args[]) { Double[] doubleArray = { 1.1, 2.2, 3.3, 4.4, 5.5 }; Character[] characterArray = { 'H', 'E', 'L', 'L', 'O' };

System.out.println("\nArray doubleArray contains:"); printArray(doubleArray); System.out.println("\nArray characterArray contains:"); printArray(characterArray);

}}Atsakymas:Array doubleArray contains:1.1 2.2 3.3 4.4 5.5

Array characterArray contains:H E L L O

22

13. 6-9 LD INDIVIDUALIOS UŽDUOTYS

1

Duomenų faile duota atsitiktinės simbolių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „%“. Suskaičiuokite kiek simbolių yra kiekvienoje eilutėje. Raskite kuris simbolis kiekvienoje eilutėje kartojasi mažiausia (d), ir kuris daugiausia (n) kartų. Surikiuokite kiekvienos eilutės duomenis nuo trumpiausio žodžio iki ilgiausio (simboliu rinkinys iki tarpo skaitomas kaip žodis). Sudauginkite vartotojo pasirinktos eilutės daugiausia besikartojančių simbolių kiekį (d) su visų simbolių toje eilutėje kiekiu. Gautą skaičių padalinkite iš rečiausia besikartojančių simbolių skaičiaus (n). Raskite gautojo skaičiaus (a) dvigubą faktorialą: a!!=1*3*5*…*a, kai a yra nelyginis, o a!!=2*4*6*…*a, kai a yra lyginis. Faktorialo radimui naudokite rekursinę funkciją. Pradinius duomenis, tarpinius veiksmus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

2

Duomenų faile duota atsitiktinės skaičių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „z“. Susumuokite kiekvienos eilutės skaičius. Surikiuokite kiekvieną eilutę didėjančia tvarka, o eilutes – pagal didėjančias sumas (eilutė, turinti mažiausią sumą turi būti pirma, o didžiausią sumą – paskutinė). Suskaičiuokite vartotojo pasirinktos eilutės sumos (n) skaičiaus dvigubą faktorialą: n!!=1*3*5*…*n, kai n yra nelyginis, o n!!=2*4*6*…*n, kai n yra lyginis. Faktorialui skaičiuoti naudokite rekursinę funkciją. Pradinius duomenis, tarpinius veiksmus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

3 Duomenų faile duota atsitiktinės simbolių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „%“. Suskaičiuokite kiek simbolių yra kiekvienoje eilutėje. Raskite kuris simbolis eilutėje kartojasi mažiausia

23

(d), ir kuris daugiausia (n). Surikiuokite kiekvienos eilutės duomenis nuo ilgiausio žodžio iki trumpiausio (simboliu rinkinys iki tarpo skaitomas kaip žodis). Susumuokite kiekvienos eilutės visus daugiausia besikartojančių simbolių kiekį (n) su rečiausia besikartojančių simbolių kiekiu (d). Raskite gautojo skaičiaus faktorialą: a!=a*(a-1)!, o (0)!=1. Faktorialo radimui skaičiuoti naudokite rekursines funkcijas. Pradinius duomenis, tarpinius veiksmus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

4

Duomenų faile duota atsitiktinės skaičių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „;“. Suskaičiuokite kiekvienos eilutės sumą (n) ir padauginkite iš einamosios eilutes skaitmenų skaičiaus (d). Surikiuokite kiekvienos eilutės skaičius mažėjančia tvarka, o eilutes nuo gautos didžiausios sandaugos iki mažiausios. Raskite vartotojo pasirinktos eilutės aritmetinės progresijos n-tąjį narį pagal formulę an=an-1+d, kur a1=1. an- tajam nariui rasti naudokite rekursinę funkciją. Pradinius duomenis, tarpinius veiksmus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

5

Duomenų faile duota atsitiktinės simbolių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „#“. Suskaičiuokite kiek simbolių yra kiekvienoje eilutėje. Raskite, kuris simbolis kiekvienoje eilutėje kartojasi mažiausia (d), ir kuris daugiausia (n) kartų. Surikiuokite kiekvienos eilutės duomenis nuo ilgiausio žodžio iki trumpiausio (simboliu rinkinys iki tarpo skaitomas kaip žodis). Suskaičiuokite vartotojo pasirinktos eilutės aritmetin4s progresijos n-tąjį narį pagal formulę an=an-1+d, kur a1=1. an- tajam nariui rasti naudokite rekursinę funkciją. Pradinius duomenis, tarpinius veiksmus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

6 Duomenų faile duota atsitiktinės skaičių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis

24

yra „.“. Suskaičiuokite kiekvienos eilutės skaitmenų sumą (n) ir pridėkite eilutės skaitmenų skaičių (d). Surikiuokite kiekvienos eilutės duomenis didėjančia tvarka. Suskai-čiuokite vartotojo pasirinktos eilutės skaičių a: an=an-1*d. an- tajam nariui rasti naudokite rekursinę funkciją. Pradinius duomenis, tarpinius veiksmus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

7

Duomenų faile duota atsitiktinės simbolių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „!“. Suskaičiuokite kiek simbolių yra kiekvienoje eilutėje. Raskite kuris simbolis eilutėje kartojasi mažiausia kartų. Surikiuokite kiekvienos eilutės duomenis nuo trumpiausio žodžio iki ilgiausio žodžio (simboliu rinkinys iki tarpo skaitomas kaip žodis). Suskaičiuokite vartotojo pasirinktos eilutės simbolių skaičių (n), padauginkite iš mažiausia pasi-kartojančių simbolių kaičiaus (a). Raskite sandaugos geo-metrinės progresijos n-tąjį narį: an=an-1*q. Čia q – visų žodžių kiekis. Geometrinės progresijos n-tajam nariui rasti naudokite rekursinę funkciją. Pradinius duomenis, tarpinius veiksmus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

8

Duomenų faile duota atsitiktinės skaičių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „x“. Surikiuokite kas antrą eilutę mažėjančia ir didėjančia tvarkomis. Suskaičiuokite kiekvienos eilutės skaičių sumą (n). Raskite sandaugos geometrinės progresijos n-tąjį narį: an=an-1*q. Čia q – visų žodžių kiekis. Geometrinės progresijos n-tojo nario radimui naudokite rekursinę funkciją. Pradinius duomenis, tarpinius veiksmus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

9 Duomenų faile duota atsitiktinės simbolių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „0“. Suskaičiuokite kiek simbolių yra kiekvienoje eilutėje. Raskite, kuris simbolis kiekvienoje eilutėje kartojasi daugiausia kartų. Surikiuokite kas antrą eilutę mažėjančia ir

25

didėjančia tvarkomis (1,3,5,7,9,... eilutės didėjančiai, o 2,4,6,8,10,... – mažėjančiai). Raskite vartotojo pasirinktos eilutės simbolių skaičių (d) ir dažniausiai besikartojančių simbolių skaičių šioje eilutėje (n) ir suskaičiuokite n-tąjį narį pagal formulę: an=an-1-d. n-tojo nario radimui naudokite rekursinę funkciją. Pradinius duomenis, tarpinius veiksmus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

10

Duomenų faile duota atsitiktinės skaičių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „*“. Surikiuokite kas antrą eilutę didėjančia ir mažėjančia tvarkomis (1,3,5,7,9,... eilutės didėjančiai, o 2,4,6,8,10,... – mažėjančiai). Susumuokite kiekvienos eilutės skaičius. Suskaičiuokite vartotojo pasirinktos eilutės sumos (n) skaičiaus faktorialą: n!=n*(n-1)!, o (0)! = 1. Faktorialui skaičiuoti naudokite rekursinę funkciją. Pradinius duomenis, tarpinius veiksmus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

11

Duomenų faile duota atsitiktinės skaičių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „*“. Surikiuokite kas antrą eilutę didėjančia ir mažėjančia tvarkomis (1,3,5,7,9,... eilutės didėjančiai, o 2,4,6,8,10,... – mažėjančiai). Susumuokite kiekvienos eilutės skaičius. Suskaičiuokite vartotojo pasirinktos eilutės sumos (n) skaičiaus faktorialą: n!=n*(n-1)!, o (0)! = 1. Faktorialui skaičiuoti naudokite rekursinę funkciją. Pradinius duomenis, tarpinius veiksmus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

12 Duomenų faile duota atsitiktinės simbolių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „0“. Suskaičiuokite kiek simbolių yra kiekvienoje eilutėje. Raskite kuris simbolis kiekvienoje eilutėje kartojasi daugiausia kartų. Surikiuokite kas antrą eilutę mažėjančia ir didėjančia tvarkomis (1,3,5,7,9,... eilutės didėjančiai, o 2,4,6,8,10,... – mažėjančiai). Raskite vartotojo pasirinktos

26

eilutės simbolių skaičių (d) ir dažniausiai besikartojančių simbolių skaičių šioje eilutėje (n) ir suskaičiuokite n-tąjį narį pagal formulę: an=an-1-d. n-tojo nario radimui naudokite rekursinę funkciją. Pradinius duomenis, tarpinius veiksmus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

13

Duomenų faile duota atsitiktinės skaičių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „x“. Surikiuokite kas antrą eilutę mažėjančia ir didėjančia tvarkomis (1,3,5,7,9,... eilutės mažėjančiai, o 2,4,6,8,10,... – didėjančiai). Suskaičiuokite kiekvienos eilutės skaičių sumą (n). Suskaičiuokite vartotojo pasirinktos eilutės geometrinę progresiją: an=an-1*q. Čia q yra eilutės skaitmenų skaičius. Geometrinei progresijai skaičiuoti naudokite rekursinę funkciją. Pradinius duomenis, tarpinius veiksmus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

14

Duomenų faile duota atsitiktinės simbolių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „!“. Suskaičiuokite kiek simbolių yra kiekvienoje eilutėje. Raskite kuris simbolis eilutėje kartojasi mažiausia kartų. Surikiuokite kiekvienos eilutės duomenis nuo trumpiausio žodžio iki ilgiausio žodžio (simboliu rinkinys iki tarpo skaitomas kaip žodis). Suskaičiuokite vartotojo pasirinktos eilutės simbolių skaičių (n). Raskite sandaugos geometrinės progresijos n-tąjį narį: an=an-1*q. Čia q – visų žodžių kiekis eilutėje. Geometrinės progresijos n-tajam nariui rasti naudo-kite rekursinę funkciją. Pradinius duomenis, tarpinius veiks-mus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

15 Duomenų faile duota atsitiktinės skaičių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Surikiuokite kas antrą eilutę mažėjančia ir didėjančia tvarkomis (1,3,5,7,9,... eilutės mažėjančiai, o 2,4,6,8,10,... – didėjančiai). Raskite vartotojo pasirinktos eilutės simbolių skaičių (d) ir dažniausiai besikartojančių simbolių skaičių šioje eilutėje (n) ir suskaičiuokite n-tąjį narį pagal formulę: an=an-1-d. n-tojo

27

nario radimui naudokite rekursinę funkciją. Pradinius duomenis, tarpinius veiksmus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

16

Duomenų faile duota atsitiktinės simbolių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „#“. Suskaičiuokite kiek simbolių yra kiekvienoje eilutėje. Raskite kuris simbolis kiekvienoje eilutėje kartojasi mažiausia (d), ir kuris daugiausia (n) kartų. Surikiuokite kiekvienos eilutės duomenis nuo ilgiausio žodžio iki trum-piausio (simboliu rinkinys iki tarpo skaitomas kaip žodis). Suskaičiuokite vartotojo pasirinktos eilutės n-tąjį narį pagal formulę an=an-1+d, kur a1=1. n - tajam nariui rasti naudokite rekursinę funkciją. Pradinius duomenis, tarpinius veiksmus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

17

Duomenų faile duota atsitiktinės skaičių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „;“. Suskaičiuokite kiekvienos eilutės sumą (n) ir padalinkite iš einamosios eilutės skaitmenų skaičiaus (d). Surikiuokite kiekvienos eilutės skaičius mažėjančia tvarka, o eilutes nuo didžiausio dalmens iki mažiausio. Suskaičiuokite vartotojo pasirinktos eilutės an-tąjį narį pagal formulę an= an-1+d, kur a1=1. an- tajam nariui rasti naudokite rekursinę funkciją. Pradinius duomenis, tarpinius veiksmus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

18 Duomenų faile duota atsitiktinės simbolių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „%“. Suskaičiuokite kiek simbolių yra kiekvienoje eilutėje. Raskite, kuris simbolis eilutėje kartojasi mažiausia (d), ir kuris daugiausia (n). Surikiuokite kiekvienos eilutės duomenis nuo ilgiausio žodžio iki trumpiausio (simboliu rinkinys iki tarpo skaitomas kaip žodis). Sudauginkite kiekvienos eilutės daugiausia visus besikartojančius simbolius (n) su rečiausia besikartojančiais simboliais (d). Raskite vartotojo pasirinktos eilutės gautos sandaugos

28

faktorialą: a!=a*(a-1)!, o (0)!=1. Faktorialo radimui naudoki-te rekursines funkcijas. Pradinius duomenis, tarpinius veiks-mus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

19

Duomenų faile duota atsitiktinės skaičių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „z“. Susumuokite kiekvienos eilutės skaičius. Surikiuokite kiekvieną eilutę didėjančia tvarka, o eilutes - didėjančiomis suomis. Suskaičiuokite vartotojo pasirinktos eilutės sumos (n) skaičiaus dvigubą faktorialą: n!!=1*3*5*…*n, kai n yra nelyginis, o n!!=2*4*6*…*n, kai n yra lyginis. Faktorialui skaičiuoti naudokite rekursinę funkciją. Pradinius duomenis, tarpinius veiksmus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

20

Duomenų faile duota atsitiktinės simbolių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „%“. Suskaičiuokite kiek simbolių yra kiekvienoje eilutėje. Raskite, kuris simbolis kiekvienoje eilutėje kartojasi mažiausia (d), ir kuris daugiausia (n) kartų. Surikiuokite kiekvienos eilutės duomenis nuo trumpiausio žodžio iki ilgiausio (simbolių rinkinys iki tarpo skaitomas kaip žodis). Sudauginkite vartotojo pasirinktos eilutės daugiausia besikartojančių simbolių kiekį (n) su visų simbolių toje eilutėje kiekiu. Gautą skaičių padalinkite iš mažiausia besikartojančių simbolių skaičiaus (d). Raskite gautojo skaičiaus dvigubą faktorialą: a!!=1*3*5*…*a, kai a yra nelyginis, o a!!=2*4*6*…*a, kai a yra lyginis. Faktorialo radimui naudokite rekursines funkcijas. Pradinius duomenis, tarpinius veiksmus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

21 Duomenų faile duota atsitiktinės skaičių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „.“. Suskaičiuokite kiekvienos eilutės skaitmenų sandaugą (n) ir padalinkite iš einamos eilutės skaitmenų skaičiaus (d). Surikiuokite kiekvienos eilutės skaičius mažė-

29

jančia tvarka, o eilutes nuo didžiausio dalmens iki mažiausio. Suskaičiuokite vartotojo pasirinktos eilutės an-tąjį narį pagal formulę an=an-1+d, kur a1=1. an- tajam nariui rasti naudokite rekursinę funkciją. Pradinius duomenis, tarpinius veiksmus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

22

Duomenų faile duota atsitiktinės simbolių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „!“. Suskaičiuokite kiek simbolių yra kiekvienoje eilutėje. Raskite, kuris simbolis eilutėje kartojasi mažiausia kartų. Surikiuokite kiekvienos eilutės duomenis nuo trumpiausio žodžio iki ilgiausio žodžio (simboliu rinkinys iki tarpo skaitomas kaip žodis). Suskaičiuokite vartotojo pasirinktos eilutės simbolių skaičių (n). Raskite sandaugos geometrinės progresijos an-tąjį narį: an=an-1*q. Čia q – visų žodžių kiekis. Geometrinės progresijos n-tojo nario radimui naudokite rekursines funkcijas. Pradinius duomenis, tarpinius veiksmus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

23

Duomenų faile duota atsitiktinės skaičių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „x“. Surikiuokite kas antrą eilutę mažėjančia ir didejančia tvarkomis (1,3,5,7,9,... eilutės mažėjančiai, o 2,4,6,8,10,... – didėjančiai). Suskaičiuokite kiekienos eilutės skaičių sumą (n). Suskaičiuokite vartotojo pasirinktos eilutės geometrinės progresijos n-tąjį narį: an=an-1*q. Čia q yra eilutės skaitmenų skaičius. Geometrinės progresijos n-tojo nario radimui nau-dokite rekursinę funkciją. Pradinius duomenis, tarpinius veik-smus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

24 Duomenų faile duota atsitiktinės simbolių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „0“. Suskaičiuokite kiek simbolių yra kiekvienoje eilutėje. Raskite vartotojo pasirinktos eilutės simbolių skaičių (d) ir dažniausiai besikartojančių simbolių skaičių šioje eilutėje (n) ir suskaičiuokite n-tąjį narį pagal formulę: an=an-1-d. n-tojo nario radimui naudokite rekursinę funkciją.

30

Pradinius duomenis, tarpinius veiksmus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

25

Duomenų faile duota atsitiktinės skaičių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „*“. Surikiuokite kas antrą eilutę didėjančia ir mažėjančia tvarkomis (1,3,5,7,9,... eilutės didėjančiai, o 2,4,6,8,10,... – mažėjančiai). Susumuokite kiekvienos eilutės skaičius. Suskaičiuokite vartotojo pasirinktos eiluės sumos (n) skaičiaus faktorialą: n!=n*(n-1)!, o (0)! = 1. Faktorialui skaičiuoti naudokite rekursinę funkciją. Pradinius duomenis, tarpinius veiksmus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

26

Duomenų faile duota atsitiktinės simbolių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „%“. Suskaičiuokite kiek simbolių yra kiekvienoje eilutėje. Raskite, kuris simbolis kiekvienoje eilutėje kartojasi mažiausia (d), ir kuris daugiausia (n) kartų. Surikiuokite kiekvienos eilutės duomenis nuo trumpiausio žodžio iki ilgiausio (simbolių rinkinys iki tarpo skaitomas kaip žodis). Sudauginkite vartotojo pasirinktos eilutės daugiausia besikartojančių simbolių kiekį (n) su visų simbolių toje eilutėje kiekiu. Gautą skaičių padalinkite iš mažiausia besikartojančių simbolių skaičiaus (d). Raskite gautojo skaičiaus dvigubą faktorialą: a!!=1*3*5*…*a, kai a yra nelyginis, o a!!=2*4*6*…*a, kai a yra lyginis. Faktorialo radimui skaičiuoti naudokite rekursines funkcijas. Pradinius duomenis, tarpinius veiksmus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

27 Duomenų faile duota atsitiktinės skaičių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „z“. Susumuokite kiekvienos eilutės skaičius. Surikiuokite kiekvieną eilutę mažėjančia tvarka, o eilutes mažėjančiomis suomis. Suskaičiuokite vartotojo pasirinktos eilutės sumos (n) skaičiaus dvigubą faktorialą: n!!=1*3*5*…

31

*n, kai n yra nelyginis, o n!!=2*4*6*…*n, kai n yra lyginis. Faktorialui skaičiuoti naudokite rekursinę funkciją. Pradinius duomenis, tarpinius veiksmus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

28

Duomenų faile duota atsitiktinės simbolių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „%“. Suskaičiuokite kiek simbolių yra kiekvienoje eilutėje. Raskite, kuris simbolis eilutėje kartojasi mažiausia (d), ir kuris daugiausia (n). Surikiuokite kiekvienos eilutės duomenis nuo trumpiausio žodžio iki ilgiausio (simbolių rinkinys iki tarpo skaitomas kaip žodis). Sudauginkite kiekvienos eilutės daugiausia visus besikartojančius simbolius (n) su rečiausia besikartojančiais simboliais (d). Prie vartotojo pasirinktos eilutės gauto rezultato prisumuokite daugiausia besikartojančių simbolių kiekį. Raskite gautojo skaičiaus faktorialą: a!=a*(a-1)!, o (0)!=1. Faktorialo radimui skaičiuoti naudokite rekursines funkcijas. Pradinius duomenis, tarpinius veiksmus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

29

Duomenų faile duota atsitiktinės skaičių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „;“. Suskaičiuokite kiekvienos eilutės sumą (n) ir padalinkite iš einamosios eilues skaitmenų skaičiaus (d). Surikiuokite kiekvienos eilutės skaičius mažėjančia tvarka, o eilutes nuo didžiausio dalmens iki mažiausio. Suskaičiuokite vartotojo pasirinktos eilutės n-tąjį narį pagal formulę an=an-1+d, kur a1=1. an- tajam nariui rasti naudokite rekursinę funkciją. Pradinius duomenis, tarpinius veiksmus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

30 Duomenų faile duota atsitiktinės simbolių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „#“. Suskaičiuokite kiek simbolių yra kiekvienoje eilutėje. Raskite, kuris simbolis kiekvienoje eilutėje kartojasi mažiausia (d), ir kuris daugiausia (n) kartų. Surikiuokite

32

kiekvienos eilutės duomenis nuo ilgiausio žodžio iki trum-piausio (simboliu rinkinys iki tarpo skaitomas kaip žodis). Suskaičiuokite vartotojo pasirinktos eilutės n-tąjį narį pagal formulę an=an-1+d, kur a1=1. an- tajam nariui rasti naudokite rekursinę funkciją. Pradinius duomenis, tarpinius veiksmus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

31

Duomenų faile duota atsitiktinės simbolių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „%“. Suskaičiuokite kiek simbolių yra kiekvienoje eilutėje. Raskite, kuris simbolis eilutėje kartojasi mažiausia (d), ir kuris daugiausia (n). Surikiuokite kiekvienos eilutės duomenis nuo trumpiausio žodžio iki ilgiausio (simboliu rinkinys iki tarpo skaitomas kaip žodis). Sudauginkite kiekvienos eilutės daugiausia visus besikartojančius simbolius (n) su mažiausia besikartojančiais simboliais (d). Prie vartotojo pasirinktos eilutės gauto rezultato prisumuokite mažiausia besikartojančių simbolių kiekį. Raskite gautojo skaičiaus faktorialą: a!=a*(a-1)!, o (0)!=1. Faktorialo radimui skaičiuoti naudokite rekursines funkcijas. Pradinius duomenis, tarpinius veiksmus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

32

Duomenų faile duota atsitiktinės simbolių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „!“. Suskaičiuokite kiek simbolių yra kiekvienoje eilutėje. Raskite, kuris simbolis eilutėje kartojasi mažiausia kartų. Su-rikiuokite kiekvienos eilutės duomenis nuo trumpiausio žodžio iki ilgiausio žodžio (simboliu rinkinys iki tarpo skai-tomas kaip žodis). Suskaičiuokite vartotojo pasirinktos eilu-tės simbolių skaičių (n). Raskite sandaugos geometrinės progresijos n-tąjį narį: an=an-1*q. Čia q – visų žodžių kiekis. Geometrinės progresijos n-tojo nario radimui skaičiuoti nau-dokite rekursinę funkciją. Pradinius, tarpinius duomenis ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

33

33

Duomenų faile duota atsitiktinės skaičių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „;“. Suskaičiuokite kiekvienos eilutės sumą (n) ir padalinkite iš einamosios eilutės skaitmenų skaičiaus (d). Surikiuokite kiekvienos eilutės skaičius mažėjančia tvarka, o eilutes nuo didžiausio dalmens iki mažiausio. Suskaičiuokite vartotojo pasirinktos eilutės n-tąjį narį pagal formulę an=an-1+d, kur a1=1. an- tajam nariui rasti naudokite rekursinę funkciją. Pradinius duomenis, tarpinius veiksmus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

34

Duomenų faile duota atsitiktinės simbolių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „0“. Suskaičiuokite kiek simbolių yra kiekvienoje eilutėje. Raskite vartotojo pasirinktos eilutės simbolių skaičių (d) ir dažniausiai besikartojančių simbolių skaičių šioje eilutėje (n) ir suskaičiuokite n-tąjį narį pagal formulę: an=an-1-d. n-tojo nario radimui naudokite rekursinę funkciją. Pradinius duomenis, tarpinius veiksmus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

35

Duomenų faile duota atsitiktinės skaičių sekų eilutės (eilučių ilgis ir skaičius skirtingas). Eilutės pabaigos simbolis yra „.“. Suskaičiuokite kiekvienos eilutės skaitmenų sandau-gą (n) ir padalinkite iš einamos eilutės skaitmenų skaičiaus (d). Surikiuokite kiekvienos eilutės skaičius mažė-jančia tvarka, o eilutes nuo didžiausio dalmens iki mažiausio. Suskaičiuokite vartotojo pasirinktos eilutės an-tąjį narį pagal formulę an=an-1*d, kur a1=1. an- tajam nariui rasti naudokite rekursinę funkciją. Pradinius duomenis, tarpinius veiksmus ir galutinį rezultatą išveskite į ekraną ir rezultatų failą.

34

14. 10-14 LABORATORINIS DARBAS (10-14 LD)

Darbo tikslas – išmokti kurti JApplet. Bendra užduotis – pagal 6-9 LD parašyti appletą.

35

15. APPLET GUI ĮRANKIO ĮDIEGIMAS Į ECLIPSE PLATFORMĄ

1. Kaip instaliuoti GUI įrankį.

Paleiskite Eclipse. Pasirinkite: Help -> Install New Software...

Atsidariusiame lange pasirinkite Add... ir į skiltį Location: įveskite adresą: http://cloudgarden1.com/update-site

Pažymėkite varnele prie naujai atsiradusio jigloo.

36

Instaliuokite šį įrankių paketą. Kai instaliacija bus baigta, Eclipse paprašys „restatuoti“.

2. Kaip paleisti GUI įrankį.

Susikurkite naują JAVA projektą:

37

Kuriant naują Applet klasę pasirinkitą JApplet pakete GUI Forms -> Swing.

38

17. NURODYMAI ATASKAITAI

1. Visa ataskaita turi būti parašyta 10 šriftu, TimesNewRoman stiliumi.

2. Visos pastraipos lygiuotos abipusiu lygiavimu. 3. Pirma eilutė 1cm atitraukta nuo kairiojo krašto.4. Punktų pavadinimai turi būti numeruojami/punktuojami,

parašyti pastorintu šriftu ir pabraukti.5. Užbaigus punkto aprašymą, palikti vienos eilutės tarpą.6. Duomenys ir rezultatai turi būti pateikiami lentelės forma

arba lentelėmis. Turi būti aiškiai išskirta, kur ir kokie duomenys/rezultatai yra. Turi būti tvarkingai suformuota lentelės antgalvė.

7. Aprašant uždavinio sprendimo būdus reikia aprašyti kiekvieną klasę atskirai pagal visus 5.1 – 5.5 punktus.

8. Klasės/klasės metodo kintamuosius, jų tipus, klasių tipus rašyti pasiviruoju šriftu.

9. Aprašyti būtina visus klasės kintamuosius.10. Jei klasė turi savo metodus – aprašyti jų kintamuosius ir

metodo veikimą.11. Trumpai paaiškinti kiekvienos klasės/klasės metodo

gaunamus rezultatus.12. Programos kodas gali būti pateikiamas talpinant jį į du

stulpelius ir sumažinus šriftą.

40

18. ATASKAITOS PAVYZDYS

VILNIAUS GEDIMINO TECHNIKOS UNIVERSITETASINFORMACINIŲ TECHNOLOGIJŲ KATEDRA

PROGRAMAVIMO KALBOS C++ LABORATORINIO DARBO NR. X

ataskaita

Darbą atliko: AB-09/00 gr. studentas/ėVardenis Pavardenis

Darbą tikrino: dr. L. PupeikienėĮvertinimas: _____________________

Vilnius, 2010

41

1. Darbo tikslas – išmokti dirbti su... (darbo tikslas pateikiamas kiekvieno laboratorinio darbo užduotyje).

2. Užduotis – Parašykite programą, kuri atliktų veiksmus pagal individualią vartotojo sąlygą (nurašoma visa individuali vartotojo sąlyga).

3. Užduoties analizė - Pagal individualią užduotį parašyti programą, kuri turėtų:... (nurašoma konkretaus laboratorinio darbo bendra užduotis);

4. Pradiniai duomenys:

Nr. Duomenys1. X = 5; Y = 16;2. X = 2; Y = 0;: :10. X = 0; Y = 25;

Konkrečios užduoties atveju pradiniai duomenys yra skirtingi. Čia kiekvienu atveju reikia parašyti su kokias konkrečiais duomenimis atliekami skaičiavimai. Pateikti ne mažiau 10 testinių duomenų.

5. Sprendimo būdas :5.1. DuomenuNuskaitymas skirta nuskaityti vartotojo

įvedamiems duomenims iš failo/ekrano;

Kintamieji:int X=0, – skirtas skaitmenų kiekio skaičiavimui; Y=0 – skirtas skaitmenų sumos skaičiavimui;float mas[] – skirtas sandaugoms masyve išsaugoti.struct Student{ –dinaminiam masyvui aprašyti; char vardas[20]; – vardas;

42

char pavarde[20]; – pavardė; float vidurkis; – vidurkis;};:

Veikimo principai:Ši klasė nuskaito duomenis iš failo/ekrano. Nuskaitymo metu susumuoja pateiktus skaičius ir suskaičiuoja jų kiekį.

Pateikiami rezultatai:Rezultatas yra nuskaitytų skaitmenų masyvas mas[] ir skaitmenų kiekis X, bei visų skaitmenų suma Y.

5.2. DuomenuSpausdinimas void tipo klasė, skirta atspausdinti vartotojo skaičiavimų rezultatams į failą/ekraną;

Kintamieji:int A=0, – skirtas eilučių kiekiui nurodyti; B=0 – skirtas stulpelių kiekiui nurodyti;float D – skirtas skaičiuoti sandaugai.:

Veikimo principai:Ši klasė atspausdina gautus rezultatus į failą/ekraną. Spausdinimo metu ji naudoja papildomus metodus rekursijai bei funkcijos perkrovimui skaičiuoti.

Rekursija – int tipo funkcija skirta faktorialui (geometrines progresijos n-tajam nariui) rasti.Kintamieji:int n – faktorialo kintamasis (n-tasis narys);

43

Perkrovimas – skirta atnaujinti dinaminį masyvą.Kintamieji:int i, – masyvo eilučių skaičius; j – masyvo stulpelių skaičius;:

Pateikiami rezultatai:Rezultatas yra lenteles forma išspausdinti duomenys ekrane/faile.

6. Galutiniai rezultatai:

Nr. Suma Sandauga1. 21 802. 2 0: :10. 25 0

Galutinius rezultatus pateikti taip, kad matytųsi visų reikalavimuose esančių veiksmų rezultatai (įrašo įterpimas/šalinimas, paieška pagal kriterijų, rikiavimas...).

7. Programos kodas :

void Dvig(char c, int i, FILE *failas) { char c2; if(i == 1) { fprintf(failas2,"---------------\n"); while (!feof(failas)){ fscanf(failas, "%c", &c2);if (c == c2) { fprintf(failas2, ""); } else { fprintf(failas2, "%c", c2); } } printf("\nPanaikinta\n\n");}

else if(i == 0){fprintf(failas2,"---------------- \n"); while (!feof(failas)){ fscanf(failas, "%c", &c2); if (c == c2) { fprintf(failas2, "%c%c", c2, c2);} else { fprintf(failas2, "%c", c2); } } printf("\nPadvigubinta\n\n");}}

44

/* Rusiavimo funkcija rasti maksimumui */

int max(int x, int y){ if(x > y) { return x; } else { return y; }}

/* iterpimo vietos nustatymas */void merge_helper(int *input, int left, int right, int *scratch){ if(right == left + 1) { return; } else { int i = 0; int length = right - left; int midpoint_dist = length/2; int l = left, r = left + midpoint_dist;

merge_helper(input, left, left + midpoint_dist, scratch); merge_helper(input, left + midpoint_dist, right, scratch);

for(i = 0; i < length; i++) { if(l < left + midpoint_dist && (r == right || max(input[l], input[r]) == input[l])) { scratch[i] = input[l]; l++; } else { scratch[i] = input[r]; r++; } } for(i = left; i < right; i++) { input[i] = scratch[i - left]; }

}}

/* iterpimo vykdymas */int mergesort(int *input, int size){ int *scratch = (int *)malloc(size * sizeof(int)); if(scratch != NULL) { merge_helper(input, 0, size, scratch); free(scratch); return 1; } else { return 0; }}:::

45