Некоторые математические функции, не реализованные в языке Паскаль

 

В математике В программировании на языке Паскаль
xn exp(n*ln(x))
log b a ln(a)/ln(b)
tg x sin(x)/cos(x)
ctg x cos(x)/sin(x)

 

Операторы

Оператор Назначение Синтаксис
READLN ввод значений с клавиатуры c переводом курсора на новую строку Readln( перем1, …, перемN)
WRITELN вывод значений на экран c переводом курсора на новую строку Writeln('Текст') Writeln(перем1, ..., перемN)
READ ввод значений с клавиатуры Read( перем1, …, перемN)
WRITE вывод значений на экран Write('Текст') Write(перем1, ..,перемN)
IF …THEN… проверка условий if <условие> then <оператор1> else <оператор2> if <условие> then <оператор>  
CASE выбор case <переменная> of <константа 1>: <операторы 1>; … < константа n>: <операторы n> [else <операторы>] end;

 

Пример 1.

Составить программу расчета значения функции

Z = |cos х4 – 3 tg х2 |+0.8 sin yх2+ 10 при любых значениях х и у.

Результат вывести в виде: при х= и у=… z=…

Используемые переменные: x, y -аргументы, z – значение функции

Program pr1;

Var x,y,z: real;

Begin

writeln('введите X, Y'); {вывод строки подсказки}

readln (x,y); {ввод аргументов x и y}

z:=abs(cos(sqr(x)*sqr(x)-3*sin(sqr(x))/cos(sqr(x))))+0.8*sin(y*sqr(x))+10;

writeln('при x=',x:8:2,' y=',y:8:2,' z=',z:8:2); {вывод результата}

readln; {задержка до нажатия клавиши Enter}

End.

Результат

введите X, Y

1 2

при x=1.00 y=2.00 z=11.59

 

Пример 2.

Вводится вещественное число а. Не пользуясь никакими арифметическими операциями, кроме сложения, получить 7а за четыре операции.

Используемые переменные: а –вводимое число, b, c, d – вспомогательные переменные

Program pr2;

Var a,b,c,d:real;

Begin

write('введите a= '); readln (a); {ввод исходного числа}

b:=a+a; {2a}

c:=b+b; {4a}

d:=b+c; {6a}

a:=d+a; {7a}

writeln('7a=',a:8:2); {вывод результата}

readln; {задержка до нажатия клавиши Enter}

End.

Результат

введите a= 2

7а= 14.00

 

Пример 3.

Введенное 4-значное число изменить так, чтобы 2 и 3 цифры поменялись местами.

Program pr3;

Var n,a,b,c,d:integer;

Begin

write('введите n '); readln (n); {ввод исходного 4-значного числа}

a:=n div 1000; {1-я цифра числа}

b:=n div 100 mod 10; {2-я цифра числа }

c:=n div 10 mod 10; {3-я цифра числа }

d:=n mod 10; {4-я цифра числа}

n:= a*1000+c*100+b*10+d; {получение числа в виде суммы разрядных слагаемых}

writeln('результат ', n); {вывод результата}

readln; {задержка до нажатия клавиши Enter}

End.

Результат:

введите n 1234

результат 1324

 

Пример 4.

Обмен значениями переменных x и y.

Program pr4;

Var x,y,t: integer;

begin

write('Введите x, y '); {вывод строки подсказки}

readln(x,y); {ввод исходных чисел}

t:=x; {в переменную t }

x:=y;

y:=t;

writeln('x=', x, 'y=',y); {вывод результата}

readln; {задержка до нажатия клавиши Enter}

end.

Результат:

Введите x, y 3 7

x=7 y=3

Пример 5.

Выбор минимального из трех введенных целых чисел.

Program pr5;

Var a, b, c, m: integer;

BEGIN

Write('a, b, c='); readln(a, b, c); {ввод исходных чисел}

if a<b then m:=a else m:=b; {выбор минимального из a и b}

if c<m then m:=c; {сравнение с третьим числом}

writeln('Мin=', m); {вывод результата}

readln

END.

Результат:

1 случай:

a, b, c= 15 6 9

Мin=6

 

2 случай:

a, b, c= 1 45 4

Мin=1

 

3 случай:

a, b, c= 25 16 9

Мin=9

 

Пример 6.

Решение квадратного уравнения вида Ax2 + Bx + C = 0.

Program pr6;

Var a, b, c, d, x1, x2: real;

Begin

Write('a, b, c='); readln(a, b, c); {вводим коэффициенты}

d:=sqr(b)-4*a*c; {вычисляем дискриминант}

if d>0 then begin {если дискриминант положительный, то два корня}

x1:=(-b+sqrt(d))/(2*a); writeln('x1=', x1:6:2);

x2:=(-b-sqrt(d))/(2*a); writeln('x2=', x2:6:2) end

else if d=0 then { иначе, если дискриминант= 0, то один корень}

begin x1:=-b/(2*a); writeln('x=', x1:6:2) end

else writeln('Корней нет'); {иначе ‘Корней нет’}

readln

End.

Результат:

1 случай:

a, b, c= 1 -2 1

x= 1.00

 

2 случай:

a, b, c= 1 -6 8

x1= 4.00

x2= 2.00

 

3 случай:

a, b, c= 5 1 2

Корней нет

Пример 7.

Вводятся координаты точки. Определить попадает ли точка в заштрихованную область или нет.

 
 

 

 


Точка будет принадлежать заштрихованной области, если она лежит внутри большого круга (x2+y2 <25) И, одновременно,за пределами малого круга (x2+y2>4).

Program pr7;

Var x,y: real;

Begin

Write('введите x y '); readln (x,y); {ввод координат точки}

if (sqr(x)+sqr(y)<25) and (sqr(x)+sqr(y)>4)

then writeln('точка попадает в заштрихованную область')

else writeln('точка не попадает в заштрихованную область');

readln;

End.

Результат:

1 случай:

введите x y 1 1

точка попадает в заштрихованную область

 

2 случай:

введите x y 2 5

точка не попадает в заштрихованную область

Пример 8.

Ввести первую букву времени года и вывести соответствующее название времени года на русском языке.

Program pr8;

Var N: char;

Begin

Writeln ('введи первую букву времени года '); Readln (N);

Case N of

'з' : writeln ('зима');

'в': writeln ('весна');

'л': writeln('лето');

'о': writeln('осень')

End.

Результат:

введи первую букву времени года о

осень

 

ЗАДАНИЯ

 

1. Составить программу расчета значения функции
Z = |3 ех+3 – 2 ln ху| + 1,8х2 + 1 при любых значениях х и у. Результат вывести в виде: при х= … и у=… z=…

2. Составить программу расчета значения функции
Z = tg х3 – |2 sin х2у + 7.8 cos х |+ 10 при любых значениях х и у. Результат вывести в виде: при х= … и у=… z=…

