Java 2
Cyklus + Riešenie
Mgr. Ondrej Dúcky
© 2022
1) Napíš program, ktorý prečíta nejaké slovo az neho vypíše trojuholník. Ten sa bude skladať z písmen tohto slova:
v 1. riadku je prvé písmeno, v 2. druhé písmeno ale dvakrát,
v 3. tretia, …,
v poslednom je veľakrát podľa počtu znakov slova. Môžete dostať takýto výstup:
zadajte slovo: JAVA
JAAVVVAAAA
Riešenie
public static void prvaUloha() { System.out.print("Zadaj slovo: "); String slovo = sc.next(); for (int i = 0; i < slovo.length(); i++) { for (int k = 0; k <= i; k++) { System.out.print(slovo.charAt(i)); } System.out.println(); }
}
2) Program vytvoríte, ktorý vytvoríte takúto pyramídu:
v prvom n-1
riadku je najskôr medzier a potom jedna hviezdička
v ďalšom riadku je o jednu medzeru menej ako dve hviezdičky viac...
Môžete dostať takýto výstup:
zadaj n: 5
*
***
*****
********
********
n-1
riadku je najskôr medzier a potom jedna hviezdičkaRiešenie
public static void druhaUloha() {
System.out.print("Zadaj n: ");
Integer n = sc.nextInt();
int j = 1;
for (int i = 0; i < n; i++) {
for (int k = 0; k < j; k++) {
System.out.print("*");
}
j = j + 2;
System.out.println();
}
}
3) Napíš program, ktorý prečíta nejaké slovo a vypíše:
trojuholník sa bude skladať z písmen tohto slova:
v 1. riadku je prvé písmeno, v 2. sú prvé dve,
v 3. sú prvé tri, … v poslednom riadku bude úplné slovo.
Môžete dostať takýto výstup:
zadajte slovo: Java
J
Ja
Jav
Java
Riešenie
public static void tretiaUloha() {
System.out.print("Zadaj slovo: ");
String slovo = sc.next();
StringBuilder slovicko = new StringBuilder();
for (int i = 0; i < slovo.length(); i++) {
slovicko.append(slovo.charAt(i));
System.out.println(slovicko);
}
System.out.println();
}
4) Napíš program, ktorý zo znakov hviezdičky ( '*'
) vytvoríte takýto trojuholník: v 1. riadku je jedna hviezdička, v 2. dve, v 3. tri, …, v n
-tom riadku je dar n
. Môžete dostať takýto výstup:
zadaj n: 6
*
**
***
****
*****
********
'*'
) vytvoríte takýto trojuholník: v 1. riadku je jedna hviezdička, v 2. dve, v 3. tri, …, v n
-tom riadku je dar n
. Môžete dostať takýto výstup:
5) Program Napíš, ktorý n
-krát vypíše zadané slovo takto:
v 1. riadku bez odsadenia, v 2. s 1
odsadením (4 medzery), v 3. s 2
odsadeniami (8 medzier), v 4. s 3
odsadeniami (12 medzier), pre ďalšie riadky sa to opakuje od začiatku. V programe využi zvyšok po delení, napríklad i%4*4
.
Môžete dostať takýto výstup:
zadajte slovo: Java
zadaj n: 4
Java
Java
Java
Java
n
-krát vypíše zadané slovo takto:
1
odsadením (4 medzery), v 3. s 2
odsadeniami (8 medzier), v 4. s 3
odsadeniami (12 medzier), pre ďalšie riadky sa to opakuje od začiatku. V programe využi zvyšok po delení, napríklad i%4*4
.
6) Program, ktorý vytvoríte pyramídu z ponuky,
z ponuky bude len trojuholníka trojuholníka bude zo znakov mínus ( '-'
).
Môžete dostať takýto výstup:
zadaj n: 7
*
*-*
*---*
*-----*
*--------*
*---------*
*************
7) Napíš program, ktorý vypíše naformátovanú tabuľku mocnín celých čísel z nejakého daného intervalu. Prvý stĺpec tabuľky obsahuje číslo, v druhom je druhá mocnina tohto čísla, v tretej tretej, vo štvrtom štvrtá. Môžete dostať takýto výstup:
zadaj od: 95
zadajte do: 101
95 9025 857375 81450625
96 9216 884736 84934656
97 9409 912673 88529281
98 9604 941192 92236816
99 9801 970299 96059601
100 10000 1000000 100000000
101 10201 1030301 104060401
Riešenie
public static void siedmaUloha() {
System.out.print("Zadaj od: ");
Integer ood = sc.nextInt();
System.out.print("Zadaj do: ");
Integer doo = sc.nextInt();
if (doo < ood) {
System.out.println("2 číslo je menšie ako prvé!");
siedmaUloha();
}
for (int i=ood; i<=doo; i++){
System.out.print(i+" ");
System.out.println(i*i+" "+i*i*i+" "+i*i*i*i);
}
}
8) Budeš vytvárať dlhý znakový reťazec podobne ako v predchádzajúcej úlohe. Namiesto toho budeš musieť zapísať čísla z nejakého intervalu (v tvare '<číslo>'
). Schéma programu by mala byť podobnej predchádzajúcej úlohe. Môžete spustiť takýto výstup:
zadaj od: 88
zadajte do: 111
<88> <89> <90> <91> <92> <93> <94> <95> <96> <97> <98> <99> <100>
<101> <102> <103> <104> <105> <106> <107> <108> <109> <110> <111>
Riešenie
public static void osmaUloha() {
System.out.print("Zadaj od: ");
Integer ood = sc.nextInt();
System.out.print("Zadaj do: ");
Integer doo = sc.nextInt();
if (doo < ood) {
System.out.println("druhé číslo nie je vačšie ako prvé!");
osmaUloha();
}
for (int i = ood; i<=doo;i++){
System.out.print("<"+i+">");
}
}
9) Napíš program, ktorý vyrobí jeden dlhý znakový reťazec, zložený z úsekov oddelených medzerami: na začiatku je hviezdička (znak '*'
), za ňou medzera, potom 2 hviezdičky a medzera, 3 hviezdičky a medzera … Počet hviezdičkových úsekov je n
. Program mal mať takúto schému:
n = ...
retazec = ''
pred ... :
...
tlačiť ( retazec )
Môžete spustiť takýto výstup:
zadaj n: 10
* ** *** **** ***** **** ******** ******** ******** ***** ** ***
10) Program Napíš, ktorý vytvorí násobenie, podobne malej násobilke. Násobiť sa budú čísla z nejakého daného intervalu: v prvom riadku (aj stĺpci) sú násobky prvého čísla, v druhom druhom atď. Môžete dostať takýto výstup:
zadaj od: 8
zadaj do: 13
64 72 80 88 96 104
72 81 90 99 108 117
80 90 100 110 120 130
88 99 110 121 132 143
96 108 120 132 144 156
104 117 130 143 156 169
Riešenie
for(int k=ood;k<=doo;k++){
for(int i=ood;i<=doo;i++){
System.out.print(k*i+" ");
}
System.out.println();
}
11) Do výpisu tabuliek pridaj prvý stĺpec aj riadok navyše s hodnotami z daného intervalu, napríklad v takomto tvare:
zadaj od: 8
zadaj do: 13
| 8 9 10 11 12 13
=====|=================================
8 | 64 72 80 88 96 104
9 | 72 81 90 99 108 117
10 | 80 90 100 110 120 130
11 | 88 99 110 121 132 143
12 | 96 108 120 132 144 156
13 | 104 117 130 143 156 169
Riešenie
System.out.print("|"); for(int i=ood;i<=doo;i++){ System.out.print(i+" "); } System.out.println("\n=====|==============================="); for(int k=ood;k<=doo;k++){ for(int i=ood;i<=doo;i++){ if(i==ood){ System.out.print(k+" | "+k*i+" "); }else { System.out.print(k * i + " "); } } System.out.println(); }
12 ) Napíš program, ktorý vygeneruje na číselnej osi dva príslušné body (v intervale ) a vypočíta ich vzdialenosť. Toto urobí -krát. Môžete dostať takýto výstup:<0, 100>
n
zadaj n: 5
Prvý bod na priamke je 32, druhý bod 10.
Ich vzdialenosť je 22
Prvý bod na priamke je 61, druhý bod 12.
Ich vzdialenosť je 49
Prvý bod na priamke je 62, druhý bod 35.
Ich vzdialenosť je 27
Prvý bod na priamke je 9, druhý bod 78.
Ich vzdialenosť je 69
Prvý bod na priamke je 5, druhý bod 82. Ich vzdialenosť je 77
Pomôcka knižnica Náhodne:
import java.util.Random;
Random rand = new Random();
<0, 100>
n
Prvý bod na priamke je 61, druhý bod 12.
Prvý bod na priamke je 62, druhý bod 35.
Prvý bod na priamke je 9, druhý bod 78.
Prvý bod na priamke je 5, druhý bod 82. Ich vzdialenosť je 77
Riešenie
public static void dvanastaUloha() {
System.out.print("Zadaj n: ");
Integer n= sc.nextInt();
for(int i=0;i<n;i++){
int prvyBod=rand.nextInt(100);
int druhyBod=rand.nextInt(100);
System.out.println("Prvý bod na priamke je " +prvyBod+ ", druhý bod " +druhyBod+ ".Ich vzdialenosť je " +(prvyBod-druhyBod));
}
}
13) Vo vlaku sa vezie 100
cestujúcich. V každej stanici, v ktorej zastane, niekoľko ľudí vystúpi a niekoľko nastúpi. Napíš program, ktorý odsimuluje n
s vystupovaním a nastupovaním takých cestujúcich. Predpokladáme, že v každej stanici vystúpi aj náhodný počet cestujúcich z intervalu . <0, 9>
Môžete získať takýto výstup: zadajte n: 8
Vo vlaku bolo 100 ľudí, 0 nastúpil, 7 vystúpil. Zostalo 93.
Vo vlaku bolo 93 ľudí, 4 nastúpil, 0 vystúpil. Zostalo 97.
Vo vlaku bolo 97 ľudí, 9 nastúpilo, 5 vystúpilo. Zostalo 101.
Vo vlaku bolo 101 ľudí, 3 nastúpil, 9 vystúpil. Zostalo 95.
Vo vlaku bolo 95 ľudí, 6 nastúpil, 8 vystúpil. Zostalo 93.
Vo vlaku bolo 93 ľudí, 3 nastúpil, 4 vystúpil. Zostalo 92.
Vo vlaku bolo 92 ľudí, 8 nastúpil, 6 vystúpil. Zostalo 94. Vo vlaku bolo 94 ľudí, 8 nastúpil, 7 vystúpil. Zostalo 95.
14) Dostali sme správu od mimozemšťanov, ktorá je zložená zo znakov 'O'
a '-'
. Správa obsahuje istý počet riadkov a stĺpcov znakov. Program Napíš, ktorým náhodne vygeneruje podobnú správu. Môžete dostať takýto výstup:
zadaj počet riadkov: 5
zadajte počet stĺpcov: 28
O-OOO----OO-OOO---O---OOOO-O
OOO-OOOO----OO----O-OOOOOO-O-
O-OO-OO-OOO--O-OOO--O----OOO
---OO--OO-OO--OO----OOOO--O
-O-----O--OOOO-OO-OOOO-OO---O
'O'
a '-'
. Správa obsahuje istý počet riadkov a stĺpcov znakov. Program Napíš, ktorým náhodne vygeneruje podobnú správu. Môžete dostať takýto výstup:Riešenie
public static void stvrnastaUloha() {
System.out.print("Zadaj počet riadkov: ");
Integer pocetRiadkov = sc.nextInt();
System.out.print("Zadaj počet stĺpcov: ");
Integer pocetStlpcov = sc.nextInt();
for(int i=1;i<= pocetRiadkov;i++) {
for(int k=1;k<=pocetStlpcov;k++){
int randNumb = rand.nextInt(2);
if(randNumb==1){
System.out.print("O");
}else {
System.out.print("-");
}
}
System.out.println();
}
}
15) Simulácia hodu dvoch kociek. Po každom vypíšte ich súčet. Napíš program, ktorý to simuluje n
-krát. Môžete získať takýto výstup: zadajte n: 3
na 1. kocke spadla 1
na 2. kocke spadla 4
ich súčet je 5====================na 1. kocke spadla 4na 2. kocke spadla 5ich súčet je 9====================na 1. kocke spadla 4
na 2. kocke spadla 1ich súčet je 5
Riešenie
public static void patnastaUloha() {
System.out.print("Zadaj n: ");
Integer n = sc.nextInt();
Integer sucet = 0;
for(int k=1;k<=n;k++) {
for (int i = 1; i <= 2; i++) {
int ak = rand.nextInt(6) + 1;
sucet = sucet + ak;
System.out.println("na " + i + ". kocke padla " + ak);
}
System.out.println("ich súčet je "+ sucet);
sucet=0;
if(n>0 && k!=n){
System.out.println("======================");
}
}
}
16) Podobný príklad predchádzajúcemu, lenže teraz budeme hádzať spoločným počtom kociek: Napíš program, ktorý si najprv vypýta n
(počet hádzaní) a počet kociek a potom n
, krát vypíše čísla na kočkách a ich súčet. Môžete dostať takýto výstup:
zadaj n: 2
zadaj počet kociek: 4
na 1. kocke spadla 3na 2. kocke spadla 2na 3. kocke spadla 2na 4. kocke spadla 2ich súčet je 9==========================na 1. kocke spadla 4na 2. kocke spadla 6na 3. kocke spadla 1na 4. kocke spadla 5ich súčet je 16
17) Napíšte program na určenie
počtu kladných, nulových
a záporných čísel
v jednorozmernom poli.
Riešenie
public static void sedemnastaUloha(int[] arr) {
int zaporne=0;
int kladne=0;
int nulove=0;
for(int i=0;i<arr.length;i++){
if(arr[i]<0){
zaporne=zaporne+1;
}else if(arr[i]==0){
nulove=nulove+1;
}else {
kladne=kladne+1;
}
}
System.out.println("Záporné: "+zaporne+", Kladné: "+" "+kladne+", Nulové: "+nulove);
}
java2
By Mgr. Ondrej Ducky
java2
Riešenia jednoduchých úloh na cyklus v programovacom jazyku Java. Úlohy sú zo stránky https://python.input.sk/ Mgr. Ondrej Dúcky
- 664