Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Jednostavan program, ali par stvari mi nije jasno

[es] :: C/C++ programiranje :: C/C++ za početnike :: Jednostavan program, ali par stvari mi nije jasno

[ Pregleda: 2062 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

R A V E N
Mirza Beglerović Raven
Tuzla

Član broj: 36142
Poruke: 1629
74.196.213.kr165.zona.ba.

Sajt: NietzscheSource.Org


+101 Profil

icon Jednostavan program, ali par stvari mi nije jasno28.01.2010. u 19:13 - pre 173 meseci
Imam slijedeći program, čija je namjena da prvo slovo u svakoj riječi unesene rečenice učini velikim:

Code (cpp):
#include <iostream>
using namespace std;

int main()
{
char ch, pre = '\0';
   
while (cin.get(ch))
    {
     if (pre == ' ' || pre == '\n') cout.put(char(toupper(ch)));
     else cout.put(ch);
     pre = ch;
    }
     
cin.get();
return 0;
}


A evo primjera rezultata:

Esse quam videri.
Esse Quam Videri.


1. Kako da unesem znak za novi red, jer program vrši testiranje i na taj znak da bi saznao kada slijedi nova riječ (unos \n zajedno sa tekstom ne pomaže)? Mislim da treba kombinirati Ctrl sa još nečim.

2. Zbunjuje me ovaj dio kôda cout.put(char(toupper(ch))). Funkcija cout.put() ima argument char(toupper(ch)), a funkcija toupper() ima argument ch, no međutim šta je ono char(...) i koja je njegova uloga? Je li to neka funkcija koja pripada objektu cout? Je li u redu da funkcija nosi ime ključne riječi C++-a (char u ovom slučaju)?

3. Ako hoću da zatvorim program (tj. da izađem iz while petlje), treba da unesem znak \0, što činim sa Ctrl+z. Na ekranu se pojavi simbol ^Z, pritisnem Enter i program se gasi. No odmah poslije while petlje je cin.get(); koja bi trebala da primi još jedan Enter pa da onda izađe iz programa, no međutim, to se ne dešava. Zašto?

4. Kako je moguće da funkcija toupper() radi (a namjena ove funkcije je transformiranje malog slova u isto to, samo veliko slovo), kad u program nije uključena biblioteka ctype.h gdje je njen prototip i definicija?

5. (Nevezano za program.) Ako želim da koristim gorepomenutu biblioteku ctype.h u nekom C++ programu, dodam #include <ctype.h>. No međutim C++ standard preporučuje korištenje #include <cctype> umjesto toga. Je li to tačno? Ako jeste, onda ctype.h i cctype nisu jedna te ista datoteka?

[Ovu poruku je menjao R A V E N dana 28.01.2010. u 20:59 GMT+1]
 
Odgovor na temu

BinaryRuler

Član broj: 73518
Poruke: 189
79.101.161.*



+3 Profil

icon Re: Jednostavan program, ali par stvari mi nije jasno28.01.2010. u 21:35 - pre 173 meseci
Za pitanje pod 1. tj. za novi red drzis alt i otkicas 10 i pustis alt. to ti je '\n'.
 
Odgovor na temu

R A V E N
Mirza Beglerović Raven
Tuzla

Član broj: 36142
Poruke: 1629
74.196.213.kr165.zona.ba.

Sajt: NietzscheSource.Org


+101 Profil

icon Re: Jednostavan program, ali par stvari mi nije jasno29.01.2010. u 03:15 - pre 173 meseci
U redu... isprobaću to kasnije.

A što se tiče 4., očigledno da je ctype.h uključena unutar iostreama, pa je samim tim posredno uključena i u program.
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
212.200.65.*

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Jednostavan program, ali par stvari mi nije jasno29.01.2010. u 06:42 - pre 173 meseci
5.
http://www.decompile.com/cpp/faq/diff_btw_h_and_no_h.htm
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
212.200.65.*

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Jednostavan program, ali par stvari mi nije jasno29.01.2010. u 07:44 - pre 173 meseci
2. char(...)

Radi se samo o razlicitoj notaciji cast-inga:
char(nesto)
(char)nesto
...a potrebno je jer "toupper" verovatno vraca nesto sto nije "char", pa da se osigura da funkcija koja ce dobiti rezaultat (put) ima argument "ispravnog" tipa.
 
Odgovor na temu

drki89
Igor Drljić
Prhovo

Član broj: 127027
Poruke: 56
*.mediaworksit.net.



+4 Profil

icon Re: Jednostavan program, ali par stvari mi nije jasno31.01.2010. u 13:00 - pre 173 meseci
Citat:

3. Ako hoću da zatvorim program (tj. da izađem iz while petlje), treba da unesem znak \0, što činim sa Ctrl+z. Na ekranu se pojavi simbol ^Z, pritisnem Enter i program se gasi. No odmah poslije while petlje je cin.get(); koja bi trebala da primi još jedan Enter pa da onda izađe iz programa, no međutim, to se ne dešava. Zašto?


cin.get() koje se nalazi odmah posle while petlje pokupi onaj ENTER koji si pritisnuo kada si uneo znak ^Z.

P.S. Da dopunim odgovor koji je postavio X Files: funkcija toupper() vraca podatak tipa int pa je potrebna konverzija.

[Ovu poruku je menjao drki89 dana 31.01.2010. u 14:13 GMT+1]
 
Odgovor na temu

R A V E N
Mirza Beglerović Raven
Tuzla

Član broj: 36142
Poruke: 1629
74.196.213.kr165.zona.ba.

Sajt: NietzscheSource.Org


+101 Profil

icon Re: Jednostavan program, ali par stvari mi nije jasno06.02.2010. u 17:01 - pre 173 meseci
Hvala svima na odgovorima!
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Jednostavan program, ali par stvari mi nije jasno

[ Pregleda: 2062 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.