3. Составить программу расчета значения функции
Z = (х4 – 2 ctg х2у2 )/| 8х2 – 5 arctg у| при любых значениях х и у. Результат вывести в виде: при х= … и у=… z=…

4. Составить программу расчета значения функции
Z = tg х5 – 21 ctg ху2 /(18 sin х – 13 cos у + 11) при любых значениях х и у. Результат вывести в виде: при х= … и у=… z=…

5. Составить программу расчета значения функции
Z = (2eх-4 – |sin х2у| )/( 2.1ctg х2 + 10.2) при любых значениях х и у. Результат вывести в виде: при х= … и у=… z=…

6. Вводится вещественное число а. Не пользуясь никакими арифметическими операциями, кроме умножения, получить a4 за две операции.

7. Вводится вещественное число а. Не пользуясь никакими арифметическими операциями, кроме умножения, получить a6 за три операции.

8. Вводится вещественное число а. Не пользуясь никакими арифметическими операциями, кроме умножения, получить a7 за четыре операции.

9. Вводится вещественное число а. Не пользуясь никакими арифметическими операциями, кроме умножения, получить a8 за три операции.

10. Вводится вещественное число а. Не пользуясь никакими арифметическими операциями, кроме умножения, получить a9 за четыре операции.

11. Вводится вещественное число а. Не пользуясь никакими арифметическими операциями, кроме умножения, получить a10 за четыре операции.

12. Вводится вещественное число а. Не пользуясь никакими арифметическими операциями, кроме сложения, получить 6a за три операции.

13. Найти произведение цифр введенного 4-значного числа.

14. Найти сумму цифр введенного 4-значного числа.

15. Определить сумму квадратов цифр введенного 3-значного числа.

16. Введено 3-значное число. Вывести число в зеркальном отображении.

17. Введено 3-значное число. Вывести число в зеркальном отображении

18. Введенное 4-значное число изменить так, чтобы 1 и 4 цифры поменялись местами.

19. Найти среднее арифметическое цифр введенного 3-значного числа.

20. Введено 3-значное число. Поменять местами 1-ю и 3-ю цифры числа.

21. Введенное 4-значное число изменить так, чтобы 1-3 и 2-4 цифры поменялись местами.

22. Найти полусумму цифр введенного 4-значного числа.

23. Определить сумму квадратов цифр введенного 3-значного числа.

24. Введенное 4-значное число изменить так, чтобы 1 и 3 цифры поменялись местами.

25. Введенное 4-значное число изменить так, чтобы 3 и 4 цифры поменялись местами.

26. Введено трехзначное число. Найти сумму четных цифр.

26. Введено четырехзначное число. Содержится ли в его записи цифра 7?

27. Введено четырехзначное число. Найти среднее арифметическое нечетных цифр.

28. Введено трехзначное число. Если в записи числа встречается цифра 5, то записать число в зеркальном отображении.

29. Введено трехзначное число. Если сумма его цифр нечетна, то увеличить число вдвое.

30. Введено четырехзначное число. Найти сумму цифр, кратных 3-м.

31. Вводятся Х и Y. Если хотя бы одно из этих чисел положительно, то найти их произведение. Иначе – найти их сумму.

32. Вводятся Х и Y. Если Х больше Y, то произвести их обмен.

33. Из чисел A, B, C, D выбрать максимальное.

34. Даны три действительных числа. Возвести в квадрат те из них, значения которых неотрицательны.

35. Вводится число. Если оно положительное, то уменьшить его в 10 раз.

36. Вводятся X и Y. Заменить большее из этих чисел разностью большего и меньшего.

37. Определить, принадлежит ли введенное Х интервалу (-10, 15)?

38. Вводится натуральное Х. если оно четное, то уменьшить его вдвое, если нечетное – увеличить на 10.

39. Вводятся X и Y. Заменить меньшее из них суммой этих чисел.

40. Из чисел A, B, C, D выбрать минимальное.

41. Определить, сколько среди заданных чисел A, B, C, D отрицательных.

42. Составить программу, которая по введенной начальной букве выводит название цветов радуги (красный, оранжевый, желтый, зеленый, голубой, синий, фиолетовый).

43. Составить программу, которая по введенному порядковому номеру выводит название дня недели.

44. Составить программу, которая позволяет ввести номер месяца и вывести его название.

45. Составить программу, которая по введенной заглавной букве выводит название столиц мира: Москва, Париж, Лондон, Рим.

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

A - Abs x

S - Sin x

C - Cos x

47. Вводятся координаты точки. Определить попадает ли точка в заштрихованную область или нет.

y
б)
а)

 

       
 
-1
   
x
 

 

 


 

 

г)
в)

 

 

 
 
 

 

 


II. ЦИКЛЫ

операторы:

Оператор Назначение Синтаксис
For Цикл с параметром For <перем>:=<начальное знач> to <кон.знач> do <оператор>; Значение переменной изменяется от начального значения к конечному с шагом 1. For <перем>:=<нач. знач> downto <конеч. знач> do <оператор>; Значение переменной изменяется от начального значения к конечному с шагом -1
While Цикл с предусловием While <условие> do <оператор>; Цикл выполняется, пока условие истинно.
Repeat Until Цикл с постусловием Repeat <Операторы>; Until <условие>; Цикл выполняется, пока условие ложно.

 

Пример 1.

Вывести квадраты первых десяти натуральных чисел.

Program pr1;

Var i, x: integer;

Begin

for i:=1 to 10 do begin {перебираем натуральные числа от 1 до 10}

x:=sqr(i); {возводим очередное число в квадрат}

write(x, ' '); {выводим полученное значение}

end;

readln

End.

Результат

1 4 9 16 25 36 49 64 81 100

Пример 2.

Найти сумму 1 + 1/3 + 1/5 +...(N слагаемых).

Решение:

Program pr2;

Var I, N: integer; S: real;

Begin

Write('N='); Readln(N); {вводим количество слагаемых}

S:=0; {обнуляем сумму}

For I:=1 to N do {добавляем к сумме N слагаемых}

S:=S+1/(2*I-1);

Writeln('S=',S:5:2); {выводим значение суммы с двумя десятичными знаками}

Readln

End.

Результат:

N=4

S= 1.68

Пример 3.

Вычислить произведение (1 + sin2 )*(2 + sin3 )*... (n сомножителей).

Рrogram Pr3;

Var n, i: integer; p: real;

Begin

write('n='); readln(n); p:=1;

for i:=1 to n do

p:=p* (i + sin(i+1));

writeln('p=', p:6:3);

readln

End.

Результат:

n=5

p=131.645

 

Пример 4.

Задана арифметическая прогрессия -21; - 16;… Определить номер первого положительного члена прогрессии.

a – очередной член прогрессии, n – его порядковый номер

