Числовые типы в языке Паскаль — КиберПедия 

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

Числовые типы в языке Паскаль

2019-09-04 469
Числовые типы в языке Паскаль 0.00 из 5.00 0 оценок
Заказать работу

Содержание

 

Назначение указаний.. 4

1. Числовые типы в языке Паскаль. 4

2. Логический тип и логические операции.. 5

3. Структура программы. Блок описания.. 6

4. Использование переменных.. 7

5. Простейшие программы.. 8

6. Условный оператор. 10

7. Циклы с заданным числом итераций.. 12

8. Циклы с постусловием и предусловием.. 13

9. Массивы.. 15

10. Процедуры и функции.. 17

11. Многомерные массивы и процедуры.. 19

12. Строковый тип.. 22

13. Тип Запись. 23

14. Типизированные файлы.. 26

15. Текстовые файлы.. 28

16. Ссылочные типы.. 29

 

 


Назначение указаний

Методические указания представляют собой сборник заданий по дисциплине «Технология программирования» для самостоятельного выполнения студентами направления бакалавриата 230400.62 «Информационные системы и технологии» с целью выработки навыков программирования и освоения теоретического материала.

Числовые типы в языке Паскаль

Часть I

1) Указать неправильные записи чисел:

а) 0006; б) -0; в) 7,0;  г) 7.; д) +0.3; е). 3;

ж) 2/3; з) E-1; и) 2*E5; к) 8E0; л) 0E-4; м) 6

2) Указать порядок выполнения операций:

а) a + b / c / d – 2 * e        б) a * b + c / d * e + f / g + h

в) a / (b * c) * d + e * f   г) (a + b) / (c + d)

3) Вычислить: 24/(3*4)-24/3/4+24/3*4

4) Записать в общепринятой форме:

a) a/b*(c+d)-(a-b)/b/c        б) 1E3+beta/(x2-gamma*delta)

в) x1+arctan(y2-alpha)/2*abs(x4-ln(5)*y5)/exp(-1)

5) Записать на языке Паскаль следующие формулы:

a) [(ax-b)x+c]x-d; б)   в)

6) Вычислить значения выражений:

a) trunc(6.9); б) round(6.9); в) trunc(6.2); г) round(6.2);

д) trunc(-1.8); е) round(-1.8); ж) round(0.5); з) round(-0.5).

7) Вычислить значения выражений:

a) 20 div 4 б) 20 mod 4 в) 123 div 6 г) 44 mod 10

8) Вычислить значения выражений:

а) 3*7 div 2 mod 7/3-trunc(sin(1)); б) sqrt(sqr(1+6/2*3)+21)

Часть II

1) Записать на языке Паскаль следующие формулы:

1. 4. 7. 10. 13.
2. 5. 8. 11. 14.
3. 6. 9. 12. 15.

2) Записать в общепринятой форме:

1. sqr(x)/3/y+6*a 6. ln(sqr(x)+y)/(3*y) 11. sqr(5*x/exp(6*y))
2. x*y/sqr(5+abs(x)) 7. exp(5*x)/(y+sqr(x)) 12. sqrt(abs(x+y/6))
3. (x-y)/(x+3)+3 8. sin(x*Pi)/cos(alpha) 13. abs(sqr(x)/(3*x))
4. sqr(x+y)/x*y 9. 1+arctan(3*x)/(4*y) 14. a*b/c+sqr(a/(b+c))
5. sqrt(5+abs(x*y/3)) 10. arctan((x+y)/(1+x)) 15. sqrt(abs(4+2*x)/7)

3) Вычислить:

1. sqr(6)/2/9+1-6/2*3 6. abs(cos(-pi))*4+1 11. sqr(4*5/2-18/2/3)
2. sqrt(9)/3*2+12/4/3-2 7. 20 div 6*2-5 mod 3 12. 5*2 div 4 mod 3
3. sqr(6/2*3)/9/3 8. sqr(trunc(15/2/4)) 13. 24/(6*2)-24/6/4
4. 4/2*5/(3+2)*abs(2-5) 9. round(8/3)*4/3/2+1 14. sqrt(2*sqr(3)+7)
5. sin(pi/2)*sqrt(1+9/3) 10. trunc(abs(3/6-4)*3) 15. sqrt(abs(sqr(2)-8))

Логический тип и логические операции

Часть I

1) Какой тип необходим, чтобы представить:

a) результат сдачи студентом экзамена;

b) результат сдачи студентом зачета;

c) среднюю оценка за экзамен в группе.

2) Вычислить значения выражений:

a) sqr (x)+ sqr (y)<=4 при x =0.3, y =-1.6;

b) k mod 7= k div 5-1 при k =15;

c) odd (trunc (10* p)) при p =0.182.

3) Вычислить значение выражения при a=true и b=false: a or b and not a;

4) Записать на Паскале выражение для проверки следующего условия:

a) 0<x<1;

b) хотя бы одна из логических переменных a и b имеет значение true;

c) логическая переменная a имеет значение true, а логическая     переменная b имеет значение false;

d) x принадлежит интервалу (1, 10);

e) x принадлежит отрезку [2,5] или [-1,1];

f) x не попадает в отрезок [-5, 5].

5) Указать порядок выполнения операций при вычислении выражения:

a) a and b or not c and d;

b) a or b and c xor d;

c) not a xor b xor c and d and e or f.

6) Записать на Паскале выражение для проверки следующего условия:

a) число a больше любого из чисел b и c;

b) среди чисел имеется a, b и c хотя бы два равны между собой;

c) числа a и b имеют одинаковую четность;

d) три числа a, b и c равны между собой.

Часть II

1) Указать порядок выполнения операций и вычислить значение выражения при x=3 и y=5:

1. (x+3 < 7) and (y-2>3) 2. (sqr(x) >= 7*y) or (x*y<>15)
3. (x>2) and (x<5) or (y<x) 4. (x >= y) or (x*y>0) and odd(x)
5. not (x<y) and (x+2=y) 6. (x*y/6=1) or not (x=y)
7. not odd(x) and odd(y) 8. odd(x+y) or (odd(x*y))
9. (x > 5) and (x < 10) or (y>0) 10.not (sqr(x)<=y+4) or (sqrt(y)>x)
11.(x<y) and ((x<0) or not (y<0)) 12.odd(x) and (not (x<y) or (x/y>1))
13.(abs(x-y)>=2) or (x=3) and (y=4) 14.(round(y/x)=2) and (x=2) or (y=5)

2) Записать на Паскале выражение, истинное при выполнении указанного условия и ложное в противном случае:

1. 2>x>1 2. 3<x<y
3. x>y+1 или x<y2-3 4. точка (x,y) имеет коор-ты (1,1)
5. x не принадлежит отрезку [3, 4] 6. y принадлежит инт-лу (1, 5)
7. точка (x,y) нах-ся. в I четверти 8. точка (x,y) нах-ся. в III четв-ти
9. точка (x,y) не нах-ся. в I чет-ти 10. точка (x,y) не нах-ся. в IV чет.
11. точка (x,y) находится либо в I четверти, либо в III 12. точка (x,y) не находится ни во II четверти, ни в IV
13. x попадает либо в отрезок [1, 3], либо в [5, 10] 14. x не попадает в отрезки [2, 5] и [6, 7]

3) Записать на Паскале отношение, истинное при выполнении указанного условия и ложное в противном случае:

1. Целое K делится на 7 2. Целое K делится на 3
3. Целое K делится на 6 с остатком 2 4. Целое K делится на 4 с остатком 1
5. Произведение целых чисел K и N делится на 3 6. Произведение целых чисел K и N делится на 5 с остатком 4
7. Сумма целых чисел K и N делится на 7 8. Сумма целых чисел K и N делится на 4 с остатком 2
9. Произведение целых чисел K и N делится на их сумму 10. Произведение целых чисел K и N делится на K-N
11. Сумма целых чисел K и N делится на разницу этих чисел с остатком 5 12. Разница между целыми числами K и N делится на 11 с остатком 3
13. Сумма целых чисел K и N делится на их разницу 14. Разница между целыми числами K и N кратна 4

Часть I

1) Нарисуйте расположение чисел, напечатанных следующей последовательностью процедур:

write(1);            writeln(4);                 writeln;
write(2,3);         write(5,6);                 writeln(7,8).

2) Что выведется на экран после выполнения следующих команд:

a) writeln(‘2+3’) b) writeln(6/2) c) writeln(‘10*5=’, 10*5); d) write(‘x=’); writeln(7);

3) Что выведется на экран после выполнения следующей программы:

const y = 10;

begin

    writeln(“Hello world!”);

    write(“y+5=”);

    writeln(y+5);

end.

4) Выведите на экран свою фамилию, имя и отчество в 3-ёх строчках.

5) Выведите на экран «2+5*8/4-3» и результат вычисления.

6) Опишите константу x, равную 10, и выведите на экран результат вычисления: . Вычислите также при x равном 20 и 45.

7) Напишите программу, которая печатает на экране площадь, периметр и длину диагонали прямоугольника со сторонами a и b, где a и b – константы со значениями 3 и 4.

Часть II

1) Опишите константу Age, равную вашему возрасту, и Kurs, соответствующую вашему курсу. Пользуясь ими, выведите на экран информацию о себе в следующем виде:

Иванов А.И.

19 лет

студент 1-го курса ИГиГ ТюмГНГУ

2) Используя процедуры WriteLn нарисуйте на экране из символов «*» первую букву вашего имени.

3) Выведите на экран значения sin , cos 0 и tg 0.

4) Опишите константы x =2 и y =6 и вычислите . Вычислите также для 9 и 25, 4 и –5.

5) Напишите программу, которая печатает на экране радиус, диаметр, длину окружности и площадь круга, используя при этом константу R (радиус окружности).

Использование переменных

Часть I

1) Какие из названий переменных будут верными, а какие нет. Ответ пояснить.

а) abc;         б) luna5;       в) 38strok;    г) man_utd;

д) tmn unv; е) _wert;        ж) _32;         з) моя_переменная.

2) Определить значения переменных a, b и c после выполнения следующих операторов:

a) a:=3; b:=a-1; c:=a+b*2; b) a:=1; b:=a*4; c:=a*b; c:=b*c-a; c) a:=1; b:=3; c:=sqr(b); a:=trunc(a/b*10); b:=b+1; c=a*b mod c;

3) Определить тип результата выражения (целый или вещественный):

а) 1+0.0;     б) 20/4;         в) sqr(4);       г) sqr(5.0);

д) sqrt(16); е) sin(0);        ж) abs(-2);    з) trunc(-3.14).

4) Если y – вещественная переменная, а n – целая, то какие из следующих операторов присваивания правильные, а какие нет и почему?

а) y:=n+1;   б) n:=y-1;      в) n:=4.0;      г) y:=trunc(y);

д) n:=n div 2; e) y:=y div 2; ж) n:=n/2;     з) n:=sqr(sqrt(n))

5) Присвоить целой переменной h третью от конца цифру в записи положительного целого числа k (например, если k =130985, то h =9).

6) Поменять местами значения переменных x, y и z так, чтобы в x оказалось значение переменной y, в y – значение переменной z, а в z – прежнее значение переменной x.

7) Идет k -я секунда суток. Определить, сколько полных часов (h) и полных минут (m) прошло к этому моменту (например, h =3 и m =40, если k =13257=3*3600+40*60+57).

Часть II

1) Присвоить целой переменной d первую цифру из дробной части положительного вещественного числа x (так, если x =32.597, то d =5).

2) Пусть k – целое от 1 до 365. Присвоить целой переменной n значение 1,2,...,7 в зависимости от того, на какой день недели (понедельник, вторник,..., воскресенье) приходится k -й день невисокосного года, в котором 1 января – понедельник.

3) Определить h – полное количество часов и m – полное количество минут, прошедших от начала суток до того момента (в первой половине дня), когда часовая стрелка повернулась на f градусов (0< f <360, f – вещественное число).

4) Поменять местами значения целых переменных x и y, не используя дополнительные переменные.

Простейшие программы

Часть I

1) Когда процедура вывода writeln(x1,...,xn) осуществляет перевод строки: до печати первого параметра (x1) или после печати последнего (xn)?

2) Имеется программа program PRINT; var x: integer; begin x:=2; writeln('x+1') end. Что она напечатает: 3 или x +1? Ответ пояснить

3) Что будет напечатано программой

program less;

var x: real;

t: boolean;

begin

read(x);  t:=x<round(x);

read(x);

t:=t and (x<trunc(x));

writeln(t)

end.

если для ввода заданы числа 1.5 и -0.8? Ответ пояснить

4) Программа DEGREE печатает первые четыре степени числа е. Какие изменения (по возможности минимальные) надо внести в программу, чтобы она печатала первые четыре степени числа π?

program DEGREE; const e = 2.71828; var e2: real; begin e2:=e*e; writeln(e,e2,e*e2,e2*e2) end.
     

5) Найти ошибки в каждой из следующих программ:

а) program A; const d = 5; begin     d:=sqr(d);     writeln('d**2=',d) end. b) program B; var a, b, c: integer; begin     read(a,b);     writeln((a+b+c)/3) end.
c) program C; const k = true; var x: real; begin     read(x);     writeln(ord(x)=k) end. d) program D; var x: real; begin     read(x);     y:=sqrt(x)+1;     writeln(y) end.

e) program E;

const B=2.5;   var a, b, c: real;

begin read(a,c); writeln(a*c>b) end.

6) Написать программу для вычисления периметра и площади прямоугольного треугольника по длинам двух катетов.

7) Написать программу, которая печатает true или false в зависимости от того, имеют три заданных целых числа одинаковую четность или нет.

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

a) найти произведение цифр заданного четырехзначного числа;

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

Часть II

1) Что будет напечатано программой: program aba; var a, b: integer; begin read(a,b,a); writeln(a,b,a) end. если для ввода заданы числа 1, 2 и 3? 2) Что будет напечатано следующей программой, если для ввода было задано число 31.7? program time;var fi:real;h,m:integer;begin read (fi);h:=trunc(fi/30);m:=trunc( (fi-30*h)/0.5);writeln(h,' ',m )end. Записать текст этой программы в более наглядной форме.

3) Написать программу, которая для заданного целого числа а печатает следующую таблицу значений:

a

a3 a6

a3 a6 a

4) Написать программу, которая вычисляет и печатает коэффициенты приведенного квадратного уравнения, корнями которого являются введенные пользователем два вещественных числа (для справки: b=-x1-x2; c=x1*x2).

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

Условный оператор

Часть I

1) Чему будет равна переменная y после выполнения следующих операторов:

a) x:=5; y:=0; if x>0 then y:=1; b) x:=-10; y:=1; if x>0 then y:=3; y:=2*y;
c) x:=10; y:=0; if x>0 then y:=1 else y:=2; d) x:=10; y:=0; if x>0 then y:=1 else y:=2;
e) x:=-10; y:=1; if x>0 then begin   y:=3;   y:=2*y; end; f) x:=10; if (x>0) and (x<5) then begin   y:=2;   y:=10*y; end else begin   y:=5;   y:=20-y; end;

2) Верны ли операторы:

a) if x>0 then x:=2 else; y:=x+1;

d) if 1<x and x<2 then

        begin x:=x+1; y:=0 end;

else

        begin x:=0; y:=y+1 end;

b) if odd(k) then else k:=0;
c) if 1<x<2 then x:=x+1; y:=0; else x:=0; y:=y+1;

3) Написать операторы, реализующие данные блок-схемы:

a) a:=max(x, y);


c) k:=номер четверти (x, y)

b) a:=max(x, y); b:=min(x, y)

4) Какое значение будет иметь переменная z после выполнения операторов

z:=0; if x>0 then if y>0 then z:=1 else z:=2;

при следующих значениях переменных x и y:

          a) x=y=1;        b) x=1, y=-1;     c) x=-1, y=1.

5) Записать указанное действие в виде одного условного оператора:

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

a) b) значения переменных a, b и c поменять местами так, чтобы оказалось

7) Написать программу: даны числа a, b и c (). Найти вещественные корни уравнения . Если корней нет, то сообщить об этом.

Часть II

1) Допустимы ли в Паскале следующие составные операторы?

a) begin end;    b) begin x:=0 end;  c) begin; end.

2) Для вещественных x, y, z вычислить

3) Даны целые k, l. Если числа не равны, то заменить каждое из них на max(k, l), а если равны, то заменить нулями.

4) Записать действие в виде одного условного оператора:

5) Написать программу: даны произвольные числа a, b, c. Если нельзя построить треугольник с такими длинами сторон – напечатайте 0, иначе напечатать 3, 2, 1 в зависимости от того, равносторонний это треугольник, равнобедренный или какой-либо иной. Для справки: условия существования треугольника: .

6) Дано число x. Напечатать в порядке возрастания значения c os (x), 1+|x|, .

Часть I

1) Определить значение переменной s после выполнения следующих операторов. Ответ пояснить.

a) s:=0; for i:=1 to 5 do s:=s+i;

b) s:=0; for i:=1 to 10 do if odd(i) then s:=s+i;

c) s:=0; for i:=-3 to 3 do begin if i<0 then k:=-i else k:=i; s:=s+k; end;

d) s:=100; for i:=5 downto 2 do s:=s div i;

2) Определить значение переменной s после выполнения следующих операторов. Ответ пояснить.

a) s:=1; n:=1; for i:=2 to n do s:=s+1/i

b) s:=110; for i:=4 downto 2 do s:=s div i;

3) var k, i:integer; x, y:real;

Найти ошибки в следующем фрагменте программы:

a) y:=0; for x:=0.1 to 0.9 do y:=y+sin(x);

b) k:=81; y:=1; for i:=1 to sqrt(k) do y:=2*y;

c) k:=0; for i:=1 to 9 do k:=k+sqr(i); k:=k*i;

d) k:=1; for i:=1 to 64 do begin i:=2*i; k:=k+i end.

4) Сколько раз будет выполняться тело следующего оператора цикла?

k:=0; for i:=1 to k+3 do k:=k+1;

5) Программа. Дано 100 вещественных чисел.

a) Вычислить максимальное из них;

b) Вычислить разность между максимальным и минимальным из них.

6) Программа. Имеется целое k>0. Вычислить k-й член последовательности {x}, где x1=1 и xn=nxn-1 +1/n при n=2, 3, 4...

7) Программа. Вычислить: y=sin1+sin1.1+sin1.2+...+sin2

8) Программа. Вычислить:

9) Программа. Дано 100 вещественных чисел. Определить, образуют ли они возрастающую последовательность.

10) Программа. Дана последовательность из 100 целых чисел. Определить количество чисел в наиболее длинной подпоследовательности из подряд идущих нулей.

Часть II

1) Программа. Напечатать таблицу значений функций sin x и cos x на отрезке [0, 1] с шагом 0.1 в следующем виде (считать, что при печати на каждое вещественное число отводится по 6 позиций строки):

x sin(x) cos(x)
0.0 0.0000 1.0000
0.1 0.0998 0.9950

1.0 0.8415 0.5403

2) Программа. Дано 100 вещественных чисел. Найти, сколько из них принимает наибольшее значение

3) Программа. Напечатать все простые делители данного натурального числа

4) Программа. Напечатать в возрастающем порядке все трехзначные числа, в десятичной записи которых нет одинаковых цифр (операции деления не использовать)

5) Программа. Вычислить сумму (или произведение)

1. 2.
3. 4.
5. 6.
7. 8.
9. 10.
11. 12.
12. 14.

Часть I

1) Определить значение переменной s после выполнения следующих операторов:

a) s:=1; while s<20 do s:=2*s;

b) s:=55; i:=10; while s>i do s:=s-i;

c) s:=0; i:=0; while i<5 do begin i:=i+1; s:=s+i end;

d) s:=0; i:=0; repeat i:=i+1; s:=s+i until i>=5;

2) Определить значение переменной s после выполнения следующих операторов:

a) s:=0; i:=0; while i<5 do i:=i+1; s:=s+1/i;

b) s:=0; i:=1; while i>1 do begin s:=s+1/i; i:=i-1 end;

c) s:=0; i:=1; repeat s:=s+1/i; i:=i-1 until i<=1;

3) Программа. Дана непустая последовательность положительных вещественных чисел x1, x2,..., xn (n заранее неизвестно), за которыми следует отрицательное число. Вычислить величину:

x1+2x2+...+(n-1)xn-1+nxn

4) Подсчитать k – количество цифр в десятичной записи целого неотрицательного числа n.

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

6) Программа. Определить, является ли заданное натуральное число палиандромом, т.е. таким, десятичная запись которого читается одинаково слева направо и справа налево.

7) Вычислить: y – первое из чисел x/2, x/22, x/23 и т.д., меньшее по модулю значения 10-2.

Часть II

1) Дана непустая последовательность не нулевых целых чисел, за которой следует 0:

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

2. Определить, сколько из них принимает наибольшее значение

3. Определить, сколько из них принимает наименьшее значение

4. Определить количество чисел (единиц) в наиболее длинной подпоследовательности из идущих подряд единиц

5. Определить три наибольших числа среди них

6. Определить три наименьших числа среди них

7. Определить, сколько из них больше своих "соседей", т.е. предыдущего и последующего чисел

8. Определить, сколько раз в этой последовательности меняется знак. (Например, в последовательности 1,-4, 8, 14, -5 знак меняется 3 раза)

9. Определить, сколько раз в этой последовательности встречается подпоследовательность 1, 2 (Например, в последовательности 1, 3, 4, 1, 2 – 1 раз)

10. Определить количество чисел в наиболее длинной подпоследовательности из подряд идущих положительных чисел

11. Определить количество чисел в наиболее длинной подпоследовательности из подряд идущих отрицательных чисел

12. Определить количество чисел в наиболее длинной подпоследовательности из подряд идущих чисел одного знака

13. Определить количество чисел в наиболее длинной подпоследовательности из подряд идущих одинаковых чисел

14. Определить порядковый номер числа, с которого начинается самая длинная последовательность подряд идущих единиц

2) Вычислить бесконечную сумму с заданной точностью eps (eps>0). Считать, что точность достигнута, если очередное слагаемое по модулю меньше eps – все последующие слагаемые можно не учитывать.

1. 2.
3. 4.
5. 6.
7. 8.
9. 10.
11. 12.
13. 14.

3) Напечатать на экране True, если введенное натуральное число является совершенным, т.е. равным сумме всех своих положительных делителей, кроме самого этого числа (например, число 6 совершенно: 6=1+2+3).

Массивы

Часть I

1) Определить значение переменной y после выполнения следующей программы:

program massiv;

const N=4;

type TVektor = array[1..N] of integer;

var a: TVektor;

y, i: integer;

begin

a[1]:=1; a[2]:=7; a[3]:=9; a[4]:=3;

y:=0;

for i:=1 to N do y:=y+a[i];

end.

2) Найти ошибки в описании: Const N=50; Type Words=              array [0..n-1] of letter;     Letter='a'..'z';     Vector=array[real] of integer;     Digits=array[true..false]                                      of (1,2,3,4); 3) Какие операции над массивами допустимы в следующей программе, а какие нет? program Error; var x,y: array[1..20] of real; z,u: array[1..50] of real; i: integer; begin read(x,y); if x<>y then begin z:=x; x:=y; y:=z end else x:=x+y; for i:=1 to 20 do u[i]:=x[i]+y[i]; z:=u; end.

4) Написать программу, находящую максимальный элемент вектора X, состоящего из N элементов.

5) Написать программу, заполняющую вектор X числами Фибоначчи.

6) Написать программу, вычисляющую для вектора x значение:
y=x[1]-x[2]+x[3]-...-x[n-1]+x[n]

7) Написать программу, которая печатает те элемента массива, индексы которых кратны хотя бы одному из предыдущих.

Часть II

1) Ответьте на вопросы:

a) может ли массив содержать один элемент? а ни одного?

b) можно ли во время выполнения программы изменить размер массива?

c) верно ли, что тип элементов массива может быть любым?

d) может ли тип индекса быть INTEGER или REAL?

e) могут ли элементами некоторого массива быть числа 1, 1.2, 1.44?

2) Const n=20;

Type vector= array[1..n] of integer;

Напишите программу, которая вычисляет для вектора x:

1. min (x[i]-x[i-1]), i=2,3...n

2. x[1]2-x[2]2+x[3]2-...-(-1)nx[n]2

3. x[1] 2+x[3] 2+...+x[последнее нечетное] 2

4. x[1]*x[n]+x[2]*x[n-1]+...x[n]*x[1]

5. x[n]*(x[n]+x[n-1])*(x[n]+x[n-1]+x[n-2])*...*(x[n]+...x[1])

6.

7. true, если элементы массива x упорядочены строго по возрастанию, false в противном случае

8. true, если элементы массива x не содержат 0, false в противном случае

9. true, если элементы массива x чередуются по знаку (положительные, отрицательные)

10. x[1]+x[1]*x[2]+x[1]*x[2]*x[3]+...+x[1]*x[2]*...x[n]

11. номер первого отрицательного элемента массива х, или 0, если такого элемента нет

12. количество четных положительных элементов массива х

13. номер первого нулевого элемента, стоящего после отрицательного элемента, или 0, если такого элемента нет

14. количество нулевых элементов, стоящих после отрицательных

3) Напишите программу, которая:

Процедуры и функции

Часть I

1) Определите значение переменной y после выполнения следующей программы:

program massiv;

function test(a, b: integer): integer;

var z: integerl

begin

if a>b then z:=a else z:=b;

test:=2*z+1;

end;

var y, k1, k2: integer;

begin

k1:=test(3, 7);

k2:=test(5, 2);

y:=k1+k2;

end.

2) Найдите ошибки в описании процедур и функций:

a. function g(k:integer):0..maxint; var   i,s:0..maxint; begin s:=0;     for i:=1 to k do s:=s+sqr(i) end; b. function h(x:integer):integer; begin h(x):=(sqr(x)+x)/2 end;
c. function m(x:integer):integer; var   i: integer; begin m:=0; for i:=1 to 10 do m:=m+x*x; end; d. procedure zero(a:array[1..10]                                           of integer); var    i: integer; begin for i:=1 to n do a[i]:=0; end;

3) Допишите следующую программу, реализовав используемые в ней процедуры. Программа считает поэлементную сумму двух векторов. Какие параметры передаются по значению, а какие по ссылке и почему?

const

    n=5; {размерность векторов}

type

    vector=array[1..n] of integer;

{ Реализация процедур:

 ReadVector(var a:vector)      - ввод вектора.

 WriteVector(a:vector)            - вывод вектора.

 Sum(a,b:vector; var s:vector) - поэлементное суммиров. векторов,

                                                       s[i]:=a[i]+b[i]}

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

var

    a,b, {исходные вектора}

    s: vector; {сумма векторов a и b}

begin

    ReadVector(a);

    ReadVector(b);

    Sum(a, b, s);

    WriteVector(a);

    WriteVector(b);

    WriteVector(s);

end.

4) Напишите функцию для нахождения:

a) максимального элемента вектора; b) суммы элементов вектора.

Часть II

1) Написать процедуру или функцию:

1. Написать функцию для нахождения количества различных элементов вектора, не используя дополнительных массивов

2. Написать функцию less для сравнения векторов, такую что less (a, b)= true <=> a<b <=> a[i]<b[i] для любого i

3. Написать функцию для нахождения расстояния |a[i]-a[j]| между двумя наиболее близких по значению элементами вектора

4. Написать функцию для нахождения расстояния |a[i]-a[j]| между двумя наиболее удаленными по значению элементами вектора

5. Наити количество элементов группы, содержащей наибольшее число одинаковых элементов вектора

Например:    1 2 1 2 3 9 8 2 результат: 3

        1 2 3               результат: 1

6. Дан массив целых чисел x[1]..x[m+n], рассматриваемый как соединение двух его отрезков: начала x[1]..x[m] длины m и конца x[m+1]..x[m+n] длины n. Написать процедуру, которая не используя дополнительных массивов, переставляет начало в конец

7. Написать процедуру для нахождения производной многочлена. Исходный и результирующий многочлен задаются массивами коэффициентов

8. Написать процедуру перемножения двух многочленов заданных массивами коэффициентов, результатом является многочлен заданный массивом коэффициентов

9. Написать процедуру для сортировки массива x по невозрастанию методом пузырька

Даны два массива целых чисел упорядоченные по невозрастанию:

10. Содержащие одинаковый элемент. Написать функцию, находящую этот элемент

11. Написать функцию, находящую количество общих элементов

12. Написать процедуру, соединяющую их в один упорядоченный по невозрастанию массив

13. Написать процедуру, находящую их пересечение в виде упорядоченного по невозрастанию массива

14. Написать функцию, находящую количество различных элементов

Часть I

1) Одинаковы ли типы?

array [1..15,0..3] of char

array [1..15] of array [0..3] of char

2) Определите значение переменной y после выполнения следующей программы:

program massiv;

const N = 3;

type TMatrix = array[1..3, 1..3] of integer;

procedure test(var a: TMatrix);

begin

a[1, 1]:=4; a[1, 2]:=6; a[1, 3]:=3;

a[2, 1]:=1; a[2, 2]:=7; a[2, 3]:=2;

a[3, 1]:=8; a[3, 2]:=5; a[3, 3]:=4;

end;

var M: TMatrix;

y, i, j: integer;

begin

test(M);

M[1,1]:=0; y:=0;

for i:=1 to N do for j:=1 to N do y:=y+M[i, j];

end.

3) type   STR = array [1..20] of char;

MATR1 = array [1..10] of STR;

MATR2 = array [1..15,1..20] of char;

var A: MATR1;   B, C: MATR2; T: boolean;     X: STR;

a) Укажите тип переменных A, A [3], A [9][8], A [1,1], B, B [15], B [3,3], B [2][6]

b) Какие из указанных операций допустимы:

B:=C; B:=B+C; T:=B<>C; A[1]:=A[8]; X:=A[3]; C[5]:=X; C [5]:= C [1];  

4) Напишите процедуру Input(A) для заполнения массива целых чисел A размером 10 x 10 следующим образом:

0 0 0... 0

0 1 0... 0

0 0 2... 0

...

0 0 0... 9

5) TYPE VECTOR = array [1..20] of integer;

    MATRIX = array [1..20] of VECTOR;

         MATRIX1 = array [1..20,1..20] of integer;

VAR A: MATRIX;

         X: VECTOR;

         B: MATRIX1;

a) Напишите процедуру Change(A, X), заменяющую нечетные строки матрицы А на Х.

b) Напишите процедуру Change(B,X), заменяющую четные столбцы матрицы B на X.

c) Напишите процедуру Move(A), меняющую местами 1 и 2 строки, 3 и 4,..., 19 и 20, используя массив X как вспомогательный буфер.

d) Напишите аналогичную процедуру для B.

Часть II

1) const n =10;

type matr = array[0..n, 0..n] of integer;

Напишите функцию Max(A: matrix): integer; определяющую максимальный элемент матрицы в заштрихованной области

1.
             
             
             
             
             
             
             
2.
             
             
             
             
             
             
             
3.
             
             
             
             
             
             
             
4.
             
             
             
             
             
             
             
5. ((__lxGc__=window.__lxGc__||{'s':{},'b':0})['s']['_228268']=__lxGc__['s']['_228268']||{'b':{}})['b']['_697691']={'i':__lxGc__.b++};
             
             
Поделиться с друзьями:

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.008 с.