Ñëåäâàùàòà ïðîãðàìà ÷åòå ïî åäèí ñèìâîë
îò ñòàíäàðòíèÿ âõîä äîêàòî íå ñðåùíå end-of-file. Òÿ áðîè ïðî÷åòåíèòå ðåäîâå è
ñèìâîëè. Èçõîäúò é èìà ñëåäíèÿ âèä:
lineCount
characterCount
Îïèñàíèåòî é èìà âèäà:
#include
<stream.h>
main() {
char ch;
int lineCnt=0,
charCnt=0;
while ( cin.get(ch) ) {
switch ( ch ) {
case ‘t’:
case ‘ ‘ : break;
case ‘n’:
++lineCnt;
break;
default : ++charCnt;
break;
}
}
cout << lineCnt << " " <<
"n";
return 0;
}
get() å ôóíêöèÿ, ïðèíàäëåæàùà íà âõ/èçõ. ïîòîê,
êîÿòî ÷åòå ñèìâîëè è ãè çàïèñâà êàòî ñâîé àðãóìåíò - â òîçè ñëó÷àé, ch.
Ïîñëåäîâàòåëíîñòòà îò äâà ñèìâîëà n ïðåäñòàâÿ ñèìâîëà tab.
Îïåðàòîðúò
switch îñèãóðÿâà óñëîâåí ïðåõîä ñïîðåä ñòîéíîñòòà íà ñåëåêòîðà ñè. Àêî
ñòîéíîñòòà ìó ñúâïàäà ñ íÿêîé îò îïèñàíèòå ñëåä äóìàòà case ñòîéíîñòè, ñå
èçïúëíÿâà îïåðàòîðà, ñúîòâåòñòâóâàù íà òàçè ñòîéíîñò. Àêî ñúîòâåòñòâèå íå ìîæå
äà áúäå íàìåðåíî, ñå èçïúëíÿâàò îïåðàòîðèòå, çàïèñàíè ñëåä default. Çà âñåêè
ïðî÷åòåí ñèìâîë çà íîâ ðåä ñå óâåëè÷àâà ñòîéíîñòòà íà lineCnt ñ 1. charCnt ñå
óâåëè÷àâà ñ 1 âñåêè ïúò, êîãàòî å ïðî÷åòåí ñèìâîë, êîéòî íå å òàáóëàòîð,
èíòåðâàë èëè íîâ ðåä.
Îïåðàòîðúò while, íàðè÷àí îïåðàòîð çà öèêúë,
îñèãóðÿâà ìíîãîêðàòíî èçïúëíåíèå íà ãðóïà îò îïåðàòîðè äîêàòî íÿêàêâî óñëîâèå
èìà ñòîéíîñò èñòèíà.  òîçè ñëó÷àé, îïåðàòîðúò switch ñå èçïúëíÿâà äîêàòî get()
÷åòå ñèìâîë îò ñòàíäàðòíèÿ âõîä. (Îïåðàòîðèòå while è switch ñà îïèñàíè â ãëàâà
6).
Óïðàæíåíèå 0-1. Âúâåäåòå ïðîãðàìàòà âúâ ôàéë prog2.c è ÿ êîìïèëèðàéòå
â èçïúëíèì ôàéë, íàðå÷åí prog2.
Óïðàæíåíèå 0-2. Èçïúëíåòå ïðîãðàìàòà ñ
òåêñòà íà ïðåäèøíîòî óïðàæíåíèå. Èçïúëíåòå ÿ îòíîâî ñ òåêñò, ñúäúðæàù ñàìî
ïðàçíè èíòåðâàëè. Èçïúëíåòå ÿ çà òåêñò, ñúäúðæàù ñàìî çíàêà
end-of-file.
Óïðàæíåíèå 0-3. Ïðåðàáîòåòå ïðîãðàìàòà òàêà, ÷å äà áðîè
òàáóëàòîðèòå (tabCnt) è èíòåðâàëèòå (blankCnt). Íåêà èçõîäúò äà èçãëåæäà
òàêà.
Total Characters: xx
Lines: x
Chars: x
Tabs: x
Blanks:
x
1.4. Íÿêîëêî äóìè çà êîìåíòàðèòå
Êîìåíòàðèòå ñå ïèøàò çà
äà ïîäïîìàãàò ÷åòåíåòî íà ïðîãðàìèòå. Òå ìîãàò äà ïîÿñíÿâàò àëãîðèòúìà íà
ôóíêöèÿòà, äà îïèñâàò óïîòðåáàòà íà ïðîìåíëèâèòå èëè äà ïîÿñíÿâàò äðóãè àñïåêòè
ïî òåêñòà íà ïðîãðàìàòà. Êîìåíòàðèòå íå óâåëè÷àâàò ðàçìåðà íà èçïúëíèìàòà
ïðîãðàìà. Òå ñå îòñòðàíÿâàò îò êîìïèëàòîðà ïðåäè ãåíåðàöèÿòà íà êîäà.
Â
Ñ++ ñà äåôèíèðàíè äâà òèïà êîìåíòàðè. Äâîéêàòà (“/* /”) îïèñâà êîìåíòàðèòå â
åçèêà Ñ. Íà÷àëîòî íà êîìåíòàðà ñå îïðåäåëÿ ÷ðåç "/”. Âñè÷êî, êîåòî ñëåäâà òåçè
ñèìâîëè ùå áúäå òðåòèðàíî îò êîìïèëàòîðà êàòî êîìåíòàð äî ñðåùàíåòî íà ñèìâîëèòå
“*/”. Êîìåíòàð ìîæå äà áúäå ïîñòàâÿí òàì, êúäåòî ìîãàò äà ñå ïîñòàâÿò
òàáóëàòîðè, èíòåðâàëè èëè ñèìâîëè çà íîâ ðåä è òîé ìîæå äà çàåìà íÿêîëêî ðåäà îò
ïðîãðàìàòà. Íàïðèìåð,
/*
This is a first look at a C++ class
definition.
Classes are used both in data abstraction and
object-oriented
programming. An implementation
of the Screen class is presented in Chapter 5.
*/ class Screen {/* This is referred to as the class body */ public:
void
home(); /* move cursor to 0,0 */
void refresh(); /* redraw Screen
*/
private:
/* Classes support "information hiding". */
/*
Information hiding restricts a program’s */
/* access to the internal
representation of */
/* a class (its data). This is done through */
/* use
of the "private:" label */
char cursor; / current Screen position
*/
};
Ìíîãîòî êîìåíòàðè, ðàçïîëîæåíè õàîòè÷íî â ïðîãðàìíèÿ êîä,
ìîãàò äà íàïðàâÿò òåêñòà íåÿñåí. Íàïðèìåð, îáãðàäåíàòà ñ êîìåíòàðè äåôèíèöèÿ íà
cursor ïî÷òè ÿ ñêðèâà. Èçîáùî, çà ïðåäïî÷èòàíå å êîìåíòàðúò äà ñå ïîìåñòâà â
öÿëîñòåí áëîê íàä òåêñòà, êîéòî ïîÿñíÿâà.
#include
void read() { cout pact() { cout n"; }
void write() { cout n() {
read();
sort();
compact();
write();
return 0;
}
Ïðè ìåí Ñ ìè èçâåæäà ãðåøêà îùå â ïúðâèÿ ðåä, äåìåê ïðè #include