Program Pr4;

Var

a, n: integer;

Begin

a:= -21; n:=1; {задаем начальные значения}

while a<=0 do begin {пока очередной член прогрессии меньше либо равен 0,}

a:=a+5; n:=n+1; {вычисляем след. член прогрессии и его порядковый номер}

end;

writeln(‘n=’, n); {выводим номер 1-го положительного члена прогрессии}

readln;

End.

Результат:

n=6

 

Пример 5.

Протабулировать функцию y:=sin(x)*x интервале [-p/2,p/2] с шагом p/10.

Program pr5;

Var x, y: real;

Begin

x:=-pi/2;

while x<=pi/2 do begin

y:=sin(x)*x; writeln('x=',x:8:2,' y=',y:8:2); x:=x+pi/10

end;

End.

 

Пример 6.

Подсчитать количество двузначных чисел, у которых сумма цифр нечетна.

Program Pr6;

Var n, a, b, k: integer;

Begin

k:=0; for n:=10 to 99 do begin

a:= n div 10; b:=n mod 10;

if (a+b) mod 2=1 then k:=k+1;

end;

writeln('k=',k)

end.

 

Пример 7

Рассчитать период (в месяцах) роста банковского вклада в mраз при известной ежемесячной процентной ставке pr (1% соответствует pr=1).

Program Pr7;

Var pr,m,s,s0: real;

N: integer;

Begin

Repeat

Write (‘Введи проценты по вкладу:’); readln(pr);

Write (‘Введи коэффициент роста вклада:’); readln (m)

Until (m>1) and (pr>0); {проверка вводимых данных}

N:=0; {счетчик месяцев}

s0:=1000; {начальная сумма вклада – произвольно}

s:=s0; {текущая сумма вклада}

Repeat {перебор по месяцам}

s:=s*(1+pr/100); inc(N)

Until s/s0>=m;

WriteLn (‘количество месяцев вклада:’,N);

ReadLn

End.

 

ЗАДАНИЯ

1. Дано натуральное число n. Вычислить 21+22+…+2n .

2. Дано натуральное число n. Вычислить n! ( )

3. Дано натуральное число n. Вычислить .

4. Дано натуральное число n и действительно число х. Вычислить .

5. Даны натуральные числа а, n. Вычислить .

6. Найти произведение: Р = (1 + х)·(3+2х)·(5+3х)·... . (n множителей)

7. Задана арифметическая прогрессия. 7,6; 6,3; … . Сколько членов прогрессии нужно сложить, чтобы полученная сумма стала <0.

8. Задана арифметическая прогрессия 2; 2,8; … . Сколько членов прогрессии нужно сложить, чтобы полученная сумма стала >20.

9. Задана арифметическая прогрессия. 7,1; 5,3; … . Сколько членов прогрессии нужно сложить, чтобы полученная сумма стала <0.

10. Задана арифметическая прогрессия. 8,4; 6,2 … . Сколько членов прогрессии нужно сложить, чтобы полученная сумма стала <0.

11. Задана арифметическая прогрессия. 2; 3,8; ... . Сколько членов прогрессии нужно сложить, чтобы полученная сумма стала >30.

12. Подсчитать количество и сумму четных трехзначных чисел.

13. Подсчитать сумму двухзначных чисел, сумма цифр которых не превышает 7.

14. Подсчитать количество двузначных чисел, кратных 3.

15.Подсчитать сумму двузначных чисел, сумма цифр которых не превышает 10.

16. Подсчитать количество и сумму трехзначных чисел, кратных 3.

17. Подсчитать количество и сумму четных трехзначных чисел.

18. Протабулировать функцию y=x3-1 на интервале [-1,3] с шагом 0.2.

19. Протабулировать функцию y=x2-1/x на интервале [1,2] с шагом 0.05.

20. Протабулировать функцию y= sin x – cos x на интервале [-p,p] с шагом p/10.

21. Протабулировать функцию y= cos(x)*x на интервале [-p,p] с шагом p/10.

22. Протабулировать функцию y=sin2x на интервале [0,p] с шагом p/20.

23. Протабулировать функцию y= cos x2+sin x2 на интервале [-p/2,p/2] с шагом p/10.

24. Дано натуральное число n. Найти сумму S=1-1/5+1/9-1/13+… . (n слагаемых)

25. Дано натуральное число n. Найти сумму S=1-3+5-… . (n слагаемых)

26. Торговая фирма в первый день работы реализовала товаров на P тыс. руб., а затем ежедневно увеличивала выручку на 3%. Какой будет выручка фирмы в тот день, когда она впервые превысит заданное значение Q? Сколько дней придется торговать фирме для достижения этого результата?

27. Малое предприятие в первый день работы выпустило P единиц товарной продукции. Каждый последующий день оно выпускало продукции на Q единиц больше, чем в предыдущий. Сколько дней потребуется предприятию, чтобы общее количество выпущенной продукции за все время работы впервые превысило запланированный объем?

28. Составить программу расчета роста по месяцам в течение полутора лет банковского вклада. Программа запрашивает с защитой от неверного ввода данных следующую информацию:

- начальный размер вклада ( 1000…10000 ),
- размер периодических платежей (от 1% до 10% от начального вклада),
- размер процентной ставки по вкладу (0.5% … 4% в месяц ).

Вывести таблицу роста вклада по месяцам, в которую включить дополнительный столбец роста вклада в предположении отсутствия периодических платежей.

29. Составить программу расчета роста по месяцам в течение одного года банковского вклада. Программа запрашивает с защитой от неверного ввода данных следующую информацию:

- начальный размер вклада ( 2000…20000 ),
- размер процентной ставки по вкладу (1% … 3% в месяц ),
- размер периодических платежей (от 2% до 7% от начального вклада).

Вывести таблицу роста вклада по месяцам, а также определить количества месяцев, необходимые для роста вклада в полтора и в два раза.

30. Составить программу расчета роста по месяцам банковского вклада.
Программа запрашивает с защитой от неверного ввода данных следующую информацию:

- начальный размер вклада ( 3000…30000 ),
- размер процентной ставки по вкладу (1% … 4% в месяц ),
- размер периодических платежей (от 3% до 7% от начального вклада),
- количество месяцев, в течение которого проводится расчет (от 3 до 36).

Вывести таблицу роста вклада по месяцам, а также определить количество месяцев, необходимое для роста размера начального вклада на 70 %.

31. Составить программу расчета роста по месяцам в течение двух лет банковского вклада. Программа запрашивает с защитой от неверного ввода данных следующую информацию:

- начальный размер вклада ( 4000…20000 ),
- размер периодических платежей (от 4% до 10% от начального вклада),
- размер процентной ставки по вкладу (0.4% … 4%).

Вывести таблицу роста вклада по месяцам, в которую включить дополнительный столбец роста вклада в предположении отсутствия периодических платежей.

