Программирование >>  Элементы языков с и с++ 

1 ... 12 13 14 [ 15 ] 16 17 18 ... 200


му тело for все-таки задано, но задано так называемым пустым оператором - точкой с запятой, которая стоит сама по себе.

Работа программы будет происходить так: сначала сработает первое заголовочное выражение и переменная цикла пс обнулится. Затем начнет проверяться на истинность/ложность второе заголовочное выражение. Но чтобы его проверить, надо выполнить функцию getchar О, т. е. нажать на клавишу и ввести символ. Только после этого getchar О получит значение, и это значение будет сравниваться с признаком конца файла. Если проверяемое выражение истинно, то начнет выполняться тело оператора for. Поскольку оно пусто, то управление передастся на вычисление третьего заголовочного выражения ПС++. Для одного введенного символа в пс добавится одна единица. После этого управление передастся на вычисление второго заголовочного выражения, т. е. придется ввести следующий символ, который будет проверен на признак конца файла.

Если введенный символ не соответствует комбинации клавиш <CtrI>+<z>, то снова будет выполняться тело и т. д. В конце концов, когда мы нажмем <CtrI>+<z>. второе заголовочное выражение нарушится, и оператор for будет пропущен, управление передастся на следующий за телом for оператор.

После этого начнет выполняться оператор вывода printf О. Мы привели в программе два таких оператора, чтобы показать различие в форматах вывода переменной типа double, которая всегда выдается по формату f. Если формат задан как %o.f, то дробная часть, которая является свойством чисел с плавающей точкой, будет отброшена и число выведется как целое. Если же задать формат в виде % f, не указав количество цифр в дробьюй части, то после точки выведется столько цифр, сколько определено по умолчанию.

Результат работы программы представлен на рис. 2.3. Отмерим, что программа подсчигывает и вспомогательные символы.

C:\WINDOWS\system32U:rod.exe

аке input> tsdqwe

;;iiaracteres nunber is: 7

::iiai>acterss nunber is: 7.800088

Хяя продолжения нажмите любую клавишу

Рис. 2.3. Результат работы программы листинга 2 4



Листинг 2.5

.................i;. .

10.срр : Defines the entry point for the console application, iinclude stdafx.h

iinclude <stdio.h> for getchar(),putchar()

iinclude <conio.h> for getchO #define eof -1 признак конца файла

int main О {

int c,nl; nl=0;

printf( Enter your string and press the key <Enter> >\n ); while((c=getcharO ) !=eof) if(c==\n) nl++;

printf( Strings number is: %d\n ,nl);

getch(); вводит символ, но без эхо-сопровождения

Здесь новое по сравнению с предыдущими подобными программами только то, что появилась операция == (равно) и новый оператор if- это оператор условного перехода, изменяющий последовательное (свер.ху вниз) выполнение операторов программы в зависимости от истинности/ложности условия (оно записывается в круглых скобках в заголовочной части оператора и может представлять собой выражение). Если условие истинно, то выполняется тело оператора, которое обладает точно такими же свойствами, что и тела операторов while и for: если в теле всего один оператор, то этот оператор может не заключаться в фигурные скобки, в противном случае фигурные скобки обязательны. В нащем случае тело состоит из одного оператора п1++, который выполняется всякий раз, когда введен символ конца строки. В про-

Подсчет количества строк в файле

Строки файла строк в языке С разделяются символом \п, поэтому программа ввода строк с клавиатуры и подсчета их количества будет выглядеть так, как показано в листинге 2.5.



тивном случае тело if не выполняется. Тело оператора while тоже состоит из одного оператора if (неважно, сколько операторов включает тело if), поэтому оператор while записан без фигурных скобок.

Программа работает так: обнуляется счетчик количества вводимых строк (nl), начинает выполняться оператор цикла while, обеспечивающий ввод с клавиатуры потока символов (вычисляется, как обычно, выражение в заголовочной части while, чтобы проверить условие на истинность/ложность, что требует нового ввода символа). Среди потока символов встречаются символы \п, сигнализирующие об окончании строки. Как только такой символ обнаруживается с помощью оператора if, в счетчик nl, расположенный в теле if, добавляется единица. Когда после последней строки, завершающейся символом \п, мы нажмем комбинацию клавиш <CtrI>+<z> (символ конца ввода), ввод строк завершится. Условие выполнения оператора while нарушится, и управление будет передано на оператор, следующий за его телом. Это будет оператор вывода printf(). Результат работы программы представлен на рис. 2.4.

C:\WINDOWS\system32\cmd.exe

Inter voui string and press the key <Enter> > f.{i;ert 1234S6 -wetl2 12

fitrings niinber is: 4

ilm продолжения нажмите любую клавишу . . .

Рис. 2.4. Результат работы программы листинга 2.5

Подсчет количества слов в файле

Договоримся, что слово- это любая последовательность символов, не содержащая пробелов, символов табуляции (\t) и новой строки (\п). Наряду с количеством слов программа будет подсчитывать количество символов и строк.

Текст программы приведен в листинге 2.6. i



1 ... 12 13 14 [ 15 ] 16 17 18 ... 200

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика