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;
}
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.
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]