Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по Паскалю.doc
Скачиваний:
61
Добавлен:
04.06.2015
Размер:
7.62 Mб
Скачать

Var I, s, n : Word;

Begin

ClrScr;

Write(‘n= ‘);

ReadLn(n);

s := 0;

Repeat

i := n Mod 10;

s := s + i;

n := n Div 10;

Until (n = 0);

WriteLn(‘s = ‘, s);

ReadLn;

End

  1. ввести с клавиатуры по одному последовательность целых чисел (конец последовательности – число 0). Определить их сумму, максимальное и минимальное число, количество введенных чисел и их среднее арифметическое.

Пусть s– искомая сумма,

min, max– минимальное и максимальное из введенных чисел,

count – количество введенных чисел,

sred – среднее арифметическое,

n – очередное число.

Тогда алгоритмрешения задачи можно описать следующим образом:

  1. обнуляем сумму s,

  2. вводим первое число n,

  3. если оно не равно нулю, то

    1. принимаем его значение за minиmax

    2. количество введенных чисел count = 1

    3. увеличиваем сумму на введенное число s = s + n

    4. входим в цикл ввода:

  4. вводим очередное число n,

  5. если оно не равно нулю, то

    1. количество введенных чисел увеличиваем на 1:count = count +1

    2. увеличиваем сумму на введенное число s = s + n

    3. если оно меньше min, тоmin = n,

    4. если оно больше max, тоmax = n,

  6. повторяем цикл до тех пор, пока n = 0– это и будетусловиемвыхода из цикла.

  7. Создадим интерфейсэтой задачи – взаимодействие программы с пользователем, то есть что должно выводиться на экран:

Первое число: 3

Очередное число: 8

Очередное число: 1

Очередное число: -2

Очередное число: 0

Сумма = 10

Количество чисел = 4

Min = -2

Max = 8

Среднее арифметическое = 2.50

Схема алгоритма:

Программа

Program Posled;

Uses CRT;

Var n,min,max,s,count: Word;

sred: Real;

Begin

ClrScr;

s := 0;

Write(‘Первое число:’);

ReadLn(n);

If (n = 0)

Then Exit;

min := n;

max := n;

count := 1;

s := s + n;

Repeat

Write(‘Oчередное число:’);

ReadLn(n);

If (n <> 0) Then

Begin

count := count + 1;

s := s + n;

If (n > max)

Then max := n;

If (n < min)

Then min := n;

End { If (n <> 0 )}

Until (n = 0);

sred := s / count;

WriteLn;

WriteLn(‘Сумма =’,s);

WriteLn(‘Количество чисел =’,count);

WriteLn(‘min=’,min);

WriteLn(‘max=’,max);

WriteLn(‘Среднее арифметическое =’,sred:5:2);

ReadLn;

End.

  1. вычислить s– сумму членов бесконечного ряда:

s = 1 + x/ 1! + x2 / 2! + x3 / 3! + … + xk / k! + …

с погрешностью ε0.

Каждый последующий член ряда можно определить через предыдущий, используя рекуррентнуюформулу:

yk+1 = yk·x / k

Текущая погрешность вычислений εопределяется последним просуммированным членом ряда:

ε =|yn|

Эту погрешность необходимо сравнить с заданной погрешностью ε0 для реализации условия окончания суммирования:

- если ε > ε0, то заданная точность еще не достигнута, и суммирование ряда необходимо продолжить, прибавив к имеющейся сумме еще один член,

- если ε <= ε0, то заданная точность достигнута, и суммирование необходимо прекратить.

Пусть s– искомая сумма,

y – очередной член ряда,

k- номер члена ряда,

eps_0 – заданная точность вычислений,

x – вводимый аргумент.

Схема алгоритма: Программа:

Program Summa;

Uses CRT;

Const eps_0 = 0.001;