32. Составить программу расчета роста по месяцам в течение двух лет банковского вклада. Программа запрашивает с защитой от неверного ввода данных следующую информацию:

- начальный размер вклада ( 2000…20000 ),
- размер процентной ставки по вкладу (1.5% … 5%),
- размер периодических платежей (от 0.5% до 5% от начального вклада).

Вывести таблицу роста вклада по месяцам, а также определить количества месяцев, необходимые для роста начальной суммы вклада на 50%.

33. Составить программу расчета роста по месяцам банковского вклада.
Программа запрашивает с защитой от неверного ввода данных следующую информацию:

- начальный размер вклада ( 1000…100000 ),
- размер процентной ставки по вкладу (1% … 10%),
- размер периодических платежей (от 6% до 10% от начального вклада),
- количество месяцев, в течение которого проводится расчет (от 6 до 24).

Вывести таблицу роста вклада по месяцам, а также определить количество месяцев, необходимое для роста размера начального вклада на 60 %.

34. Составить программу расчета роста по месяцам в течение года банковского вклада. Программа запрашивает с защитой от неверного ввода данных следующую информацию:

- начальный размер вклада ( 500…10000 ),
- размер периодических платежей (от 1% до 10% от начального вклада),
- размер процентной ставки по вкладу (0.5% … 4% в месяц ).

Вывести таблицу роста вклада по месяцам, в которую включить дополнительный столбец роста вклада в предположении отсутствия периодических платежей.

35. Составить программу расчета роста по месяцам в течение одного года банковского вклада. Программа запрашивает с защитой от неверного ввода данных следующую информацию:

- начальный размер вклада ( 100…20000 ),
- размер процентной ставки по вкладу (1% … 13% в месяц ),
- размер периодических платежей (от 2% до 7% от начального вклада).

Вывести таблицу роста вклада по месяцам, а также определить количества месяцев, необходимые для роста вклада в полтора и в два раза.

 

III. ПРОЦЕДУРЫ И ФУНКЦИИ ПОЛЬЗОВАТЕЛЯ

 

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

Структура процедуры:

Procedure <имя_процедуры>(<параметры>); -заголовок процедуры

Label <метки>;

Const <константы>; раздел объявления меток, констант, типов данных,

Type <типы данных>; переменных (может отсутствовать)

Var <переменные>;

Begin

<операторы > - тело процедуры

End;

Параметры, указанные в заголовке процедуры называются формальными. Вызов процедуры осуществляется из основной программы указанием ее имени. При вызове процедуры формальные параметры заменяются фактическими. Количество и тип формальных и фактических параметров должны совпадать. Для передачи исходных данных в процедуру используются параметры-значения. Фактические параметры-значения могут быть константами, переменными, выражениями. Полученный в процедуре результат передается в основную программу с помощью параметров-переменных. В заголовке описания процедуры перед параметрами-переменными пишется Var.

Структура функции:

Function <имя_функции>(<параметры>) : <тип результата>;

Label <метки>;

Const <константы>; раздел объявления меток, констант, типов данных,

Type <типы данных>; переменных (может отсутствовать)

Var <переменные>;

Begin

<операторы, составляющие тело функции>;

End;

Для того, чтобы значение функции было определено и передано в основную программу, в теле функции обязательно должен быть хотя бы один оператор присваивания вида: <имя_функции>:=<значение>.

 

Пример 1.

Создать функцию пользователя, вычисляющую х!

Program pr1;

Function Fact(x: integer): real; {описание функции пользователя}

Var

i: integer; f: real;

begin

f:=1; for i:=1 to x do f:=f*i; {вычисляем произведение}

Fact:=f; {имени функции присваиваем полученное значение}

end;

Var

x: integer; y: real;

BEGIN {основная программа}

Write (‘x=’); Readln(x); {ввод значения х}

y:=Fact(x); {вызов функции с аргументом х }

Writeln(‘y=’, y:4:0); {вывод результата}

Readln;

END.

Результат:

x= 4

y= 24

 

Пример 2.

Два треугольника длинами своих сторон. Определить, площадь какого из них больше (создать функцию для вычисления площади треугольника по длинам его сторон).

Для решения задачи используем формулу Герона , где x, y, z – стороны треугольника, p – полупериметр)

Program pr2;

Function PlTr(x ,y, z: real): real; {описание функции пользователя}

Var

p: real;

Begin

p:= (x + y + z)/2; {полупериметр треугольника}

PlTr:=Sqrt(p*(p-x)*(p-y)*(p-z));

End;

Var

a1, b1, с1, s1, a2, b2, с2, s2: real;

BEGIN {основная программа}

{ввод исходных данных}

Write('Cтороны 1-го треугольника:'); Readln(a1, b1, c1);

Write('Cтороны 2-го треугольника:'); Readln(a2, b2, c2);

S1:=PlTr(a1, b1, c1); { вычисление площади 1-го треугольника}

S2:=PlTr(a2, b2, c2); {вычисление площади 2-го треугольника}

if S1>S2 then Writeln(‘S1>S2’) else

if S1<S2 then Writeln(‘S1<S2’) else Writeln(‘S1=S2’);

Readln;

END.

Результат:

Cтороны 1-го треугольника:3 4 5

Cтороны 1-го треугольника:6 7 8

S1<S2

 

Пример 3.

Составить функцию для вычисления xn, где x,n – целые числа

Степень принимает отрицательное значение, если основание степени Х<0 и показатель степени –нечетное число.

Program Pr3;

Function stepen(x,n:integer):real; {описание функции пользователя}

begin

if (n mod 2 <> 0) and (x<0) then stepen:=-exp(n*ln(abs(x)))

else stepen:=exp(n*ln(abs(x)));

end;

Var

x,n:integer;

BEGIN

write('x,n='); readln(x,n); {ввод исходных данных}

write('stepen=',stepen(x,n):6:2); {вызов функции и вывод ее значения}

readln;

END.

Результат:

1 случай

x,n=2 3

stepen= 8.00

2 случай

x,n=-2 3

stepen= -8.00

3 случай

x,n=2 -2

stepen= 0.25

4 случай

x,n=-2 -2

stepen= 0.25

 

Пример 4.

Вычислить, используя функцию нахождения знаменателя:

(n слагаемых)

Program pr4;

Function Fakt(x: integer): real; {функция вычисления факториала}

Var

i: integer; f: real;

begin

f:=1; for i:=1 to x do f:=f*i;

Fakt:=f;

end;

Var s: real; i, n: integer;

Begin

write('n= '); Readln(n); {вводим количество слагаемых суммы}

s:=0;

For i:=1 to n do {перебираем i от 1 до n}

s:=s+i/Fakt(i+1); {добавляем к сумме очередную дробь, вызывая}

{ функцию для вычисления знаменателя}

writeln('s=',s:6:4); {вывод результата}

Readln;

end.

Результат:

n=3

s=0.9583

 

Пример 5.

Создать процедуру для вычисления периметра и площади прямоугольного треугольника по его катетам a, b.

Program pr5;

Procedure Treug(a,b: real; Var p, s: real); {описание процедуры}

{a, b- входные данные(параметры-значения), p, s-выходные данные (параметры-переменные)}

Begin

p:= a + b + Sgrt(a*a + b*b); {периметр треугольника с катетами a, b}

s:= a*b/2; { площадь треугольника с катетами a, b }

End;

Var

a, b, p, s: real; { a, b- катеты, p - периметр, s - площадь }

BEGIN {основная программа}

Write('a, b =');Readln(a, b); {ввод исходных данных}

Treug(a, b, p, s); {вызов процедуры и передача исходных данных a, b}

Writeln('p=', p:4:1, ‘s=’, s:4:1); {вывод результата, полученного из процедуры}

Readln;

END.

Результат:

a, b= 3 4

p=12.0 s= 6.0

 

Пример 6.

Создать процедуру, определяющую возможность построения треугольника со сторонами x, y, z. Из чисел a,b,c,d выбрать тройки таких, которые позволяют построить треугольник.

Для решения задачи используется «правило треугольника»: каждая сторона треугольника меньше суммы двух других сторон.

Program pr6;

Procedure Treug(x, y, z: integer); {описание процедуры}

Begin

if (x<y+z) and (y<x+z) and (z<x+y)

then writeln(‘Треугольник со сторонами ‘, x, ‘,’, y, ‘,’, z, ’можно построить’)

else writeln(‘Треугольник со сторонами ’, x, ‘,’, y, ‘,’, z, ‘нельзя построить ‘)

End;

Var

a,b,c,d: integer;

BEGIN {основная программа}

Write('Введите a b c d: '); Readln(a,b,c,d); {ввод исходных данных}

Treug(a,b,c);{вызов процедуры для треугольника со сторонами a,b,c}

Treug(a,b,d); );{вызов процедуры для треугольника со сторонами a,b,d}

Treug(a,c,d); );{вызов процедуры для треугольника со a,c,d}

Treug(b,c,d); );{вызов процедуры для треугольника со сторонами b,c,d}

Readln;

END.

Результат:

Введите a b c d: 1 3 4 5

Треугольник со сторонами 1,3,4 нельзя построить

Треугольник со сторонами 1,3,5 нельзя построить

Треугольник со сторонами 1,4,5 нельзя построить

Треугольник со сторонами 3,4,5 можно построить

Пример 7.

Упорядочить по возрастанию числа A, B, C, создав процедуру обмена значениями 2-х переменных.

Program pr7;

Procedure Obmen(Var X,Y:real); {X,Y - и входные, и выходные данные}

Var

T: real; { T –вспомогательная переменная}

Begin

T:=X;

X:=Y;

Y:=T;

End;

Var

A, B, C: real;

BEGIN {основная программа}

Write('A, B, C ='); Readln(A,B,C); {ввод исходных данных}

If A>B then Obmen(A,B); {если A больше B, то производим их обмен}

If A>C then Obmen(A,C); {если A больше С, то производим их обмен}

If B>C then Obmen(B,C); {если В больше С, то производим их обмен}

Writeln('A=', A:5:2,' B=', B:5:2,' C=', C:5:2); {вывод результата}

Readln;

END.

Результат:

A, B, C = 6 18 3

A= 3.00 B= 6.00 C= 18.00

 

Пример 8.

Создать процедуру для вывода первых N членов арифметической прогрессии, заданной значением первого члена а и разностью d. Вывести первые 7 членов прогрессии 2, 5, … (a=2, d=3) и первые 10 членов прогрессии 20, 19, ….(a=20, d= -1)

Program pr8;

Procedure progres(a,d,n:integer); {описание процедуры}

Var

i: integer; {i – номер очередного члена прогрессии }

Begin

for i:=1 to n do {перебираем i от 1 до n}

begin

write(a,' '); {выводим очередной член прогрессии}

a:=a+d; {вычисляем следующий член прогрессии}

end;

End;

BEGIN {основная программа}

progres(2,3,7); {вызов процедуры для вывода 7 членов прогрессии 2, 5,…}

writeln;

progres(20,-1,10); {вызов процедуры для вывода 10 членов прогрессии 20,19,…}

Readln;

END.

Результат:

2 5 8 11 14 17 20

20 19 18 17 16 15 14 13 12 11

 

 

ЗАДАНИЯ

 

1. Создать процедуру для вычисления периметра и площади квадрата по длине его стороны.

2. Создать процедуру для вычисления объема и площади поверхности куба по длине его ребра.

3. Создать процедуру для вычисления длины окружности и площади круга по заданному значению радиуса. ( L= 2pR, S=pR2)

4. Создать процедуру для вычисления периметра и площади прямоугольника по длинам его сторон.

5. Создать процедуру для нахождения корней квадратного уравнения по его коэффициентам a,b,c.

6. Вводятся A, B, C, D. Поменять местами A и C, B и D, создав процедуру обмена значениями 2-х переменных.

7. Создать процедуру для вывода первых N членов арифметической прогрессии, заданной первым членом а и разностью d. С помощью этой процедуры вывести 8 первых членов прогрессии 1, 4, … и 10 первых членов прогрессии 24, 22, ….

8. Создать процедуру для вывода первых N членов арифметической прогрессии, заданной первым членом а и разностью d. С помощью этой процедуры вывести 5 первых членов прогрессии 3, 7, … и 7 первых членов прогрессии 14, 11, ….

9. Создать процедуру для вывода первых N членов арифметической прогрессии, заданной первым членом а и разностью d. С помощью этой процедуры вывести 7 первых членов прогрессии 12, 10, … и 9 первых членов прогрессии 2, 5, ….

10. Создать процедуру для вывода и нахождения суммы первых N членов арифметической прогрессии, заданной формулой an=2n+1.

11. Создать процедуру для вывода и нахождения суммы первых N членов арифметической прогрессии, заданной формулой an=3n-2.

12. Создать процедуру для вывода и нахождения суммы первых N членов арифметической прогрессии, заданной формулой an=5n-3.

13. Создать процедуру для вывода и нахождения суммы первых N членов арифметической прогрессии, заданной формулой an=4n-1.

14. Определить, какие из целых чисел от -3 до 8 являются решениями неравенства (x-5)(x+1)>0 (создать процедуру, определяющую является или не является данное целое число решением неравенства (x-5)(x+1)>0)

15. Определить, какие из целых чисел от -10 до 2 являются решениями неравенства (x+4)(x+1)<0 (создать процедуру, определяющую является или не является данное целое число решением неравенства (x+4)(x+1)<0)

