Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

 

Этот оператор можно использовать в программе, только если после заголовка программы указать: USES CRT;

Задача. Вывести на экран таблицу значений функции y=sin(x) в точках 0°,10°,20°,...,90°

1) Расчет таблицы.

Прежде чем приступать к написанию программы, нужно

рассчитать основные размеры будущей таблицы.

отступ

 
 


угол

sin(x)

1 графа. Для вывода значения угла достаточно двух позиций + по одной позиции отступа от левой и правой границы. Итого получается 4 позиции.

2 графа. Для вывода значения функции возьмем 8 позиций (чтобы число могло поместиться и в форме Е), на дробную часть 5 позиций, т. е. формат будет :8:5 + по одной позиции отступа от правой и левой границы. Итого получается 8+2=10 позиций.

Ширина таблицы. 4 + 10 + 3(на границы) = 17

Отступ от края экрана: (80-17):2 » 31

2) программа:

program tabl;

uses crt;

var y:real;x:integer;

begin

clrscr;

writeln(' ':31,' ');

writeln(' ':31,’ угол sin(x) ');

writeln(' ':31,' ');

x:=0;

repeat

y:=sin(x*pi/180);

writeln(' ':31,'½ ',x:2,' ½ ', y:8:5,' ½');

x:=x+10;

until x>90;

writeln(' ':31, ' ');

end.

Задача. Выдать на экран строку из 20 звездочек, начиная с 16-ой позиции.

1 способ. writeln(' ':15,'****');

2 способ. write(' ':15);

for i:=1 to 20 do write('*');

writeln;

Задача. Вывести на экран корни уравнения:

, если "а" меняется от 1 до 10 с шагом 0,5.

1) расчет таблицы.

a

корень1

корень2

1 графа. 4 позиции на число "а" в формате :4:1 + по одному отступу от границ. Итого 6 позиций.

НЕ нашли? Не то? Что вы ищете?

2,3 графа . 10 позиций на число в формате :10 + по одному отступу от границ. Итого 12 позиций.

Ширина таблицы. 6 + 12 + 12 + 4(на границы) = 34

Отступ. (80-34):2» 23

2) программа.

program prim;

uses crt;

var a, x1,x2,d:real; i:integer;

begin

clrscr;

writeln(' ':23,' ');

writeln(' ':23,' a корень1 корень2 ');

writeln(' ':23,' ');

a:=1;

repeat

d:=a+4*42*sin(a);

if d>=0 then begin

x1:=(-sqrt(a)+sqrt(d))/(2*sin(a));

x2:=(-sqrt(a)-sqrt(d))/(2*sin(a));

writeln(' ':23,'½ ',a:4:1,' ½ ', x1:10,' ½ ',x2:10,' ½'); end;

a:=a+0.5;

until a>10;

writeln(' ':23,' ');

end.

23. ОДНОМЕРНЫЕ МАССИВЫ

Массив - упорядоченный набор величин, обозначаемых одним именем.

Представим себе сейф из 10 ячеек. В каждой ячейке лежит какое-то количество долларов.

A

 
 


2

100

6

3.5

0

12

48

13

0

-6

9 10 ¾ номера

ячеек

Назовем этот сейф массивом А. Ячейки пронумеруем. Количество ячеек называется размерностью массива. Каждая ячейка - элемент массива. Номер ячейки - индекс элемента. Содержимое ячейки называется значением элемента массива.

В программе на Паскале i-й элемент массива А обозначается a[i]. При программировании действий с массивами учитывают, что индекс элемента - циклически изменяемая величина с шагом 1. Поэтому действия с массивами в большинстве случаев реализуются через цикл FOR.

Процесс помещения чего-либо в ячейки массива может осуществляться двумя способами:присвоением и вводом.

ПРИСВОЕНИЕ ЗНАЧЕНИЙ ЭЛЕМЕНТАМ МАССИВА

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

Решение. for i:=1 to 10 do a[ i ]:=3*i;

ВВОД МАССИВА

Задача. Ввести массив А из 10 элементов.

Решение. for i:=1 to 10 do read(a[ i ]);

При вводе с клавиатуры значения элементов можно набрать все сразу в одной строке через пробел друг от друга: 2 << enter >>

ОПИСАНИЕ МАССИВА

Массив описывается в разделе VAR.

имя:ARRAY[n..m] OF тип;

имя - имя массива;

ARRAY - англ. слово "массив";

тип - тип значений элементов;

n..m - диапазон нумерации ячеек, обычно n=1

Примеры. 1) var a:array[1..10] of real;

2) var b, c:array[1..15] of integer;

