Napraviti rekurzivnu funkciju koja ce omoguciti unos karaktera sve do momenta dok korisnik ne unese tacku (.) . Nakon unosenja tacke ,program treba obrnutim redosljedom da ispise sve unesene znakove i koliko je znakova uneseno.
- +/- sve poruke
- ravni prikaz
- starije poruke gore
I u cemu je problem? Znas li sto je rekurzija? Ajde da cujem tvoju definiciju?
treba upisivati dok se neupise .
Kad se upise onda ispisati sve samo naopacke
Jesam shvatio?
Autoclimb kills more people than AIDS
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
char upis( string& x)
{
char C;
cin >> C;
x += C;
if(C != '.')
upis(x);
}
int main()
{
string x ="";
upis( x ) ;
reverse(x.begin(),x.end());
cout << endl << endl<< "Obrni me njezno:" << endl << endl;
for(string :: iterator it = x.begin(); it < x.end(); it++)
cout << *it << endl; // malo preseravanja
cout << endl << "Velicina:" << x.size() << endl;
return 0;
}
Ja ti ne vidim ovdje da tvoja funkcija koja je deklarirana kao char ima povratnu vrijednost, to ne može raditi, a druga stvar, čemu reverse i iteratori, kad rekurzija sa stoga skida obrnutim redosljedom.
Potrebno je samo sa stoga poskidati postavljene znakove od vrha prema dolje i pribrojiti ih stringu.
#include<iostream>
#include<string>
using namespace std;
string ObrnutiIspis(string rijec)
{
char znak;
cin>> znak;
if(znak == '.') return "";
return ObrnutiIspis(rijec) + znak;
}
int main()
{
string rijec = "";
string obrnuto = ObrnutiIspis(rijec);
cout<< obrnuto;
return 0;
}
evo ti još jedna verzija:
#include <iostream>
#include <string>
using namespace std;
void giveString()
{
cout<< "upisi neki karakter : ";
string karakter;
cin>> karakter;
if(karakter == ".")
{
cout<< "." << endl << endl;
return;
}
giveString();
cout<< "obrnuto : " << karakter << endl;
}
int main()
{
giveString();
return 0;
}
Ja ti ne vidim ovdje da tvoja funkcija koja je deklarirana kao char ima povratnu vrijednost, to ne može raditi, a druga stvar, čemu reverse i iteratori, kad rekurzija sa stoga skida obrnutim redosljedom.
Potrebno je samo sa stoga poskidati postavljene znakove od vrha prema dolje i pribrojiti ih stringu.
#include<iostream>
#include<string>
using namespace std;
string ObrnutiIspis(string rijec)
{
char znak;
cin>> znak;
if(znak == '.') return "";
return ObrnutiIspis(rijec) + znak;
}
int main()
{
string rijec = "";
string obrnuto = ObrnutiIspis(rijec);
cout<< obrnuto;
return 0;
}
Dobro ovo za stack je istina, debil sam ( samo sam tipkao, da sam 1 min dulje razmislio napisao bih to), no ovo da funkcija mora nešto vraćati...? Koliko ja znam mogao sam staviti int i ovo bi radilo.
char upis( string& x)
{
char C;
cin >> C;
x += C;
if(C != '.')
upis(x);
}
Pa da, funkcija mora vraćati onu vrijednost koja joj je dekarirana kao povratna vrijednost, ovoj je definirana char vrijednost kao povratna, a ne vraća ništa.
Jel ovo OK?
#include <vector>
#include <iostream>
using namespace std;
std::vector<char> vector1;
void rekurzivnaFun()
{
char c;
cin >> c;
if (c == '.') return
vector1.push_back(c);
rekurzivnaFun();
}
int main()
{
rekurzivnaFun();
for (int i = vector1.size() ; i>0; --i)
cout<< vector1.at(i-1);
return 0;
}
Nemojte mi zamjeriti ako moji primjeri nisu prema vašem nastavnom planu al' me jednostavno zahvatio C++11 val i sada ga malo jašem i usput obnavljam svoje cpp znanje.
Sviđa mi se, samo, onda treba iskoristiti drugi stupanj rekurzije, odnosno skidanje sa stoga za ispis elemenata, umjesto iteracije.
A onda nije loše usput i skinuti elemente iz vektora. Pošto već postoji jedna globalna varijabla, onda uvaliti i brojač.
#include <vector>
#include <iostream>
using namespace std;
std::vector<char> vector1;
int brojac = 0;
void rekurzivnaFun()
{
char c;
cin >> c;
if (c == '.') return;
vector1.push_back(c);
rekurzivnaFun();
brojac++;
cout<< vector1.back();
vector1.pop_back();
}
int main()
{
rekurzivnaFun();
cout<< "Broj elemenata: " << brojac << endl;
return 0;
}
Zašto komplicirate bezveze ?
#include<stdio.h>
void rek(){
char c;
c=getchar();
if(c != '.'){
rek();
printf("%c",c);
}
}
int main(){
rek();
return 0;
}
Zašto komplicirate bezveze ?
#include<stdio.h>
void rek(){
char c;
c=getchar();
if(c != '.'){
rek();
printf("%c",c);
}
}
int main(){
rek();
return 0;
}
Ajde ne budi nadobudan.
Samo brisajući neke dijelove prvobitnog koda novi je dug 11 linija u usporedbi s 10 gore citiranih.
Da je if(karakter == ".")
return;
promijenjeno u
if(karakter != ".") // bez return ispod
kod bi nam bio istovjetan u dlaku s tim da je tvoj postan dan iza.
#include <iostream>
void giveString()
{
std::string karakter;
std::cin>> karakter;
if(karakter == ".")
return;
giveString();
std::cout<< "obrnuto : " << karakter << std::endl;
}
int main()
{
giveString();
return 0;
}
Ovo su osnove osnova pa nema potrebe za bijesnom retorikom kaj se komplicira a nakon toga postaš identičan kod u C-u s jednom lajnom manje.
Ako si već sklon takvim istupima , predlažem da ubuduće snimiš letimično postove jer ti blamaža kao starom forumašu nije potrebna.
Iskreno, nije mi baš bilo svejedno za ono "zašto komplicirate bezveze?", a samo sam na traženje čovjeka dao mišljenje o njegovoj implementaciji vector containera u ovu svrhu. Smatram da nisam pisao da nešto napišem, nego dao nešto konstrutivno, a u krajnjoj liniji podložno evaluaciji svih na forumu. A bit će mi drago ako je čovjeku pomoglo u razumjevanju i implementaciji vector containera.
Međutim, namjerno nisam htio reagirati, prepuštajući to pravo autoru koda čiju je on varijaciju napisao. Da, u tom slučaju kad se piše varijacija u stvari istog koda, kulturno je naglasiti: "ovo je varijacija koda kojeg je dotični forumaš napisao".
Ali u tom slučaju bi ulet izgubio na teatralnosti, zar ne.
Ajde ne budi nadobudan.
Samo brisajući neke dijelove prvobitnog koda novi je dug 11 linija u usporedbi s 10 gore citiranih.
...
Ovo su osnove osnova pa nema potrebe za bijesnom retorikom kaj se komplicira a nakon toga postaš identičan kod u C-u s jednom lajnom manje.
Ako si već sklon takvim istupima , predlažem da ubuduće snimiš letimično postove jer ti blamaža kao starom forumašu nije potrebna.
Po tebi sam znači zaslužio da mi se obračaš nepristojno, jer šta? Osjećaš se osobno napadnuto mojim postom ?
I sad mi još reci kako da te uzimam za ozbiljnio ubuduće ?
A i Floki se naravno slaže da sam zaslužio jer mu smeta moja teatralnost 
Jeste logika je očito ista ali vjerovao ili ne i ti kompliciraš, koristiš string umjesto char, return umjesto da pravilno napišeš uvjetni izraz, "<< endl << endl;" ? , ... , ali naravno ispričavam se što nisam u detalje proučio sav obfuscirani "C++" kod u temi prije što sam išta napisao da nebi slučajno nekoga uvrijedio.
btw. razlika je u ~ 170 ili ~ 250lajni koda u prvom slučaju, tako da molim vas okanite me se 
jednostavno rečeno, ukrao si čovjeku kod, što nisi naglasio da si napisao inačicu već napisanog, zapitaj se sam
pošto nisi naglsio da si napisao inačicu istog koda, to jest kopija, što drugo, što nisi naglasio gdje vidiš izmjene u njegovom kodu, umjesto što nešto prodavaš pod svoje
uostalom, i jedna i druga inačica uvjetnog izraza izvode taj return, bio on napisan ili ne, kod se u dlaku izvodi na isti način uz varijaciju u uvjetu, ništa drugo.
jednostavno rečeno, ukrao si čovjeku kod, što nisi naglasio da si napisao inačicu već napisanog, zapitaj se sam
pošto nisi naglsio da si napisao inačicu istog koda, to jest kopija, što drugo, što nisi naglasio gdje vidiš izmjene u njegovom kodu, umjesto što nešto prodavaš pod svoje
Vjerovao ili ne nisam čovjeku ništa ukrao, ono je slučajno najednostavniji način na koji se može izvesti onaj prvi zahtjev.
Niti je moje ni njegovo, samo je logično. Obfuscirate kod i onda ljude optužujete da vam ga ne čitaju. Give me a break.
u čemu je tvoj način jednostavniji od njegovog, to je potpuno ista stvar, a to nisi naglasio
ja ti sad ovdje otvoreno kažem da je to ista stvar, a izvođenje toga returna svejedno imaš, napisao ga ili ne
Ajde ne budi nadobudan.
Samo brisajući neke dijelove prvobitnog koda novi je dug 11 linija u usporedbi s 10 gore citiranih.
...
Ovo su osnove osnova pa nema potrebe za bijesnom retorikom kaj se komplicira a nakon toga postaš identičan kod u C-u s jednom lajnom manje.
Ako si već sklon takvim istupima , predlažem da ubuduće snimiš letimično postove jer ti blamaža kao starom forumašu nije potrebna.
Po tebi sam znači zaslužio da mi se obračaš nepristojno, jer šta? Osjećaš se osobno napadnuto mojim postom ?
I sad mi još reci kako da te uzimam za ozbiljnio ubuduće ?
A i Floki se naravno slaže da sam zaslužio jer mu smeta moja teatralnost 
Jeste logika je očito ista ali vjerovao ili ne i ti kompliciraš, koristiš string umjesto char, return umjesto da pravilno napišeš uvjetni izraz, "<< endl << endl;" ? , ... , ali naravno ispričavam se što nisam u detalje proučio sav obfuscirani "C++" kod u temi prije što sam išta napisao da nebi slučajno nekoga uvrijedio.
btw. razlika je u ~ 170 ili ~ 250lajni koda u prvom slučaju, tako da molim vas okanite me se 
Po tebi sam znači zaslužio da mi se obračaš nepristojno, jer šta? Osjećaš se osobno napadnuto mojim postom ?
Apsolutno si to zaslužio jer napisavši ""Zašto komplicirate bezveze ?"" a potom objavivši u globalu repliku mog koda zapravo si mi rekao da ti je doma dosadno i ideš na forum demonstrirati svoju "moć" na tako jednostavnom zadatku a zapravao nije ništa pametnije bilo na TV-u za tebe mi se čini.Ovdje smo da pomognemo čovjeku koji je postao pitanje a ne se praviti div pred bedastoćom od par linija koda.
I sad mi još reci kako da te uzimam za ozbiljnio ubuduće ?
Jednostavno se pravi da ne postojim. Ne vrijedi vice-versa.
Jeste logika je očito ista ali vjerovao ili ne i ti kompliciraš, koristiš string umjesto char, return umjesto da pravilno napišeš uvjetni izraz, "<< endl << endl;" ? , ...
Pa da si ubacio u compiler vidio bi svrhu endl<<endl -> ljepši prikaz u CMD-u , nadam se da znaš da string posprema i po jedan karakter kao i char... ma čini mi se da nisi ti to niti kopi pejstao pa build-run nego eto pišeš da se čuje za tebe.
ali naravno ispričavam se što nisam u detalje proučio sav obfuscirani "C++" kod u temi prije što sam išta napisao da nebi slučajno nekoga uvrijedio.
Uvažavam ispriku i odi odmah ga sad prouči jer ako je par kristalno jasnih linija koda za tebe obfuscirano , onda istog časa otvori žirac da ti se uplaćuje na njega kako bi imao za tečaj osnova kodiranja u nekoj školi.
Rado ću ti i ja uplatiti koju kunu.
btw. razlika je u ~ 170 ili ~ 250
Pa ti stvarno ne odustaješ , jasno je da sam mislio na lajne pisanog texta koda.
Dodajem i za instrukcije iz matematike.
Ja kada sam pitao profu što je rekurzija , rekao mi je pogledaj pod rekurzija 
Ja znam što bih ja napravio na njegovom mjestu, pozvao bi se na tvoju inačicu i naglasio da sam ubacio obrnuti uvjet.
Ali, njegovo ponašanje, njegova stvar.
End of story.
jednostavno rečeno, ukrao si čovjeku kod, što nisi naglasio da si napisao inačicu već napisanog, zapitaj se sam
pošto nisi naglsio da si napisao inačicu istog koda, to jest kopija, što drugo, što nisi naglasio gdje vidiš izmjene u njegovom kodu, umjesto što nešto prodavaš pod svoje
Vjerovao ili ne nisam čovjeku ništa ukrao, ono je slučajno najednostavniji način algoritam s kojim se može izvesti onaj prvi zahtjev.
Niti je moje ni njegovo, samo je logično. Obfuscirate kod i onda ljude optužujete da vam ga ne čitaju. Give me a break.
Bolje? Ili moram posegnuti za pintom 
P.S. jeste me ispljuvali na osobnoj razini, al nisam ni bolje zaslužio kad kradem kod, jao ...
jednostavno rečeno, ukrao si čovjeku kod, što nisi naglasio da si napisao inačicu već napisanog, zapitaj se sam
pošto nisi naglsio da si napisao inačicu istog koda, to jest kopija, što drugo, što nisi naglasio gdje vidiš izmjene u njegovom kodu, umjesto što nešto prodavaš pod svoje
Vjerovao ili ne nisam čovjeku ništa ukrao, ono je slučajno najednostavniji način algoritam s kojim se može izvesti onaj prvi zahtjev.
Niti je moje ni njegovo, samo je logično. Obfuscirate kod i onda ljude optužujete da vam ga ne čitaju. Give me a break.
Bolje? Ili moram posegnuti za pintom 
P.S. jeste me ispljuvali na osobnoj razini, al nisam ni bolje zaslužio kad kradem kod, jao ...
Sarkazam ti ne ide od ruke pa i njega treniraj.
