PETLJE - PRIMERI(C,C++,JAVA)
Na ovoj stranici ćete pronaći osnovne primere iz petlji. Često, programiranje zahteva da se jedna ili više komandi ponavljaju više puta. Zamislimo sada da bi trebalo da odštampamo određene naloge 100, 1000 ili 10000 puta. Bio bi to težak, gotovo nemoguć posao. Posao bi bio olakšan kada bi ove komande, koje želimo da ponovimo, napisane samo jednom, a ponovljene drugom komandom. Pre nego što nastavite sa rešavanjem primera, pročitajte lekciju o petljama u programskom jeziku C++ na veb straniPetlje u programskom jeziku C/C++ili, ako radite u programskom jeziku JAVA
Petlje u Javi
1. Klub za koga navijate
Koristeći for ciklus ispisati 10 puta naziv kluba za koga navijate.2. Ispisivanje niza brojeva
Ispisati sve parne brojeve na intervalu od -55 do 55.3. Ispisivanje brojeva po redovima i kolonama
Ispisati prvih 100 prirodnih neparnih brojeva u 10 reda i 10 kolonaStaviti početnu vrednost kontrolne promenljive i na 1, kao prvi neparan broj traženog intervala brojeva, a za promenu kontrolne promenljive, staviti da se menja za 2. Tj. treći izraz u for petlji treba biti i=i+2
Posle ispisivanja broja, koristeći if naredbu, staviti nov red, ako je tekući broj deljiv sa 10
{
if(ciklus % 10 == 0)
printf("\n");
}
4. Celzijusi u farenhajte
Napraviti program koji za učitane vrednosti početne c1 i krajnje c2 temperature u stepenima Celzijusa, pretvara sve vrednosti temperatura na tom intervalu, iz Celzijusa u Farenhajte.Primer 1
Ulaz
10
15
Izlaz
10[C] 50[F]
11[C] 51.8[F]
12[C] 53.6[F]
13[C] 55.4[F]
14[C] 57.2[F]
15[C] 59[F]
Učitati prvo temperature c1 i c2 pomoću cin komande(C++) ili scanf, a zatim kreirati for ciklus.
Staviti da se kontrolna promenljiva c, menja od c1 do c2 i ona zapravo predstavlja temperaturu u celzijusima.
U telu for ciklusa prvo izračunati tekuću vrednost u Farenhajtima pomoću formule:
T[oF]=T[oc]*9/5+32
Drugo, ispisati ove dve vrednosti u istom redu
using namespacestd;
int main()
{
cin >> c1 >> c2;
/*Kontrolna promenljiva c(temperatura u celzijusima)
* se menja od početne c1 do krajnje c2 sa korakom 1
*/
for(double c=c1; c <= c2; c=c+1)
{
f=c*9.0/5.0+32;
cout << c << "[C] " << f << "[F]"<<endl;
5. Sabrati parne brojeve
Sabrati sve parne brojeve između 10 do 50.6. Prosek ocena
Učitati broj predmeta n, a zatim učitati ocene iz n predmeta i izračunati prosečnu ocenu7. Uklanjanje nula sa desne strane
Učitati ceo broj, a zatim mu ukloniti nule sa desne strane. Npr. ako je unesen broj 12000 na izlazu treba da bude broj 12.8. Deljenje broja sa istim deliocem
Uneti ceo broj N i delilac d. Skraćivati broj N sa deliocem d dok je to moguće. Ispisati na izlazu ostatak kao i broj ciklusa. Npr. Ulaz: N=36,d=3; Izlaz: 4 2; Objašnjenje: 1. ciklus: 36/3=12, 2. ciklus: 12/3=4, ostatak je 4 a broj ciklusa 29. Trening
Sportista je počeo sa treniranjem i tokom prvog dana pretrči X kilometara. Odrediti koliko će pretrčati svakog dana u toku n dana priprema, ako se zna da svakog sledećeg dana pretrči za 10% više od prethodnog. Odrediti koliko je sportista ukupno pretrčao kilometara tokom priprema.10. Troškovnik
Napraviti dnevni troškovnik. Program treba da prvo učita vrednost plate ili džeparca za tekući mesec, a onda se učitava za svaki dan, dnevnik trošak. Ispisati koliko je novca preostalo tog dana. Kada vrednost preostalog novca bude manja od 10, prekinuti učitavanje dnevnih troškova. Na kraju ispisati koliko je novca ostalo, ako je ostatak pozitivan ili napisati koliko ste više potrošili, ako je ostatak negativan.11. Simulacija slobodnog pada
Napraviti program koji simulira slobodan pad tela sa visine H0. Uneti početnu visinu tela i kreirati petlju u kojoj se menja vreme za 0.05 sekundi u svakom ciklusu. Ispisati sve trenutne položaje i brzine tela u tim vremenskim trenucima u toku padanja. Odrediti brzinu tela pri padu na zemlju računski i uporediti je sa vrednošću dobijenu simulacijom.12. Kamata
Učitava se početna količina novca, procenat godišnje kamate koja se pripisuje na tu sumu, i broj godina n. Izračunati kolika će biti suma novca posle 1, 2,... ,n godina. Svake godine kamata se pripisuje na sumu koja je dobijena na kraju prethodne godine.Ulaz
Početna količina novca, iznos godišnje kamate u procentima, i broj godina za koje treba ispisati sumu novca sa kamatom.
Izlaz
U i-tom redu ispisati sumu novca posle i godina.
13. Susret dva automobila
Dva automobila krenu u istom trenutku, jedan iz mesta A ka mestu B, a drugi iz mesta B ka mestu A, ravnomerno pravolinijski.Simulirati ovo kretanje za unete brzine automobila, tako da se na svakih 0.05s kretanja istpiše trenutno vreme, pređeni putevi oba automobila, kao i trenutno rastojanje između njih. Rasojanje između mesta A i B unosi korisnik.
Odrediti vreme susreta.
14. Skijaški skokovi-prosek
Na takmičenju u skijaškim skokovima pored udaljenosti koju skakač preskoči ocenjuje se i stil skakača. Pet sudija ocenjuju stil skakača ocenama od 0 do 20. Zatim se od svih dobijenih ocena izbrišu jedna najmanja i jedna najveća. Konačna ocena stila skakača računa se kao prosek preostalih ocena. Napiši program kojim se na osnovu ocena 5 sudija određuje konačna ocena stila skakača.15. Berza
Trgovac na berzi je tokom jedne radne nedelje svaki dan ili ostvarivao zaradu ili je gubio novac. Od svih dana u kojima je nešto zaradio, odrediti dan u kome je najmanje zaradio i vrednost koju je tog dana zaradio (ako je više takvih dana, prijaviti prvi) ili prijaviti da je svih dana gubio novac.Ulaz
Sa standardnog ulaza unosi se 5 celih brojeva iz intervala [−10000,10000][−10000,10000] (iznosi koje je trgovac ostvario u ponedeljak, utorak, sredu, četvrtak i petak), svaki u posebnom redu.
Izlaz
Ako je trgovac u nekom danu ostvario zaradu (iznos je strogo veći od nule), na standardni izlaz u prvom redu ispisati najmanji iznos zarade koji je ostvaren tokom nedelje i u drugom redu oznaku dana (PON, UTO, SRE, CET ili PET) u kome je ostvaren taj najmanji profit. Ako nijedan dan nije ostvarena zarada, ispisati red koji sadrži samo karakter -.
Primer 1
Ulaz
3200
-420
-10
1350
5670
Izlaz
1350
CET
Primer 2
Ulaz
-4700
-360
-1000
-1550
-3245
Izlaz-
16. Odbrojavanje
Zadatak sa petlja.org/biblioteka/r/Zbirka/brojevi_obrnuti_redosled
Napisati program koji odbrojava unazad od datog broja do nule.
17. Najave emisije
Zadatak sa web portala petlja.org:petlja.org/biblioteka/r/problemi/Zbirka/najave_emisije_u_pravilnim_intervalima
Poznat je početak i kraj jednog filma (vremena u satima i minutima). U pravilnim vremenskim intervalima, prvo na početku filma i zatim nakon svakih mm minuta u uglu ekrana se prikazuje najava sledeće emisije. Napiši program koji ispisuje vremena u kojima se prikazuje ta najava.
Ulaz
Na standardnom ulazu nalazi se vreme početka filma dato u obliku dva cela broja, svakog u zasebnoj liniji koji predstavljaju broj sati i broj minuta, zatim, u sledeđoj liniji vreme završetka filma dato u istom obliku i na kraju jedan ceo broj koji predstavlja interval u minutima u kojem se prikazuje najava.
Izlaz
Na standarnom izlazu prikazati, vremena emitovanja najave u obliku h:m, svako u zasebnom redu.
Primer
Ulaz
12
0
13
53
15
Izlaz
12:0
12:15
12:30
12:45
13:0
13:15
13:30
3:45
18. Čitanje do kraja ulaza
Zadatak sa sajta petlja.org/biblioteka/r/problemi/Zbirka/citanje_do_kraja_ulazaSa ulaza se unose celi brojevi sve dok se ne dođe do kraja ulaza. Napisati program kojim se prikazuje koliko je uneto brojeva.
Ulaz
Svaka linija standardnog ulaza sadrži po jedan ceo broj. NAPOMENA: prilikom interaktivnog testiranja programa, kraj standardnog ulaza se označava kombinacijom tastera ctrl + z ako se koristi operativni sistem Windows tj. ctrl + d ako se koristi operativni sistem Linux.
Izlaz
U prvoj liniji standardnog izlaza prikazati koliko je brojeva uneto.
Primer
Ulaz
20
145
-23
12
456
13
Izlaz
6
19. Čitanje ocena do kraja ulaza i računanje proseka
Sa ulaza se unose ocene iz nekog predmeta sve dok se ne dođe do kraja ulaza. Napisati program kojim se prikazuje prosečna ocena.Ulaz
Svaka linija standardnog ulaza sadrži po jedan ceo bro koji predstavlja ocenuj.
Izlaz
U prvoj liniji standardnog izlaza prikazati prosečnu ocenu.
Primer
Ulaz
5
2
4
4
2
6
Izlaz
3.83
20. Magacin sokova
U magacin se na n polica slažu gajbice sa sokovima. U svaku gajbicu može da stane k flaša sokova. Odrediti najmanji ukupan broj gajbica potreban da se spakuju sve flaše iz magacina, ako je poznat broj flaša sokova na svakoj polici, pri čemu se u svaku gajbicu mogu pakovati isključivo flaše sa jedne police.Ulaz
U prvoj liniji standardnog ulaza nalazi se prirodan broj n (1≤n≤100) koji predstavlja broj polica u magacinu. U drugoj je prirodan broj k (5≤k≤30) koji predstavlja kapacitet gajbice. U svakoj od narednih nn linija nalazi se prirodan broj, iz intervala [5,500], koji predstavlja broj flaša na svakoj polici.
Izlaz
U jednoj liniji standardnog izlaza ispisuje se najmanji broj upotrebljenih gajbica.
Primer
Ulaz
3
8
31
25
16
Izlaz
10
21. Najjeftiniji za dinar
U jednoj prodavnici je u toku akcija u kojoj se kupcima koji kupe tri proizvoda nudi da najjeftiniji od ta tri proizvoda dobiju za jedan dinar. Napiši program koji određuje sniženu cenu tri proizvoda.Ulaz
Sa standardnog ulaza unose se tri cela broja iz intervala od 50 do 5000 koji predstavljaju cene u dinarima za tri kupljena proizvoda.
Izlaz
Na standardni izlaz ispisati jedan ceo broj koji predstavlja ukupnu sniženu cenu ta tri proizvoda.
Primer
Ulaz
2499
3599
899
Izlaz
6099
22. Najave emisije u pravilnim vremenskim intervalima
Poznat je početak i kraj jednog filma (vremena u satima i minutima). U pravilnim vremenskim intervalima, prvo na početku filma i zatim nakon svakih mm minuta u uglu ekrana se prikazuje najava sledeće emisije. Napiši program koji ispisuje vremena u kojima se prikazuje ta najava.Ulaz
Na standardnom ulazu nalazi se vreme početka filma dato u obliku dva cela broja, svakog u zasebnoj liniji koji predstavljaju broj sati i broj minuta, zatim, u sledeđoj liniji vreme završetka filma dato u istom obliku i na kraju jedan ceo broj koji predstavlja interval u minutima u kojem se prikazuje najava.
Izlaz
Na standarnom izlazu prikazati, vremena emitovanja najave u obliku h:m, svako u zasebnom redu.
Primer
Ulaz
12
0
13
53
15
Izlaz
12:0
12:15
12:30
12:45
13:0
13:15
13:30
13:45
23. Čitanje do minus 1 ili do n-tog
Zadatak sa sajta petlja.org/biblioteka/r/problemi/Zbirka/citanje_do_minus_1_ili_do_ntogPera se tokom časa igrao i seckao kvadrate od papira. Učiteljica je to primetila i dala mu je zadatak da izračuna ukupnu površinu svih kvadratića. Napiši program koji Peri pomaže da to uradi. Pera, na samom početku unosi broj "n" za koji je siguran da je veći ili jednak broju kvadratića. Nakon toga, unosi najviše n brojeva koji predstavljaju dužine stranica kvadratića, pri čemu, ako primeti da kvadratića ima manje od broja n, on unosi −1, čime označava da je potrebno prekinuti unos.Ulaz
Sa standardnog ulaza se učitava broj n (0≤n≤15), a zatim 1≤m≤n celih brojeva između 11 i 1010, pri čemu, ako je m<n, onda se nakon njih unosi −1.
Izlaz
Na standardni izlaz ispisati jedan ceo broj koji predstavlja ukupnu površinu svih kvadrata.
Primer 1
Ulaz
5
1
2
3
4
5
Izlaz
55
Primer 2
Ulaz
5
1
2
3
-1
Izlaz
14
24. Štednja u banci
Odredi za koliko godina udeo u banci od U dinara sa godišnjom kamatnom stopom P% raste na R dinara25. Mesečna zarada
Napravite mini račun po mesecima. Učitajte mesečnu zaradu. Za svaki dan zapišite koliko ste novca potrošili (jedan ciklus). Pročitajte prekid kada od ukupne plate ostane manje od 10 dinara. Ako ste uneli minus, odštampajte poruku o tome. Odštampajte broj dana u kojima ste potrošili novac.26. Pucanje u metu
Data je meta N koncentričnih krugova prečnika r = 1,2, ..., 10 i tačka A (x,y) u meti. Za pogodak u krug najmanjeg prečnika dobija se 10 poena, a za svaki sledeći prsten jedan manje. Napišite program koji određuje koliko bodova će biti postignuto za pogodak , ako se unose koordinate tačke A u odnosu na centar mete.27. Koncentracija soli
U posudi se nalazi p% rastvor soli u više litara vode. Iz posude se sipa litar smeše i dodaje litar čiste vode, nakon čega se rastvor meša. Ako je N broj „izlivanja“ i „punjenje“, napišite program koji štampa tabelu koncentracije soli u sudu posle svakog „izlivanja“ i „punjenja“.28. Varijacije bez ponavljanja
Unesite broj elemenata n i broj k elemenata koji variraju. Zatim odredite koliko varijacija postoji bez ponavljanja.29. Tablica množenja
Napravite program koji štampa tablicu množenja na ekranu:1 * 1 = 1
1 * 2 = 2
...
9 * 8 = 72
9 * 9 = 81
30. Najmanji zajednički sadržalac
Napravite program koji određuje najmanji zajednički sadržalac dva uneta cela broja.31. Sabiranje u različitim brojnim sistemima
Tekst zadatka: Za 2 broja X i Y, zadata u sistemu sa osnovom Q(1<Q<=10), odrediti njihov zbir.Rešenje:
Ako je Q!=10 onda je reč o nekom drugom brojnom sistemu, a ne o dekadnom.Ako je Q=2 onda je reč o BINARNOM brojnom sistemu.
Klikni na dugme ispod ili na sliku za kompletno rešenje.
32. Poslednje cifre faktorijela
Napisati program kojim se određuje broj završnih nula u N!(faktorijel).U prvom delu zadatka treba učitati N, a zatim kroz petlju odrediti N!.
N! = N*(N-1)*(N-2)*...*1
Formirati proizvod T,tako što se pre ciklusa zada da bude jednaka N, a zatim se u svakom narednom pomnoži sa umanjenom vrednošću T za 1
U drugom delu zadatka, polazni broj je prethodno izračunata vrednost faktorijela F
Ova vrednost se kroz while ciklus deli sa 10 sve dok je broj F deljiv sa 10
Broj ostvarenih ciklusa je zapravo broj završnih nula
33. Pogodi slučajan broj
Napisati program kojim računar zamisli slučajan ceo broj na intervalu [a,b] i od korisnika traži da ga pogodi, pomažući mu porukom, iz koje se vidi da li je uneti broj veći ili manji od zamišljenog.Broj pogađanja ograničiti sa ceil(log(b-a+1)/log(2)).
U slučaju da nije u stanju da u datom broju pogađanja dođe do traženog broja, prekida se pogađanje i izdaje poruka: "Loše pogađate"
Računar "zamisli" broj tako što se programski slučajan broj generiše upotrebom rand() funkcije iz zaglavlja stdlib.h.
Zatim se izračunava maksimalni broj pokušaja
p=ceil(log(b-a+1)/log(2))
Kroz while petlju se ponavlja pogađanje, najviše p puta.
Kada korisnik unese broj, proverava se da li je broj jednak, manji ili veći od zamišljenog.
Ako je jednak, prekida se ciklus.
Za uslov petlje se koristi logička promenljiva "pogodak", koja je pre ciklusa postavljena na vrednost 0(FALSE), a kad korisnik unese broj koji je jednak zamišljenom, vrednost te promenljive se promeni na 1(true).
34. Suma faktorijela cifara
Napisati program kojim se štampaju svi trocifreni brojevi (ako ih ima)koji su jednaki sumi faktorijela svojih cifara.Kroz for petlju, koja treba da menja kontrolnu promenljivu od 100-999 i koja ujedno predstavlja tekući trocifreni broj, treba izvući cifre, a zatim:
- Za svaku cifru je potrebno odrediti njen faktorijel(vidi zadatak 32)
- Odrediti sumu faktorijela tih cifara
- Proveriti da li je ta suma jednaka sa brojem i ako jeste, odštampati ga.
{
if(ciklus % 10 == 0)
printf("\n");
}
| Prethodno |< Grananje u programu - primeri |
Sledeće Ugnježdene petlje primeri>| |
