Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тurbo Pascal 7+.doc
Скачиваний:
12
Добавлен:
24.12.2018
Размер:
10.09 Mб
Скачать

3Адание 46

Что будет, если

  1. вместо с:=0 написать с:=10?

  2. вместо с:=с+1 написать с:=с+2?

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

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

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

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

Здесь мы организуем 3 счетчика одновременно: cW и cDv – для подсчета букв 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).

7.4. Сумматоры

Сумматор - это переменная величина, в которой вы подсчитываете сумму. Для чего нужны сумматоры? Ну хотя бы для того, чтобы подсчитать общее количество золота, которое вы нашли в компьютерной игре за несколько экспедиций.

Если вы поняли идею счетчика, то понять идею сумматора вам будет нетрудно. Посмотрим, как будет работать следующий фрагмент:

s:=0; {Обнуляем сумматор. Это не менее важно, чем обнулить счетчик}

m: ReadLn(a);

s:=s+a; {Увеличиваем сумматор}

WriteLn('Сумма=', s);

goto m;

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

Оператор

a

s

Печать

s:=0

?

0

ReadLn(a)

8

0

s:=s+a

8

8

WriteLn('Сумма =' ,s)

8

8

Сумма=8

Goto m

8

8

ReadLn(a)

4

8

s:=s+a

4

12

WriteLn('Сумма =' ,s)

4

12

Сумма=12

Goto m

4

12

ReadLn(a)

10

12

s:=s+a

10

22

WriteLn('Сумма =' ,s)

10

22

Сумма=22

Goto m

10

22

...

Как видите, в ячейке s накапливается сумма вводимых чисел а, поэтому назовем эту ячейку сумматором. Отличие сумматора от счетчика в том, что счетчик увеличивается на единицу оператором с:=с+1, а сумматор - на суммируемое число оператором s:=s+a.

Задача. В компьютер вводится N чисел. Вычислить и один раз напечатать их сумму.

Программа:

VAR i,N :Integer;

a,s :Real;

BEGIN

ReadLn(N);

s:=0;

for i:=1 to N do begin

ReadLn(a);

s:=s+a

end {for};

WriteLn('Cумма равна' ,s:20:10)

END.

Задание 49

Пусть N = 2, а = 5 и З. Тогда по этой программе Паскаль напечататает 8. Определите без компьютера, что он напечатает, если:

    1. вместо s:=0 написать s:=10;

    2. вместо s:=s+a написать s:=s+a+1;

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

    4. строки s:=0 и. for поменять местами;

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

    6. строки s:=s+a и end {for} поменять местами;

    7. вместо for i:=1 to N написать for i:=2 to N.

Задания 50-52

Написать программы для следующих задач:

50. Во дворце 40 залов. Известны длина и ширина каждого зала. Вычислить площадь пола всего дворца.

51. Вычислить средний балл учеников вашего класса по физике.

52. Вычислить произведение N произвольных чисел.

Подсказка. Несмотря на то что произведение - не сумма, эта программа будет отличаться от программы суммирования всего двумя символами (какими?), а структура обеих программ совершенно одинакова!