Neka dobra free stranica, elektronska knjiga, PDF.... u vezi programskih petlji i njihove primjene u C++??? hITNO mi treba mi za seminarski!
HVALA!
Neka dobra free stranica, elektronska knjiga, PDF.... u vezi programskih petlji i njihove primjene u C++??? hITNO mi treba mi za seminarski!
HVALA!
Da počneš sa wikipedije pa vidiš gdje te to dovede?
http://en.wikipedia.org/wiki/Loop_%28computing%29#Loops
A možeš baciti oko i u temu s programskom literaturom, tamo bi svašta mogao naći.
Evo, gledam maalo i na bugu C++...
Nije baš da neznam ništa o ovome. Znam i solidno, ali sam htio nači knigu na našem jeziku, koja je vezana konkretno za naslov: Programske petlje i njihova implementacija u programskom jeziku C++. To mi je tema za seminarski, a htio sam pronaći knjigu koja ima baš dosta detalja o petljama, da detaljno obrađuje ovo gradivo... ?
programiranje i ne-ENG jezik? Čitaj origigi i uči umjesto da razmišljaš što je čigrasto velepamtilo.. na kraju bi opet učio engleski (sintaksa-kod).
Petlje, osnova rada computera. Od primitivne For-next, do-loop s testiranjem uvijeta za izvršavanje x-puta ili prekidom. U svim jezicima je petlja jednaka, jednaka primjena. Petlja je samo brojač, operacije unutar petlje su sadržaj-operacije.
Kad je u pitanju C++ treba dotaknuti rekurzije, također petlje, i odmah pobjeći od njih da se ne spetljaš.
Mislim ako sam ne mozes slozit nekoliko stranica o toj temi, ili ako vec nisi upucen u petlje i ne mozes sam pronaci to, daba tebi svaki fakultet i svaka diploma...
Mislim ako sam ne mozes slozit nekoliko stranica o toj temi, ili ako vec nisi upucen u petlje i ne mozes sam pronaci to, daba tebi svaki fakultet i svaka diploma...
:) Nisu ni petlje kraj svijeta i nesto sto ne moze da se nauci... Ucio sam ja mnogo tezih stvari i naucio... pa tako cu valjda i ovo sa petljama... Zato sam i dosao ptati.
Ima li neko konkretan primjer DO WHILE petlje. Znam da DO WHILE na kraju petlje provjerava uslov, znaci izvrsi se bar jedna iteracija, za razliku od WHILE koja odmah na pocetju provjeri... Ali, ima li neko neki konkretan primjer koja je tu svrha. Sta mogu uraditi sa DO WHILE sto nemogu sa WHILE.... Evo satima Googlam i nemogu da pronadjem odgovor.... a treba mi to.
Hvala!
#include<stdio.h>
int main()
{
int n;
do
{
scanf("%d", &n);
}
while(n!=0);
system("PAUSE");
return 0;
}
Unosit će n, dok ne uneseš 0, kada uneseš nula program se gasi.
BTW, ovo je C, ispričavam se nisam vidio da se traži C++, ugl. razlika je samo u unosu, u C-u je funkcija scanf, dok u C++ ide objekt cin. Znači samo onu liniju u do bloku zamjeni sa "cin>>n;".
Hvala na odgovoru. Evo je u C++:
DO WHILE:
#include <iostream>
using namespace std;
int main()
{
int n;
do
{
cin >> n;
}
while(n!=0);
system("PAUSE");
return 0;
}
Ali zar ovaj WHILE ne radi isti posao?
#include <iostream>
using namespace std;
int main()
{
int n;
cin >> n;
while(n!=0)
{
cin >> n;
}
system("PAUSE");
return 0;
}
Pa čemu onda DO WHILE? Ima li neki konkretan primjer gdje se mora koristiti samo DO WHILE, jer WHILE ne može pomoći?
HVALA!
Kako ne razumiješ? U while petlji se može desiti da se petlja niti jedanput ne izvrši, a u do while, ovisno o uvjetu "tjeraš" da se kod u petlji barem jedanput izvrši. Uostalom, to i najbolje vidiš na primjeru kojeg si sam dao.
for petlja - kada se zna koliki je broj ponavljanja. npr;
for(i = 1; i <= 10; i++)
/// nešto...
... nešto će se ponoviti točno 10 puta.
while petlja - kada se ne zna koliki je broj ponavljanja. npr;
while(ocjena == 1)
uci();
... koliko dugo će dotični učiti dok ne ispravi jedinicu je nepoznato.
do-while petlja - kada se nešto treba dogoditi barem 1 put. npr;
do{
cout << "Unesi lozinku: ";
cin >> lozinka;
} while(lozinka != 123);... lozinka se mora unijeti barem 1 put, ali ukoliko je pogrešna unos se ponavlja sve dok se ne unese ispravna lozinka.
Hvala svima na trudu. Naucio sam dosta u ovih par dana... Skonto sam sta radi for petlja.For petlja ima tri izraza i u ovom primjeru sto je TracerCPP naveo... varijabla i ima vrijednost jedan, sve dok je i manje ili jednako deset uvečavaj za jedan (inkrement)... bla,bla... to znam...WHILE petlja u primjeru TracerCPP što je naveo dok je zadovoljen uslov sa poredbenim operatorom, dok je ocjena 1 ili jednaka broju jedan ponavljače se naredba, ili blo naredbi između vitičastih zagrada... Treči primjer DO WHILE petlje koju je TracerCPP naveo isto kontam .... Unosi stalno lozinku dok ne upises tacnu lozinku 123... i onda ce na ekran program ispisati ponovo "Unesi lozinku" pa ce nastaviti da se dalje izvrsava....
Evo kako u WHILE petlji to radi:
#include <iostream>
#include <string>
using namespace std;
void main()
{
string lozinka;
cin >> lozinka;
while (lozinka != "123")
{
cout << "NE VALJA LOZINKA! POKUSAJ PONOVO!" << endl;
cin >> lozinka;
}
cout << "POGODIO :)" << endl;
system("Pause");
}
Pokusao sam ovo uraditi sa DO WHILE petljom, ali ne radi kako treba, jer kada korisnik pogodi pravu lozinku, opet se odradi jedna iteracija kroz petlju i program ispise i poruku koja je unutar petlje, a i ovu iza petlje...
Još mi niko nije dao konkretan primjer DO WHILE petlje. Šta mogu uraditi KONKRETNO sa DO WHILE petljom što nemogu sa WHILE petljom. Konkretan primjer... !? Kažem da znam razliku i kako funkcionišu ove dvije petlje i da znam da se kroz DO WHILE izvrši jedna iteracija pa se uslov provjeri na kraju...... Čitav dan danas pokušavam da nađem odgovor, ali mi ne ide....
Hvala svima na trudu. Naucio sam dosta u ovih par dana... Skonto sam sta radi for petlja.For petlja ima tri izraza i u ovom primjeru sto je TracerCPP naveo... varijabla i ima vrijednost jedan, sve dok je i manje ili jednako deset uvečavaj za jedan (inkrement)... bla,bla... to znam...WHILE petlja u primjeru TracerCPP što je naveo dok je zadovoljen uslov sa poredbenim operatorom, dok je ocjena 1 ili jednaka broju jedan ponavljače se naredba, ili blo naredbi između vitičastih zagrada... Treči primjer DO WHILE petlje koju je TracerCPP naveo isto kontam .... Unosi stalno lozinku dok ne upises tacnu lozinku 123... i onda ce na ekran program ispisati ponovo "Unesi lozinku" pa ce nastaviti da se dalje izvrsava....
Evo kako u WHILE petlji to radi:
#include <iostream>
#include <string>
using namespace std;
void main()
{
string lozinka;
cin >> lozinka;
while (lozinka != "123")
{
cout << "NE VALJA LOZINKA! POKUSAJ PONOVO!" << endl;
cin >> lozinka;
}
cout << "POGODIO :)" << endl;
system("Pause");
}
Pokusao sam ovo uraditi sa DO WHILE petljom, ali ne radi kako treba, jer kada korisnik pogodi pravu lozinku, opet se odradi jedna iteracija kroz petlju i program ispise i poruku koja je unutar petlje, a i ovu iza petlje...
Još mi niko nije dao konkretan primjer DO WHILE petlje. Šta mogu uraditi KONKRETNO sa DO WHILE petljom što nemogu sa WHILE petljom. Konkretan primjer... !? Kažem da znam razliku i kako funkcionišu ove dvije petlje i da znam da se kroz DO WHILE izvrši jedna iteracija pa se uslov provjeri na kraju...... Čitav dan danas pokušavam da nađem odgovor, ali mi ne ide....
-taj kod radi samo zato jer DVA PUTA unosiš lozinku, prije petlje... Pokušaj bez tog, dalje ti je jasno.
@dachoxl
Pa upravo gore sam ti dao rješenje kako bi to išlo s do-while. I nema toga što se s jednom petljom može a drugom ne može. Npr.
for(i = 1; i <= 10; i++)
// nešto
se može napisati preko while kao
i = 1;
while(i <= 10){
// nešto
i++;
}
itd itd. Samo je pitanje koliko tko želi komplicirati. Zato i postoje 3 vrste petlji da se lakše riješe ovakve situacije.
Ne razmišljaš, odvrti u glavi program korak po korak pa ćeš točno shvatiti i zašto se to događa. Ovako bi to trebalo izgledati da ti poruka o pogrešnoj lozinci ne iskače i kada je ona točna:
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
int main()
{
string lozinka;
do
{
cin >> lozinka;
if (lozinka != "123")
cout << "NE VALJA LOZINKA! POKUSAJ PONOVO!" << endl;
}
while (lozinka != "123");
cout << "POGODIO :)" << endl;
system("pause");
return 0;
}
Pa dobio si konkretan odgovor. Što, nije dovoljno dobar? Sve su to petlje i uz malo kreativnosti možeš natjerati bilo koju od te tri petlje da se ponaša kao neka druga vrsta petlje.
Momci hvala na trudu. Ne ljutim se ja na Vas... Nego sam na sebe, sto se smaram citav dan, a nece u glavu nikako.... Al evo sada cu procitati, sta ste mi odgovorili, samo da nalijepim ovo sto sam napravio sa DO WHILE... sada ovo logovanje da radi...
Ovako radi, ali upisete prvo "cin" pa "cout" neče raditi kako valja... Ovako ispod dole radi...
#include<iostream>
#include<string>
using namespace std;
void main()
{
string lozinka;
do
{
cout << "Upisi ispravnu lozinku!" << endl;
cin >> lozinka;
}while (lozinka != "123");
cout << "Uspjesno ste ulogovali. Vasa lozinka je " << lozinka << endl;
system("Pause");
}
Ma pišem neki seminarski pa treba da "pametujem" o nekom gradivu kog tek učim, a hoču da to bude O.K. i tako... Došao sam do mjesta u kom poredim DO WHILE I WHILE petlju... i hoču da napišem u kom slučaju mogu da iskoristim DO WHILE petlju, a da WHILE to nemože raditi. Nadam se da sam sada uspio objasniti... uff... ma preskočiču taj dio... ebi ga!
A Vama hvala do Neba za sav trud.... Najbolji ste... Stvarno....
Pozdrav! Može li mi tko riješiti ovaj zadatak na najjednostavniji mogući način? U c++ naravno. Bio bih jako zahvalan jer mi ovo stvarno neide.
Unosi se n prirodan broj, program treba ispisati produkt znamenaka od n. (npr. n=245, program treba ispisati 40 (jer je 2*4*5=40))
Broj rastavi na stotice, desetice i jedinice i onda ih izmnoži. Sve sam ti rekao, sada samo to iskodiraj, ako ne znaš ispiši se iz škole ili se zadovolji kecom.
Na vrh ste mi k*urca vi što hoćete gotove kôdove, šta me boli ki*ta što ti ne ide, ne ide ni meni sport pa se iz TIZ-a zadovoljim dvojkom...
Možda se nađe netko ko ima volju i želju pomoći, a ti se ne javljaj ako nemaš ništa pametno za reći! Nije ti trebala ova druga rečenica..
Možda se nađe netko ko ima volju i želju pomoći, a ti se ne javljaj ako nemaš ništa pametno za reći! Nije ti trebala ova druga rečenica..
Neće ti niko pomoći, ovdje mrzimo takve što traže samo kôdove.
A da ti nisam pomogao, jesam. Pa objasnio sam ti kako ćeš doći do toga, znaš li kako dobiti stotice, pa podjeliš sa 100, desetice, broj podjeliš sa 10 i oduzmeš stotice izmnožene sa 10, a kod jedinica broju oduzmeš zbroj stotica pomnoženih sa 100 i desetica izmnoženih sa 10. Pa sve sam ti rekao...
stotice = broj/100;
desetice = broj/10 - stotice*10;
jedinice = broj - (stotice * 100 + desetice * 10);
Nisam vidio da nije ograničeno sa tri cifre, mislio sam da je broj trocifren.
Pa sve sam ti rješio, ako dalje ne znaš xxx.
Hvala lijepo na pomoći. Neke osnovne stvari ipak znam. A za vrijeđanjem nema potrebe, nisam ništa loše mislio.
Broj rastavi na stotice, desetice i jedinice i onda ih izmnoži. Sve sam ti rekao, sada samo to iskodiraj, ako ne znaš ispiši se iz škole ili se zadovolji kecom.
Na vrh ste mi k*urca vi što hoćete gotove kôdove, šta me boli ki*ta što ti ne ide, ne ide ni meni sport pa se iz TIZ-a zadovoljim dvojkom...
Možda se nađe netko ko ima volju i želju pomoći, a ti se ne javljaj ako nemaš ništa pametno za reći! Nije ti trebala ova druga rečenica..
Neće ti niko pomoći, ovdje mrzimo takve što traže samo kôdove.
A da ti nisam pomogao, jesam. Pa objasnio sam ti kako ćeš doći do toga, znaš li kako dobiti stotice, pa podjeliš sa 100, desetice, broj podjeliš sa 10 i oduzmeš stotice izmnožene sa 10, a kod jedinica broju oduzmeš zbroj stotica pomnoženih sa 100 i desetica izmnoženih sa 10. Pa sve sam ti rekao...
stotice = broj/100;
desetice = broj/10 - stotice*10;
jedinice = broj - (stotice * 100 + desetice * 10);
Pa sve sam ti rješio, ako dalje ne znaš ubij se!
Šta si ti umišljaš?
Kad si već tako pametan, mogao si bar i zadatak rješit točno...
A kao nije tačan?
Mrzim više ove što hoće gotove kôdove i onda dobiju dobru ocjenu, a neko je noći tlačio da bi naučio programirati... EDIT: Ispričavam se kolegi ako nije takav, ali sam ja tako procjenio.
Aha, sad sam primjetio da nije ograničeno na tri cifre.
Hvala lijepo na pomoći. Neke osnovne stvari ipak znam. A za vrijeđanjem nema potrebe, nisam ništa loše mislio.
Evo ti najjednostavnije rješenje:
while(broj != 0)
{
produktZnamenki *= broj % 10;
broj /= 10;
}
Dok broj ne postane 0, sa modulo 10 uzimaš desnu znamenku i množiš sa postojećim produktom, zatim se rješavaš te iste desne znamenke cjelobrojnim dijeljenjem sa 10.
Ako je nejasno, pucaj sa pitanjem.
Ispričavam se na pogrešnom rješenju zadatka i vrjeđanju, ali ako ćeš kôd uzeti novo za gotovo prepisati i dobiti ocjenu onda ne žalim na vrjeđanju.
Puno ti hvala! Jasan mi je sada zadatak. Hvala bogu da ima ljudi koji su spremni pomoći kad zapne. :)
Svratih samo da kažem da sam dobio maksimalan broj bodova iz Seminarskog rada o petljama.
I da se još jednom iskreno zahvalim Bugovcima na pomoći, te da kažem da sam u Seminarskom radu naveo ovu temu kao LINK, kao literaturu koju sam koristio... Hvala još jednom.
Hvala lijepo na pomoći. Neke osnovne stvari ipak znam. A za vrijeđanjem nema potrebe, nisam ništa loše mislio.
Evo ti najjednostavnije rješenje:
while(broj != 0)
{
produktZnamenki *= broj % 10;
broj /= 10;
}
Dok broj ne postane 0, sa modulo 10 uzimaš desnu znamenku i množiš sa postojećim produktom, zatim se rješavaš te iste desne znamenke cjelobrojnim dijeljenjem sa 10.
Ako je nejasno, pucaj sa pitanjem.
Oci mi se sklapaju, eto reko da jos jednu popusim i idem spavati, ali i tako pospan vidim da ovo ce da proradi nikad.
Kao prvo u zadatku koliko sam skontao treba neki broj koji se unese rastaviti na jednocifrene brojeve i sve ih pomnoziti, a kod tebe u prvom prolazu petlje ako je broj veci od dvocifrenog ce modulo biti dvocifren a ne jednocifren.
I u zadavanju zadatka nije objasnjeno sta se desava ako u unesenom broju postoji neka znamenka da je nula, jel da se preskace ili da rezultat bude 0 jer svako mnozenje sa 0 daje 0.
Kao prvo u zadatku koliko sam skontao treba neki broj koji se unese rastaviti na jednocifrene brojeve i sve ih pomnoziti, a kod tebe u prvom prolazu petlje ako je broj veci od dvocifrenog ce modulo biti dvocifren a ne jednocifren.
Kado trazimo ostatak(modulo) nekog broja pri djeljenju 10, nemoguce je da taj modulo bude veci ili jednak 10, njegova najveca vrijednost je 9.
6 % 10 = 6
15 % 10 = 5
123456 % 10 = 6
Zadatak je sasvim dobro napravljen, i ako ga isporbas radit ce u svim slucajevima, osim u jednome, a to je kada je broj 0. Buduci da produktZnamenki moramo postaviti na 1 radi mnozenja, ako je broj 0, onda je i umnozak znamenki 0, no on u zadatku ostane 1 zbog uvjeta u while petlji. Zato mislim da je ovdje najbolje koristiti do-while petlju:do
{
produktZnamenki *= broj % 10;
broj /= 10;
}while(broj != 0);
Zadatak trazi umnozak svih znamenki nekog broja, dakle to je gore u rjesenju napravljeno. Ako je bilo potrebno raditi nekakve iznimke, u onda bi to u zadatku i pisalo.
@OP
Odgovor nemozes naci jer FOR, WHILE i DO WHILE, a i GOTO/IF/BREAK na kraju u 99% slucajeva budu izkompajlirani u identican masinski kod, ti samo odaberes sta ti se cini da je najbolje za upotrijebiti u odredjenim situacijama i to upotrijebis.
Pozdrav! Može li mi tko riješiti ovaj zadatak na najjednostavniji mogući način? U c++ naravno. Bio bih jako zahvalan jer mi ovo stvarno neide.
Unosi se n prirodan broj, program treba ispisati produkt znamenaka od n. (npr. n=245, program treba ispisati 40 (jer je 2*4*5=40))
Nisam siguran da se ovo može riješiti, a baš bih volio da vidim ako neko zna i razuvjeri me... jer kada uneseš neki broj (npr 245) onda je varijabla poprimila tu vrijednost... Sada bi dalje trebalo matematički rješavati... Kojom matematičkom formulom dobiti iz broja 245 broj 40, a da ta formula bude primjenjiva i da daje željeni tačan rezultat sa svim ostalim prirodnim brojevima, (dvocifrenim, trocifrenim, četverocifrenim....n)....
Ili se možda može C++ kodom nekako uraditi da nakon što unesemo neki broj (dvocifreni, trocifreni, četverocifreni .... n) npr broj 245, da dobijemo svaku cifru kao odvojenu varijablu (s=2, d=4, j=5)... Ali moje skromno znanje početnka mi ne dozvoljava da sHvatim više od ovoga, na žalost... :)
Ali zadatak je baš zanimljiv i interesuje i mene da li če neko uspjeti riješiti....