ВЫВОД МАССИВА

Осуществляется аналогично вводу.

Примеры:

for i:=1 to 10 do write(a[i]:7:2); {вывод в одну строку}

for i:=1 to 10 do writeln(a[i]); {вывод в столбик}

ВЫЧИСЛЕНИЕ СУММЫ ЭЛЕМЕНТОВ МАССИВА

Задача. Сколько денег во всех ячейках ?

Решение. Нужно определить сумму элементов всех ячеек.

Сумма обозначается:

Фрагмент программы:

s:=0;

for i:=1 to 10 do s:=s+a[ i ];

Задача. Вычислить сумму элементов массива А(10) с четными индексами. Найти несколько вариантов решения.

Вариант1. s:=0;i:=2;

repeat

s:=s+a[ i ];

i:=i+2;

until i>10;

Вариант2. s:=0;

for i:=1 to 5 do s:=s+a[ 2*i ];

Вариант3. s:=0;

for i:=1 to 10 do

if i mod 2=0 then s:=s+a[ i ];

ВЫЧИСЛЕНИЕ ПРОИЗВЕДЕНИЯ ЭЛЕМЕНТОВ МАССИВА

Задача. Вычислить произведение элементов массива из 10 элементов.

Произведение обозначается:

Решение. p:=1;

for i:=1 to 10 do p:=p*a[ i ];

ВЫЧИСЛЕНИЕ ОДНОГО МАССИВА ЧЕРЕЗ ДРУГОЙ

Задача. Даны два массива А(10) и В(10). Вычислить массив С(10) по формуле: c i = a i + b i

Решение. Схема условия:

A

 

2

30

6

3

0

12

48

13

0

-6

B

 
+

1

10

3

5

4

21

13

0

1

6

C

 
=

3

40

9

8

4

33

61

13

1

0

program prim;

var i:integer;

a, b,c:array[1..10] of real;

begin

for i:=1 to 10 do read(a[ i ]);

for i:=1 to 10 do read(b[ i ]);

for i:=1 to 10 do c[ i ]:=a[ i ]+b[ i ];

writeln('массив c');

for i:=1 to 10 do write(c[ i ]:7:2);

end.

24. НАХОЖДЕНИЕ МИНИМАЛЬНОГО (МАКСИМАЛЬНОГО) ЭЛЕМЕНТОВ МАССИВА

ЗАДАЧА. Дано 10 монет разного веса. Определить самую тяжелую с помощью весов без гирь.

Алгоритм. Кладем на чашки весов первые две монеты, самую тяжелую оставлям и т. д. .

Программа. program prim;

var a:array[1..10] of real;

i:integer;max:real;

begin

for i:=1 to 10 do read(a[i]);

max:=a[1];

for i:=2 to 10 do

if a[i]>max then max:=a[i];

writeln('максимальный =',max); end.

ЗАДАЧА. Определить минимальный элемент массива А(10) и его индекс.

Решение. program prim;

var a:array[1..10] of real;

i, k:integer;min:real;

begin

for i:=1 to 10 do read(a[i]);

min:=a[1];k:=1;

for i:=2 to 10 do

if a[i]<min then begin min:=a[i];k:=i;end;

writeln('min= ',min,' его номер= ',k);

end.


25. АЛГОРИТМ ОБМЕНА ЗНАЧЕНИЯМИ МЕЖДУ ПЕРЕМЕННЫМИ

Задача. В массиве из 10 элементов поменять местами 2-й и 6-й элемент.

13

75

9 10

Решение. Эту задачу можно рассмотреть на бытовом примере: как поменять местами содержимое двух стаканов, если один с молоком, а другой с кефиром?

Ответ: взять третий, пустой стакан.

В нашем случае (с массивом),нужно взять дополнительную переменную, например С.

Тогда обмен осуществляется следующими тремя операторами:

c:=a[2];a[2]:=a[6];a[6]:=c;

ЗАДАЧИ

1. Определить среднюю зарплату сотрудника фирмы за год, если известна его зарплата за каждый месяц.

2. Вычислить 10!´

3. Вычислить .

4. Определить количество положительных элементов массива А(30).

5. Вычислить

6. Вычислить .

7. Вычислить

8. Вычислить произведение элементов с четными индексами массива А(40).

9. Домножить на 2 все отрицательные элементы массива А(20).

10. Дан список учеников класса и отметки каждого из учеников за выполнение двух контрольных работ.

Подсчитать количество учеников :

а) выполнивших первую работу на "5" ;

б) выполнивших хотя бы одну работу на "5";

в) выполнивших обе работы на "5";

г) выполнивших вторую работу на "4" и "5";

д) выполнивших обе работы на "4" и "5".

11. Дан массив А(30).Сколько раз в этом массиве встречается последовательность 1,2,3 ?

12. Даны два массива а(10),В(10) . Сколько в них одинаковых элементов?

13. Дан массив А(20). Вычислить массив В по формуле .

14.Слить два массива А(5) и В(5) в новый массив С(10),поставив элементы массива А на нечетные места, а элементы массива В на четные.

15.Даны два массива из 10 элементов каждый. В массиве, содержащем наибольшее число отрицательных элементов, каждое отрицательное число заменить на 1.

16.Составить массив С из массива а(30),собрав в него сначала все отрицательные элементы из массива А, затем все положительные.

17.Задан массив В(200), содержащий большое количество нулевых элементов. Заменить все группы подряд встречающихся нулей на один нуль.

18.Даны три массива А(10),В(10),С(10). Найти наименьшее из чисел, входящих одновременно в три массива.

19.В массиве из 10 элементов поменять местами максимальный элемент с первым.

20.Найти минимальный элемент массива А(10) среди элементов с четными индексами.

21.Найти минимальный среди положительных элементов массива А(10),если известно, что первый элемент - положительный.

22. В массиве А(10) заменить минимальный элемент на 0.

23. Вычислить

24. В массиве из 30 элементов поменять местами соседние четные и нечетные по номеру элементы.

25. Вычислить индекс максимального отрицательного элемента массива А(40):

а) считать, что первый элемент - отрицательный;

б) не известно, где находится первый отрицательный элемент.

26. Определить количество элементов массива А(40),удовлетворяющих неравенству:

27. В массиве А(20) найти максимальный элемент. Вставить порядковый номер максимального элемента за ним, передвинув все оставшиеся элементы.

28. В массиве А(20) найти индексы тех двух элементов, сумма которых максимальна среди суммы всевозможных пар.

29. Дан массив Х(20) и некоторая величина А. Найти максимальный и минимальный элементы и провести преобразование всех элементов, не превосходящих А, по формуле:

30. Дан массив Х(20) .Этот массив преобразовать в два массива Y и Z таким образом, чтобы в Y попали элементы, значения которых не больше , а в Z - остальные. Подсчитать количество элементов в массивах Y и Z.

31. Дан массив Х(20) и целое значение К. Найти максимальные значения среди тех элементов, номера которых не превосходят К и тех, номера которых превосходят. Найденные значения поменять местами.

32. Решить, не используя массивы.

Найти наибольшее и наименьшее значение функции на заданном интервале [a, b] c шагом изменения "х" 0.1 .

26. ОПЕРАТОР ПЕРЕХОДА. МЕТКИ

Оператор перехода служит для изменения последовательного порядка выполнения операторов.

Оператор перехода имеет следующий вид:

 

GOTO метка;

где метка - это натуральное число от 0 до 9999 или имя.

Метка ставится перед оператором, на который осуществляется переход:

метка: оператор;

Примеры:

123: a:=3; goto konec;

..

..

goto 123; konec:end.

Используемые в программах метки обязательно описываются в разделе описания меток LABEL следующим образом:

 

LABEL метка1,метка2,...,метка_n;

Порядок следования меток значения не имеет.

Задача.. Составить программу по следующему алгоритму:

1) ввести 2 числа

2) если первое число больше второго, то вычислить их среднее арифметическое и закончить работу

3) в противном случае вычислить произведение этих чисел и перейти на п.1

Решение_. program prim;

var a, b,c:real;

label 1;

begin

1: writeln('введи 2 числа');

readln(a, b);

if a>b then begin

c:=(a+b)/2;

writeln('среднее арифметическое=',c);

end

else begin

c:=a*b;

writeln('произведение=',c);

goto 1;

end;

end.

В этой программе фраза "и закончить работу" не реализовывалась никакими операторами, т.к. если верно условие "а>b",то выполняются действия после THEN, а затем работу начинают операторы, стоящие после условного, а это оператор END.

Можно осуществлять переход на конец программы и через оператор GOTO:

program prim;

var a, b,c:real;

label 1,2;

begin

1: writeln('введи 2 числа');

readln(a, b);

if a>b then begin

c:=(a+b)/2;

writeln('среднее арифметическое=',c);

goto 2;

end

else begin

c:=a*b;

writeln('произведение=',c);

goto 1;

end;

2: end.

Вообще, большое количество операторов GOTO в программе считается плохим стилем программирования.

27. РАСПОЛОЖЕНИЕ МАССИВА ПО ВОЗРАСТАНИЮ (УБЫВАНИЮ)

Расположить элементы массива по возрастанию - означает расположить их в таком порядке, чтобы больший элемент следовал за меньшим.

Пример:

Чтобы представить себе алгоритм расположения массива по возрастанию рассмотрим такую бытовую задачу:"Командир дал приказ новобранцам построится в колонну по одному по росту, они этого сделать не смогли и встали как попало. Как командиру исправить положение?". Ответ: сравнивать двух рядом стоящих и переставлять их, если они стоят не так как нужно. Возможно, что дойдя до конца колонны, командир так и не добьется нужного порядка и ему придется это проделывать несколько раз. Исследования показали, чтобы наверняка добиться нужного расположения, нужно эту процедуру проделать "n-1" раз, если "n" - количество новобранцев(размерность массива).

Аналогично и с массивами.

Задача: Дан массив а(10).Расположить по возрастанию.

program prim;

var a:array[1..10] of real;

b:real;

k, i:integer;

begin

for i:=1 to 10 do read(a[ i ]);

for k:=1 to 9 do {количество повторений}

for i:=1 to 9 do

if a[i]>a[i+1] then begin

b:=a[ i ];

a[ i ]:=a[ i+1 ];

a[ i+1 ]:=b;

end;

for i:=1 to 10 do write(a[ i ], ' ');

end.

28. РЕШЕНИЕ ЛОГИЧЕСКИХ ЗАДАЧ МЕТОДОМ ОПРЕДЕЛЕНИЯ КОЛИЧЕСТВА ЗНАЧЕНИЙ

Задача 1. Проверить, есть ли в массиве А(100) отрицательные элементы ( т. е. количество отрицательных элементов должно быть больше нуля).

program prim;

var i, k:integer; a:array[1..100] of real;

begin

for i:=1 to 100 do read(a[ i ]);

k:=0;

for i:=1 to 100 do

if a[ i ]<0 then k:=k+1;

if k>0 then writeln('есть отрицат. элементы') else writeln('нет отрицательных эл-тов');

end.

Задача 2.Проверить, все ли элементы массива А(30) больше 3 (т. е. количество элементов, больших 3, должно быть равно количеству элементов в массиве).

program prim;

var i, k:integer;

a:array[1..30] of real;

begin

for i:=1 to 30 do read(a[ i ]);

k:=0;

for i:=1 to 30 do

if a[ i ]>3 then k:=k+1;

if k=30 then writeln(' все больше 3')

else writeln('не все больше 3');

end.

ЗАДАЧИ

1. Составить программу по следующему алгоритму:

а) ввести 7 чисел;

б) если сумма чисел больше 50,то расставить эти числа в обратном порядке, вывести их на экран и закон -

чить работу;

в) в противном случае - отрицательные числа заменить нулями, перейти на п. а)

2. Проверить, все ли элементы массива А(30) расположены по убыванию.

3. Расположить массив А(30) по возрастанию.

4. Определить, есть ли в массиве А(30) четные элементы.

5. Определить индекс 1-го отрицательного элемента массива А(40).

6. Числовая прямая разбита на отрезки точками А1, А2, А3, ...Аn Выяснить, какому из отрезков принадлежит

заданная точка Х.

7. Задан массив А(30),состоящий только из нулей и единиц. Проверить, существует ли строгое чередова-

ние(0101... или 1010...).

8. Заданы массивы а(10) и В(20). Сформировать массив С, содержащий элементы обоих массиов, располо-

женные по возрастанию.

9. Даны массивы А(10),В(10),С(10).Преобразовать массив С по следующему алгоритму:

все элементы массива С, предшествующие его наибольшему элементу, заменить на их кубы, если выпол-

няются следующие условия:

- наибольший элемент массива А равен 20 и находится в первой половине этого массива;

- в массиве В нет отрицательных элементов, а наибольший элемент не превосходит наибольшего из мас-

сива А.

10.Таблица содержит 100 номеров выигрышных билетов. Проверить, является ли билет с номером N выиг-

рышным?

11.С 8 до 20 часов температура воздуха измерялась ежечасно. Известно, что в течение этого времени темпе-

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

12.Найти номер минимального и максимального элементов массива А(20) , попавших в отрезок [c;d] .

29. МАТРИЦЫ

Матрицей называется массив, расположенный в памяти таблично:

номера

столбцов

 
 

1

 

матрица :

 
12

0

3

43

21

2

 
23

6

4

5

24

3

 
54

65

3

2

1

4

 
10

20

3

6

7

номера

строк

 

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8