Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Pascal.doc
Скачиваний:
32
Добавлен:
12.03.2016
Размер:
3.29 Mб
Скачать
      1. Счетчики

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

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

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

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

ifa>0thenc:=c+1;

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

gotom

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

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

Оператор

а

с

Печать

c:=0

?

0

ReadLn(a)

8

0

if a>0 then c:=c+1

8

1

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

8

1

Из них положительных 1

goto m

8

1

ReadLn(a)

-2

1

if a>0 then c:=c+1

-2

1

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

-2

1

Из них положительных 1

goto m

-2

1

ReadLn(a)

10

1

if a>0 then c:=c+1

10

2

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

10

2

Из них положительных 2

goto m

10

2

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

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

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

Программа:

VARc,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 - счетчик циклов, то есть общего числа введенных символов.

Программа:

VARi,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

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

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).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]