16. Создать процедуру для вывода и подсчета суммы последовательных целых чисел от a до b. С помощью этой процедуры вывести и найти сумму целых чисел: 1) от 10 до 20; 2) от -5 до 15.

17. Создать процедуру для вывода таблицы значений функции y=sin 3x + 1 для х от a до b с шагом h. Вывести две таблицы: а) для х от 1 до 2 с шагом 0.1 и б) для х от 5 до 10 с шагом 0.5

18. Создать процедуру для вывода таблицы значений функции y=tg x + 1/x для х от a до b с шагом h. Вывести две таблицы: а) для х от 2 до 4 с шагом 0.2 и б) для х от 1 до 10 с шагом 0.5

19. Создать процедуру для вывода таблицы значений функции y= 3x2 + 1 для х от a до b с шагом h. Вывести две таблицы: а) для х от 1 до 2 с шагом 0.1 и б) для х от 2 до 5 с шагом 0.5

20. Создать процедуру для вывода таблицы значений функции y=sin (x + 1)2для х от a до b с шагом h. Вывести две таблицы: а) для х от 2 до 3 с шагом 0.1 и б) для х от -2 до 3 с шагом 0.5

21. Найти минимальное из A, B, C, создав функцию выбора минимального из двух произвольных чисел.

22. Найти максимальное из чисел A, B, C, D, создав процедуру выбора максимального из 2-х произвольных чисел.

23. Сократить дробь вида a/b (a, b – вводимые натуральные числа), создав функцию для нахождения наибольшего общего делителя двух натуральных чисел.

24. Найти наибольший общий делитель чисел A, B, C, создав функцию для нахождения НОД двух натуральных чисел.

25. Два прямоугольных треугольника заданы своими катетами. Определить, у какого из них площадь больше (создать функцию для вычисления площади прямоугольного треугольника по его катетам).

26. Два прямоугольника заданы координатами вершин. Определить, площадь какого из них больше (использовать функцию нахождения площади прямоугольника).

27. Два прямоугольных треугольника заданы своими катетами. Определить, у какого из них периметр больше (создать функцию для вычисления периметра прямоугольного треугольника по его катетам).

28. Вводятся 2 натуральных числа. Найти среднее арифметическое цифр каждого из них (создать функцию для нахождения среднего арифметического цифр произвольного натурального числа).

29. Вводятся 3 натуральных числа. Найти сумму цифр каждого из них (создать функцию для нахождения суммы цифр произвольного натурального числа).

30. Вычислить 3-2 + 42 +5-2, создав функцию для вычисления степени.

31. Вычислить (-32 + 24 )/4-2, создав функцию для вычисления степени.

32. Найти (a! + b!)/(a+b)!, создав функцию для вычисления факториала произвольного натурального числа.

33. Найти m! + (m+n)!, создав функцию для вычисления факториала произвольного натурального числа.

34. Вычислить, используя функцию нахождения знаменателя:

(15 слагаемых)

35. Вычислить, используя функцию нахождения знаменателя:

... (n слагаемых)

36. Вычислить, используя функцию нахождения знаменателя:

(n слаг.)

37. Вычислить, используя функцию нахождения знаменателя:

(15 слаг)

38. Вычислить, используя функцию нахождения знаменателя:

... (n слагаемых)

39. Вычислить, используя функцию нахождения знаменателя:

(n слаг.)

40. Вычислить, используя функцию нахождения знаменателя:

(15 слаг)

 

 

IV. МАССИВЫ

 

Массив – это структурированный тип данных (структурированный тип данных определяет упорядоченную совокупность скалярных переменных и характеризуется типом своих компонентов), состоящий из фиксированного числа элементов, имеющих один и тот же тип. Тип элементов массива называется базовым. Число элементов массива фиксируется при описании и в процессе выполнения программы не меняется. Доступ к элементам массива осуществляется путем индексирования элементов массива. Тип индекса определяет границы изменения индекса. Для описания массива предназначено словосочетание array of (массив из).

Описание типа

Type <имя типа>=array [<тип индекса>] of <тип компонента>;

Var <идентификатор, …> : <имя типа>;

Описание может быть и без представления типа в разделе type:

Var <идентификатор>:array[<тип индекса>] of <тип компонента>;

Примеры описаний массивов:

Type

Vektor =array [1..7] of integer;

Massiv =array [1..20] of real;

Var

А,B:vector; X: massiv;

То же в другом формате:

Var А, B : array [1..7] of integer;

X: array [1..20] of real;

Над всем массивом можно выполнять действия A=B, A<>B, A:=B.

Присваивать можно только массивы одинаковых типов. Обращение к отдельному элементу массива производится при помощи указания имени всего массива и в квадратных скобках – индекса конкретного элемента. Например: X[10] - элемент массива X с индексом 10.

Структура данных в языке Паскаль для хранения табличных данных называется двумерным массивом. Описать такой массив можно двумя способами:
Var
A: Array[1..20] of Array [1..30] of Integer;
или
Var
A : Array [1..20,1..30] Of Integer;

В обоих случаях описан двумерный массив, соответствующий таблице, состоящей из 20 строк и 30 столбцов. Отдельный элемент двумерного массива адресуется двумя индексами. Например, элемент, находящаяся в 5-й строке и 6-м столбце будет обозначаться A[5,6].

 

Пример1.

Сформировать массив из 20 целых чисел, вводимых с клавиатуры, и вывести элементы массива в обратном порядке.

Program PR1;

Var

A : Array [1..20] Of Integer; I : Integer;

BEGIN

For I:=1 To 20 Do {в цикле перебираем индексы элементов массива}
Readln(A[I]); { вводим очередной элемент массива с клавиатуры }
For I:=20 Downto 1 Do {Распечатываем массив в обратном порядке}
Write(A[I],' ')

END.

Для учебных целей удобнее использовать массивы, сформированные с помощью генератора случайных чисел. В языке Паскаль случайные числа, равномерно расположенные в интервале от 0 до 1, формирует функция Random. Для получения целых случайных чисел от 0 до N следует использовать функцию Random(N+1). Чтобы выбрать целое случайное число из интервала [a, b] можно применить выражение Random(b-a+1)+a.

Пример 2.

Сформировать и распечатать массив из 20 целых случайных чисел от 10 до 100. Найти сумму элементов массива.

Program pr2;

Var

A : Array [1..20] Of Integer; I, S : Integer;

BEGIN

S:=0; {обнуляем значение суммы}

For I:=1 To N Do begin

A[I]:= Random(101)-50; {формирование элементов массива}

Write(A[I],' '); {вывод массива}

S:=S+A[I]; {суммирование элементов массива}

end

END.

 

Пример 3.

В массиве хранятся цены на 10 видов мороженого. С помощью датчика случайных чисел заполнить массив целыми значениями, лежащими в диапазоне от 3 до 20 включительно. Определить порядковый номер самого дорогого мороженого.

Program pr3;

Var A:array[1..10] of integer;

i, n, m: integer; {m- максимальный элемент, n- его порядковый номер}

BEGIN

for i:=1 to 10 do begin {формирование и вывод элементов массива}

a[i]:=random(18)+3; write(a[i],' ');

end; writeln;

m:=a[1]; n:=1; {выбираем 1-й элемент в качестве максимального }

for i:=2 to 10 do {перебираем все элементы массива, начиная со 2-го}

if a[i]>m then begin m:=a[i]; n:=i end; {запоминаем наибольший и его индекс}

write('n=',n)

END.

 

Пример 4.

Сформировать массивы A и B, содержащие по 10 целых случайных чисел. Найти сумму элементов каждого массива (cоздать процедуру для формирования массива и определения суммы его элементов).

Program pr4;

Type massiv=array[1..10] of integer;

{процедура, формирующая массив и определяющая сумму его элементов}

Procedure SumMas(Var z: massiv; Var Sz: integer);

Var

i: integer;

Begin

Sz:=0; for i:=1 to 4 do begin

z[i]:=random(20); write(z[i]:4);

Sz:=Sz+z[i];

end;

End;

Var

a, b :massiv;

Sа, Sb: integer;{Sа- сумма элементов массива а, Sb – сумма элементов массива b}

BEGIN {основная программа}

Write(‘Массив A:’); SumMas(a,Sa); writeln;

Writeln(‘Cумма элементов массива A =’, Sa);

Write((‘Массив B:’); SumMas(b,Sb); writeln;

Writeln(' Cумма элементов массива B =',Sb);

Readln;

END.

 

Пример 5.

Задан массив A[1..10]. Сформировать два массива, включая в первый четные элементы исходного массива, а во второй - нечетные.

Program Pr5;

Const n=10;

Var a, x, y: array[1..n] of integer;

i, k, m: integer; {k- количество элементов массива X, m- количество элементов массива Y}

BEGIN

randomize;

writeln('Массив А:');

for i:=1 to n do begin {формирование и вывод элементов массива A}

a[i] := random(51); Write(a[i]:4);

end;

writeln; k:=0; m:=0;

for i:=1 to n do

{если очередной элемент массива А четный, то заносим его в массив Х, иначе - в массив Y}

if a[i] mod 2=0 then begin k:=k+1; x[k]:=a[i]; end

else begin m:=m+1; y[m]:=a[i]; end;

writeln('Массив X'); for i:=1 to k do write(x[i]:4); {вывод массива Х}

writeln; writeln('Массив Y'); for i:=1 to m do write(y[i]:4); {вывод массива Y}

END.

Пример 6.

Найти сумму элементов целочисленной матрицы размером N*M.

Program pr6;

Const n=2; m=5; {n- количество строк, m- количество столбцов}

Var Mt: array [1..n,1..m] of integer;

J, S, I: integer;

BEGIN

Writeln (‘введи элементы матрицы по строкам’);

For I:=1 to n do {ввод элементов матрицы}

For j:=1 to m do begin

Write ('Mt [', I, ’,’ , j, ']= '); Readln (Mt[i,j]);

End;

S:=0; For I:=1 to n do {нахождение суммы элементов матрицы}

For j:=1 to m do

S:=S+Mt[i,j];

Writeln (‘сумма = ’, S);

END.

 

Пример 7.

В массиве A[1..5,1..5] найти сумму элементов главной диагонали, кратных 5.

Program p7;

Var a: array[1..5,1..5] of integer;

i, j, s: integer;

BEGIN

randomize; for i:=1 to 5 do begin {формируем и выводим таблицу}

for j:=1 to 5 do begin

a[i,j]:=random(80); write(a[i,j],' ');

end; writeln;

end;

s:=0; for i:=1 to 5 do {перебираем построчно элементы массива}

for j:=1 to 5 do

{если элемент находится на главной диагонали и кратен 5, то суммируем }

if (i=j) and (a[i,j] mod 5=0) then s:=s+a[i,j];

writeln('s=',s)

END.

 

Пример 8

В двумерном массиве хранится информация о количестве студентов в каждой из трех групп каждого курса с первого по пятый (в 1-ой строке – информация о первом курсе, во 2-ой строке – о втором курсе и т. д.). Найти численность самой большой группы на 3 курсе. На каком курсе больше студентов, на первом или на пятом?

Program pr8;

Var a: array[1..5,1..3] of integer;

i, j, m, s1, s5: integer;

BEGIN

randomize; {формируем и выводим таблицу}

for i:=1 to 5 do

for j:=1 to 3 do begin

a[i,j]:=random(10)+20; write(a[i,j],' ');

end;

writeln

end;

m:=a[3,1];for i:=1 to 3 do {находим наибольший элемент в 3-ей строке}

if a[3, i]>m then m:=a[3,i];

writeln('численность самой большой группы на третьем курсе ', m);

{находим сумму элементов 1-й строки и сумму элементов 5-й строки}

For j:=1 to 3 do begin

s1:=s1+a[1,i]; s5:=s5+a[5,i]

end;

{сравниваем количество студентов на 1-м и на 5-м курсах}

if s1>s5 then writeln('студентов больше на 1 курсе')

else if s1<s5 then writeln('студентов больше на 5 курсе')

else writeln('количество студентов на 5-м и на 1-м курсах равно')

END.

ЗАДАНИЯ

1. Сформировать массив из 15 целых чисел, выбранных случайным образом из интервала [-10, 30]. Найти среднее арифметическое положительных элементов.

2. Сформировать массив из 10 целых чисел, выбранных случайным образом из интервала [10, 50]. Найти максимальный среди элементов с четными индексами.

3. Сформировать массив из 15 целых чисел, выбранных случайным образом из интервала [10, 90]. Поменять местами первый и минимальный элементы.

4. Задан одномерный массив А[1..20]. Найти минимальный элемент среди элементов массива с n-го по k-й (n и k вводятся с клавиатуры)

5. В заданном массиве найти среднее арифметическое положи­тельных чисел, среднее арифметическое отрицательных чисел и число нулей.

6. В заданном массиве найти максимальный элемент. Элементы, стоящие после максимального элемента заменить нулями.

7. В заданном массиве поменять местами наибольший и наименьший элементы.

8. Дан массив из n чисел как положительных, так и отрицательных. Нужно сначала записать положительные числа, а затем отрицательные в том же порядке, как они были записаны в исходном массиве.

9. Задан одномерный массив A[1..20]. Просуммировать все отрицательные элементы, стоящие на нечетных местах.

10. Задан одномерный массив А[1..15]. Определить сумму четных положительных элементов массива с n-го по k-й.

11. Задан одномерный массив А[1..20]. Просуммировать все неотрицательные элементы, стоящие на четных местах.

12. Задан массив размером K[1..10]. Сформировать два массива, включая в первый четные элементы исходного массива с нечетными индексами, а во второй нечетные элементы с четными индексами.

13. Задан одномерный массив А[1..20]. Найти максимальный элемент среди элементов, стоящих на четных позициях.

14. В массиве хранятся цены на 15 видов товаров. С помощью датчика случайных чисел заполнить массив целыми значениями, лежащими в диапазоне от 20 до 300 включительно. Определить цену самого дешевого товара и его порядковый номер.

15. В массиве хранятся цены на 20 видов товаров. С помощью датчика случайных чисел заполнить массив целыми значениями, лежащими в диапазоне от 50 до 700 включительно. Определить цену самого дешевого и самого дорогого товаров.

16. В массиве хранятся сведения об общей стоимости товаров, проданных фирмой за каждый день марта. Определить дни, в которые стоимость проданных товаров превысила среднюю ежедневную сумму продаж.

17. В массиве хранятся сведения об общей стоимости товаров, проданных фирмой за каждый день марта. Определить дни, в которые стоимость проданных товаров превысила значение S.

18. В массиве хранится информация о стоимости каждой из 50 марок легковых автомобилей. Определить, сколько стоит самый дешевый автомобиль.

19. В одномерном массиве хранится информация о зарплате 15 человек, работающих в отделе. Составить программу для определения: а) итоговой суммы по всему отделу; б) порядкового номера человека, получившего наименьшую зарплату; в) средней зарплаты по отделу.

20. В одномерном массиве хранятся сведения о стоимости товаров, проданных фирмой за каждый месяц года. Определить: а) общую сумму продаж за год; б) номера месяцев, когда сумма продаж превысила среднюю за год; в) в каком полугодии работа фирмы была более эффективна.

21. В одномерном массиве хранится информация о прибыли каждого их 8 магазинов фирмы «Луч» за месяц. Определить: а) общую прибыль фирмы; б)номера магазинов с максимальной и минимальной прибылью; в) среднее значение прибыли.

22. В одномерном массиве хранится информация о коммунальных платежах каждой из семей 20-квартирного дома за месяц. Определить: а) общую сумму платежей; б) номера квартир, которые не оплатили коммунальные услуги; в) номера квартир, платежи которых превысили заданное значение.

23. В одномерном массиве хранится информация о отчислениях на развитие предприятия за каждый месяц года. Определить: а) общую сумму отчислений; б) номера месяцев, когда отчислений не было; в) номера месяцев, когда сумма отчислений была максимальной.

24. В одномерном массиве хранится информация об отчислениях на благотворительность каждой из 15 фирм. Определить: а) общую сумму отчислений; б) номера фирм, которые перечислили сумму выше средней; в) номера фирм, перечисливших минимальную сумму.

25. В одномерном массиве хранится информация о ценах на 20 видов товаров. Определить: а) цену самого дешевого товара и его порядковый номер; б) цену самого дорогого товара и его порядковый номер; в) номера товаров, цена которых превышает среднее значение;

26. В двухмерном массиве хранится информация о количестве учеников в каждом классе каждой параллели школы с первой по одиннадцатую (в первой строке – информация о классах первой параллели, во второй – второй параллели и т.д.). В каждой параллели школы имеются 4 класса. Определить: а) общее число учеников в параллели 5-х классов; б) самый большой по наполняемости класс в параллели 9-х классов и его порядковый номер.

27. В двухмерном массиве хранится информация о зарплате 10 человек за каждый месяц года (первого человека — в первой строке, второго — во второй и т.д.). Составить программу для: а) расчета общей зарплаты, полученной за год любым человеком; б) порядкового номера человека, получившего наименьшую зарплату в марте.

28. Составить программу нахождения минимального элемента в каждом столбце и максимального в каждой строке квадратной матрицы.

29. Фирма имеет 10 магазинов. Информация о доходе каждого магазина за каждый месяц года хранится в двухмерном массиве (первого магазина — в первой строке, второго — во второй и т.д.). Составить программу для: а) расчета среднемесячного дохода любого магазина; б) определения номера месяца, за который выручка в 6 магазине была максимальной.

30. В двухмерном массиве хранится информация о количестве студентов в той или иной группе каждого курса института с первого по пятый (в первом столбце — информация о группах первого курса, во втором — второго и т.д.). На каждом курсе имеется 8 групп. Определить: а) среднее число студентов в одной группе на третьем курсе; б) количество студентов в самой большой группе на 1 курсе.

31. В двухмерном массиве хранится информация о зарплате 8 человек за каждый месяц года (в первом столбце — зарплата за январь, во втором — за февраль и т.д.). Составить программу для: а) расчета средней зарплаты за любой месяц; б) определения номера месяца, в котором пятый человек получил минимальную зарплату.

32. Информация о количестве жильцов в каждой из четырех квартир каждого этажа 12-этажного дома хранится в двухмерном массиве (в первой строке — информация о квартирах первого этажа, во второй — второго и т.д.). На каком этаже проживает больше людей: на третьем или на пятом?

33. В двухмерном массиве хранится информация о зарплате каждого из 20 сотрудников фирмы за каждый месяц года (в первом столбце — за январь, во втором — за февраль и т.д.). Верно ли, что общая зарплата всех сотрудников в феврале была меньше, чем в октябре?

34. В двухмерном массиве хранится информация о количестве учеников в каждом из четырех классов каждой параллели школы с первой по одиннадцатую (в первой строке — информация о первых классах, во второй — вторых и т.д.). Найти численность самого большого класса среди 10-х и 11-х.

35. Информация о количестве жильцов в каждой из четырех квартир каждого этажа 12-этажного дома хранится в двухмерном массиве (в первой строке — информация о квартирах первого этажа, во второй — второго и т.д.). В каждой квартире проживает одна семья. Найти численность самой большой семьи в квартирах 3-го и 4-го этажей.

36. Вывести на экран матрицу 4x6. Найти сумму элементов каждой строки. Вывести результат в виде одномерного массива и найти его максимальный элемент.

37. Вывести на экран матрицу 10x8, элементами которой являются целые случайные числа из интервала [19,49]. Определить минимальный элемент в каждом столбце и выбрать из них максимальный.

38. Вывести на экран матрицу 4x8 , элементами которой являются целые случайные числа из интервала [-20,30]. Определить номер максимального элемента в каждой строке и номер минимального в каждом столбце.

39. Вывести на экран матрицу 8х5, элементами которой являются целые случайные числа из интервала [30,70]. Определить среднее арифметическое минимального и максимального элемента в каждом столбце.

40. Вывести на экран матрицу 5x5. Определить среднее арифметическое минимальных элементов столбцов матрицы.