Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Счетчики






Задача 1: В компьютер с клавиатуры вводятся числа. Компьютер после ввода каждого числа должен печатать, сколько среди них уже введено положительных.

Фрагмент, решающий задачу:

c: =0; {Обнуляем счетчик}

m: ReadLn(a); {Вводим очередное число}

if a> 0 then c: =c+1;

WriteLn('Из них положительных - ', c);

goto m

Пояснения: В 6.6 мы придумали переменную i, которую назвали счетчиком циклов. Здесь мы тоже придумали переменную c. Она у нас выполняет роль счетчика положительных чисел. Сердце счетчика - оператор c: =c+1. Именно он в нужный момент увеличивает счетчик на 1. Но и без if a> 0 thenтоже никак нельзя. Если бы его не было, то c подсчитывал бы все числа без разбору, то есть был бы обыкновенным счетчиком циклов. В нашем же фрагменте увеличение с на 1 выполняется не всегда, а лишь при положительном а.

Пусть мы вводим числа 8, -2, 10... В этом случае порядок выполнения операторов будет такой:

Оператор а с Печать
c: =0 ?    
ReadLn(a)      
if a> 0 then c: =c+1      
WriteLn('Из них положительных - ', c)     Из них положительных 1
goto m      
ReadLn(a) -2    
if a> 0 then c: =c+1 -2    
WriteLn('Из них положительных - ', c) -2   Из них положительных 1
goto m -2    
ReadLn(a)      
if a> 0 then c: =c+1      
WriteLn('Из них положительных - ', c)     Из них положительных 2
goto m      

Не забывайте обнулять счетчик перед входом в цикл, а не то он начнет считать вам не с нуля, а бог знает с чего. Как бы вам понравилось, если бы таксист в начале поездки не обнулил счетчик?

В нашем фрагменте значения счетчика печатаются при каждом выполнении цикла. Изменим задачу.

Задача 2: В компьютер вводится ровно 200 чисел. Компьютер должен подсчитать и один раз напечатать, сколько среди них положительных.

Программа:

VAR c, i: Integer;

a: Real;

BEGIN

c: =0; {Обнуляем счетчик}

for i: =1 to 200 do begin

ReadLn(a);

if a> 0 then c: =c+1

end {for};

WriteLn('Из них положительных - ', c)

END.

Пояснения: Путь рассуждений здесь тот же, что и в первой задаче. В результате применения оператора for фрагмент ReadLn(a); if a> 0 then c: =c+1 выполняется ровно 200 раз, благодаря чему счетчик с накапливает нужное значение. Оператор WriteLn выполняется только один раз и печатает это значение.

Совет: Если вы запускаете эту программу в компьютере, то с числом 200 возиться крайне долго. Поменяйте его на 3 или 4. Смысл программы от этого не изменится.

 

Задание 46: Что будет, если

1) Вместо c: =0 написать c: =10.

2) Вместо c: =c+1 написать c: =c+2.

3) Строки end {for} и WriteLn поменять местами.

4) Строки c: =0 и for поменять местами.

5) Строки for и ReadLn поменять местами.

Задача 3: В компьютер один за другим вводятся произвольные символы. Ввод заканчивается символом " / ". Подсчитать, какой процент от общего числа введенных символов составляют символ " W " и символ ": " по отдельности.

Здесь мы организуем три счетчика одновременно: сW и сDv - для подсчета букв W и двоеточий соответственно, а также i - счетчик циклов, то есть общего числа введенных символов.

Программа:

VAR i, cW, cDv, procent_W, procent_Dv: Integer;

simvol: Char;

Begin

i: =0; cW: =0; cDv: =0; {Обнуляем все три счетчика}

repeat {Повторяй цикл}

ReadLn (simvol); {Введи символ}

i: =i+1; {«Посчитай» его}

case simvol of

'W': cW: =cW+1; {Если это W, увеличь счетчик символов W}

': ': cDv: =cDv+1 {Если это:, увеличь счетчик символов: }

End

until simvol = '/'; {пока не наткнешься на символ /}

procent_W: =Round(100*cW/i); {Вычисляй процент символов W}

procent_Dv: =Round(100*cDv/i); {Вычисляй процент символов: }

WriteLn(procent_W, ' ', procent_Dv)

End.

Задание 47: В компьютер вводится N чисел. Подсчитать по отдельности количество отрицательных, положительных и тех, что превышают число 10.

Задание 48: В компьютер вводятся пары целых чисел. Подсчитать, сколько среди них пар, дающих в сумме число 13. Подсчет закончить после ввода пары нулей.

Напомню, что пару чисел можно ввести оператором ReadLn(a, b).


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.008 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал