- •Методические указания по проведению учебной практики
- •Раздел 1. Способы описания алгоритмов
- •Раздел 2. Программирование на языке паскаль
- •2.1. Линейные программы структура программы
- •Описание переменных
- •Оператор присваивания
- •Процедуры ввода и вывода
- •Пример линейной программы
- •2.2. Разветвляющияся программы
- •Условный оператор
- •Составной оператор
- •Логический тип
- •ОдномерныЕ массивы
- •2.4. ДвумерныЕ массивЫ
- •2.5. Записи
- •2.6. Строки символов
- •Практические задания
- •Задания для самостоятельной работы
Практические задания
Написать представленные задачи в виде текстовых файлов в программе Word и проверить их работоспособность.
Создать на основе решения блок-схему каждой задачи.
Составить программу, которая запрашивает возраст ребенка и затем выдает решение о приеме ребенка в школу (возраст ³ 7лет).
Program sh;
Var v: integer;
Begin
Write(‘Введите возраст ребенка’);
Readln(v);
If v>=7 then writeln(‘Принимаем в школу’)
else writeln (‘Не принимаем в школу’);
end.
начало
конец
v>=7
Ввод v
Прин.
Не прин.
+
-
2. Модифицировать данную программу, чтобы ограничить верхнюю границу приема в школу 16 годами.
Program sh;
Var v: integer;
Begin
Write(‘Введите возраст ребенка’);
Readln(v);
If (v>=7) and (v<=16) then writeln(‘Принимаем в школу’)
else writeln (‘Не принимаем в школу’);
e
начало
nd.
Ввод v
v>=7
and
v<=16
+
-
Не прин.
Прин.
Прин.
конец
3.Даны два числа. Меньшее из этих чисел заменить суммой данных чисел, большее - произведением.
Program sh;
Var x, y,s,p: integer;
Begin
Write(‘Введите 2 числа’);
Readln(x, y);
s:=x+y; p:=x*y;
If x>y
then begin y:=s; x:=p; end
else begin x:=s; y:=p; end;
writeln(‘x=’, x);
writeln(‘y=’, y);
end.
начало
Ввод x,y
s:=x+y
p:=x*y
x>y
+
-
x:=s
y:=p
y:=s
x:=p
x=
y=
конец
4.Составить программу, которая по введенному номеру дня недели выводит на экран его название.
P
начало
rogram days;Var day:byte;
B egin
Write(‘Введите номер дня недели’);
R
Ввод day
eadln(day);Case day of
1
-
: writeln(‘Понедельник’);2
1
2
3
+
+
: writeln(‘Вторник’);3
Пн
Пн
Пн
: writeln(‘Среда’);4
Ср
: writeln(‘Четверг’);5
-
-
-
: writeln(‘Пятница’);6
+
: writeln(‘Суббота’);7
Вт
: writeln(‘Воскресенье’)e lse writeln(‘Такого дня нет’);
e
конец
nd; end.
4
5
6
7
-
-
-
-
+
+
+
+
Чт
Сб
Вс
Пт
-
Такого дня нет
конец
5.Составить программу, которая по введенному номеру месяца выводит на экран название времени года.
Program m;
Var k:byte;
Begin
Write(‘Введите номер месяца’);
Readln(k);
Case k of
1, 2, 12: writeln(‘Зима’);
3, 4, 5: writeln(‘Весна’);
6, 7, 8: writeln(‘Лето’);
9, 10, 11: writeln(‘Осень’)
else writeln(‘Такого месяца нет’);
end; end.
начало
Ввод k
1,2,12
3,4,5
Весна
-
+
Зима
+
+
+
-
-
конец
6,7,8
Лето
9,10,11
Осень
-
Такого месяца нет
6.Вывести на экран таблицу перевода из градусов по шкале Цельсия в градусы по Фаренгейту для значений от 15°С до 30°С с шагом в 1°С. Перевод осуществляется по формуле: F=C*1.8+32.
Program zf;
Var i:integer; f:real;
Begin
Writeln(‘Температура’);
For i:=15 to 30 do
Begin
f:=i*1.8+32;
Writeln(‘по Цельсию’, i, ‘по Фаренгейту’, f:5:2);
End;
End.
начало
Температура
i:=15..30
-
+
f:=i*1.8+32
по Цельсию, i,
по Фаренгейту, f
конец
7. Найти сумму 10 произвольных чисел.
Program z;
Const
N=10;
Var k, x, s: integer;
Begin
k:=0; s:=0; {k- количество введенных чисел}
while k < N do
begin
k:=k+1;
write(‘Введите число’);
readln(x);
s:=s+x;
end;
writeln(‘Сумма чисел равна’, s);
end.
начало
N:=10, k:=0, s:=0
k<N
-
+
s:=s+x
k:=k+1
Ввод x
s
конец
8. В автопарке, имеющем 18 машин марки КАМАЗ, каждый из КАМАЗов перевез за день определенный объем груза. Определить суммарный объем перевозок грузов за день.
Uses wincrt;
Type KAMAZ=array [1..18] of real;
Var
i:integer;
p:KAMAZ;
S:real;
Begin
S:=0;
For i:=1 to 18 do
Begin
Writeln(‘Введите объем перевозок’, I,‘-ой машины, т’);
Readln(p[i]);
S:=S+p[i]; End;
Writeln(‘Суммарный объем перевозок S=’,S:8:2,‘т’);
End.
начало
конец
i:=1..18
S:=0
+
-
Ввод p[i]
S:=S+p[i]
S
9. Известна среднемесячная зарплата всех 16 сотрудников одного отдела. Найти величину наибольшей среднемесячной зарплаты в отделе.
Uses wincrt;
Type ZARPL=array [1..16] of real;
Var
i:integer;
sotr:ZARPL;
max:real;
Begin
For i:=1 to 16 do
Begin
Writeln(‘Введите зарплату ’,I,‘-го сотрудника, руб.’);
Readln(sotr[i]);
End;
max:=sotr[1];
For i:=2 to 16 do
If max<sotr[i] then max:=sotr[i];
Writeln(‘Наибольшая зарплата =’, max:10:2, ‘руб.’);
E
начало
nd.
Ввод sort[i]
i:=1..16
+
-
max:=sort[1]
конец
i:=2..16
max<sotr[i]
-
+
+
max:=sort[i]
-
max
конец
10. Известны результаты экзамена по информатике одной группы из 22 студентов. Определить, сколько студентов сдали экзамен на 4 и 5.
Текст программы:
Type INF=array[1..22] of integer;
Var
stud:INF;
i,p:integer;
begin
p:=0;
for i:=1 to 22 do
begin
stud[i]:=0;
while ((stud[i]<1) or (stud[i]>5)) do
writeln(‘Введите оценку ’,i,’-го студен-та’);
readln(stud[i]);
if stud[i]>3 then p:=p+1;
end;
writeln(‘На 4 и 5 сдали экзамен ’,p,’ сту-дентов’);
end.
начало
i:=1..22
-
-
+
stud[i]:=0
stud[i]<1) or (stud[i]>5)
-
-
+
-
p:=0
+
Ввод stud[i]
stud[i]>3
+
p:=p+1
На 4 и 5 сдали экзамен p сту-дентов
конец
11. Предположим, известны результаты соревнований по стрельбе, в которых принимали участие 9 человек. Расположить данные результаты в порядке возрастания набранных при стрельбе очков.
Type STREL=array[1..9]of integer;
Var
rez:strel;
i,j,s:integer;
Begin
For i:=1 to 9 do
begin
writeln(‘Введите результаты ’,i,’-го участни-ка’);
readln(rez[i]);
end;
for i:=1 to 8 do
for j:=i+1 to 9 do
if rez[i]>rez[j] then
begin
s:=rez[j];
rez[j]:=rez[i];
rez[i]:=s;
end;
writeln(‘Отсортированные по возрастанию результаты:’);
for i:=1 to 9 do write (rez[i]:5,’ ‘);
end.
начало
i:=1..9
+
-
Ввод rez[i]
s:=rez[j],
rez[j]:=rez[i],
rez[i]:=s,
i:=1..8 j:=i+1..9
+
-
конец
Отсортированные по возрастанию результаты:
rez[i]>rez[j]
+
-
i:=1..9
+
-
rez[i]
12. Задан одномерный массив В (10), заполненный произвольным образом. Подсчитать количество элементов массива, больших заданного числа k.
Var b:array [1..10] of word;
I, k, s : word;
Begin
s:=0;
For i:=1 to 10 do
b[i]:=random(100);
Write(‘Введите число k’);
Readln(k);
For i:=1 to 10 do
I f b[i]>k then s:=s+1;
Write(‘Количество элементов’, s);
End.
начало
i:=1..10
+
-
Ввод k
b[i]:=random(100);
s:=0
i:=1..10
b[i]>k
s:=s+1
+
-
+
-
s
конец
13. Определить самую высокую температуру и самый теплый день в мае.
Var t:array [1..31] of integer;
I, max, n : integer;
Begin
For i:=1 to 31 do
Begin
t[i]:=random(30);
Write(b[i], ‘ ‘);
End;
max:=t[1]; n:=1;
For i:=2 to 31 do
Begin
If t[i] > max then max:=t[i]; n:=i ;
End;
Write(‘максимальная температура’, max, ‘в’, n, ‘день’);
End.
начало
i:=1..31
t[i]:=random(30)
+
-
b[i]
max:=t[1]
n:=1
i:=2..31
+
-
t[i] > max
-
max:=t[i]
n:=i
max,n
конец
+
14. Пусть задана матрица А из действительных чисел размера 3х4. Найти наибольший элемент во второй строке данной матрицы.
Type Matr=array[1..3,1..4] of real;
Var max:real;
a:Matr;
i,j:integer;
begin
for i:=1 to 3 do
for j:=1 to 4 do
begin
writeln(‘Введите элемент а[‘,i,’,’,j,’]’);
readln(a[i,j]);
end;
max:=a[2,1];
for j:=2 to 4 do
if max<a[2,j] then max:=a[2,j];
writeln(‘Наибольший элемент второй строки=’,max:8:2);
e
i:=1..3 j:=1..4
+
-
j:=2..4
max:=a[2,j]
начало
max:=a[2,1]
nd.
a[i,j]
+
-
max<a[2,j]
-
max
конец
+
15. Известны результаты 5 студентов по итогам экзаменов по химии и информатике. Найти фамилии студентов, сдавших оба экзамена на отлично.
Program Sessia;
type PR=array [1..5,1..2]of integer;
Fam=array[1..5]of string[10];
var r:PR;
st:Fam;
i,j:integer;
begin
for i:=1 to 5 do
begin
writeln('Введите фамилию ',i,'-го сту-дента');
readln(st[i]);
writeln('Введите оценку данного сту-дента по химии (от 2 до 5)');
readln(r[i,1]);
writeln('Введите оценку данного сту-дента по информатике (от 2 до 5)');
readln(r[i,2]);
end;
for i:=1 to 5 do
if (r[i,1]=5) and (r[i,2]=5) then writeln('Студент-отличник - ',st[i]);
e
i:=1..5
nd.i:=1..5
Ввод st[i], r[i,1], r[i,2]
-
начало
+
-
+
-
(r[i,1]=5) and (r[i,2]=5)
конец
+
st[i]
16. Сформировать таблицу Пифагора (таблица умножения) и вывести ее на экран.
Program Pifagor;
Uses crt;
Var p: array[1..9, 1..9] of integer; i, j:integer;
Begin
Clrscr;
for i:=1 to 9 do
for j:= 1 to 9 do
begin
p[i,j]:= i*j;
write(p[i,j], ‘ ‘);
writeln
end;
end.
i:=1..9
j:=1..9
+
-
начало
конец
p[i,j]:= i*j
p[i,j]
17. Задан двумерный массив В(10, 10), заполненный случайными числами из [-10,10]. Найти и вывести на экран те элементы массива, которые
больше заданного числа k.
Program massiv;
Uses crt;
Var b: array[1..10, 1..10] of integer; i, j, k :integer;
Begin
Clrscr;
for i:=1 to 10 do
b
начало
eginfor j:= 1 to 10 do
b egin
b [i,j]:= random(20)-10;
i:=1..10
j:=1..10
-
write(b[i,j], ‘ ‘);end;
w riteln;
end;
w
+
rite(‘Введите число k’);readln (k);
F
b [i,j]:= random(20)-10
or i:=1 to 10 doF or j:=1 to 10 do
If b[i, j] >k then write (b[i, j]);
E
конец
b[i,j]
Ввод k
i:=1..10
j:=1..10
+
-
b[i, j] >k
+
-
b[i,j]
nd.
18. Дано предложение. Сколько слов является перевёртышами и будет ли это число совершенным.
var i,j,k,l,l1,sum,k1 : longint;
a,b,c : string;
d : array [1..60] of longint;
begin
clrscr;
textcolor(11);
write('введите текст: ');
readln(a);
l:=length(a);
if (a[l]<>'.')or(a[l]<>'!')or(a[l]<>'?')
then begin
a[l+1]:=' ';
inc(l);
end
else a[l]:=' ';
for i:=1 to l do if (a[i]=' ')
then begin
l1:=length(b);c:='';
for j:=l1 downto 1 do c:=c+b[j];
if b=c then inc(k);b:='';
end
else b:=b+a[i];
if k=1 then begin
write('совершенное');
readln;halt;
end;
sum:=0;k1:=1;
for i:=1 to k-1 do if k mod i=0 then begin
d[k1]:=i;inc(k1);
end;
for i:=1 to k1-1 do sum:=sum+d[i];
if k=sum then write('совершенное')
else write('не совершенное');
readln;
end.
for
начало
l:=length(a)
Ввод а
-
+
a[l+1]:=' ', inc(l);
a[l]:=' '
(a[l]<>'.')or(a[l]<>'!')or(a[l]<>'?')
-
+
a[l]:=' '
l1:=length(b),c:=''
j:=11..1
inc(k)
+
+
c:=c+b[j]
-
a[l]:=' '
b:=''
b:=b+a[i];
-
+
+
+
k=1
совершенное
-
sum:=0, k1:=1
i:=1.. k-1
-
k mod i=0
d[k1]:=i,inc(k1)
-
i:=1 ..k1-1
+
-
sum:=sum+d[i]
k=sum
+
-
совершенное
не совершенное
конец
19. Найти значение выражения 1*1+2*2+...+n*n
var n,s,i : integer;
begin
write('n = ');
readln(n);
s:=0;
for i:=1 to n do
s:=s+i*i;
writeln('s = ',s);
readln;
end.
+
-
конец
s:=0
Ввод n
i:=1.. n
s:=s+i*i
s
начало
20. Найти сумму.
var a,b,s : integer;
begin
clrscr;
write('a=');readln(a);
write('b=');readln(b);
s:=a+b;
write('сумма s=',s);
readln;
end.
s:=a+b
начало
s
Ввод a,b
конец
21. Составить из двух таблиц 3-ю упорядоченную по возрастанию
var a : array [1..10] of longint;
b : array [1..20] of longint;
c : array [1..30] of longint;
n,m,k,l,i,j,min : longint;
begin
clrscr;
write('введ.кол.эл.таб.а n=');readln(n);
write('введ.кол.эл.таб.b m=');readln(m);
for i:=1 to n do
begin
write('a[',i,']=');readln(a[i]);
end;
for i:=1 to m do
begin
write('b[',i,']=');readln(b[i]);
end;
k:=n+m;{кол.эл.таб.с}
(*заносим эл.таб.а в таб.с*)
for i:=1 to n do c[i]:=a[i];
(*заносим эл.таб.в в таб.с*)
for i:=1 to m do c[i+n]:=b[i];
(*упорядочим таб.с[1..k] по возраст*)
for i:=1 to k-1 do
begin
l:=i;{номер мин.}min:=c[i];
for j:=i+1 to k do
if c[j]<min then
begin
min:=c[j];l:=j;
end;
c[l]:=c[i];{меняем местами 1-й и мин.эл.}
c[i]:=min;
end;
for i:=1 to k do writeln('Ответ:c[',i,']=',c[i]);
readln;
начало
end.
Ввод n,m
+
-
i:=1.. n
Ввод a[i]
k:=n+m
i:=1.. m
-
+
Ввод b[i]
i:=1.. m
-
+
c[i+n]:=b[i]
i:=1.. n
-
+
c[i]:=a[i]
конец
i:=1.. k
-
+
c[i]
c[l]:=c[i]
c[i]:=min
i:=i+1..k
+
l:=i,
min:=c[i]
i:=1..k-1
+
c[j]<min
+
min:=c[j], l:=j
-
-
22. Найти максимальное число из трёх
var a,b,c,max : integer;
begin
clrscr;
write('a=');readln(a);
write('b=');readln(b);
write('c=');readln(c);
if (a>b) and (a>c) then max:=a;
if (b>a) and (b>c) then max:=b
else max:=c;
write('max=',max);
readln;
end.
начало
(a>b) and (a>c)
+
max:=a
-
Ввод a,b,c
(b>a) and (b>c)
+
max:=b
-
max:=c
max
конец
23. Найти наибольшее из четырёх чисел.
var a,b,c,d,max,max1,max2 : real;
procedure bol2( aa,bb : real; var maxmax : real );
begin
if aa>bb then maxmax:=aa
else maxmax:=bb;
end;
begin
clrscr;
write('введте a,b,c,d через пробел ');
readln(a,b,c,d);
bol2(a,b,max1);
bol2(c,d,max2);
bol2(max1,max2,max);
writeln('max=',max);
readln;
end.
1) Блок-схема процедуры:
2
bol2( aa,bb : real; var maxmax : real )
)Блок-схема основной программы:
aa>bb
+
maxmax:=aa
maxmax:=bb
-
конец
начало
Ввод a,b,c,d
bol2(a,b,max1)
bol2(c,d,max2)
bol2(max1,max2,max)
max
конец
24. Количествово букв "а" в тексте
uses crt;
var d : string;
n,i : integer;
begin
write('наберите текст ');
readln(d);
n:=0;
for i:=1 to length(d) do
if d[i]='а' then n:=n+1;
write('В тексте а=',n);
readln;
end.
начало
Ввод d
n:=0
i:=1..length(d)
+
-
d[i]='а'
+
-
n:=n+1
n
конец
25. Составить программу определения среднего арифметического
uses crt;
var a : array [1..10] of integer;
s : real;
sum,n,i : integer;
begin
clrscr;
write('n=');readln(n);
for i:=1 to n do
begin
write('a[',i,']=');
readln(a[i]);
начало
end;sum:=0;
for i:=1 to n do
Ввод n
sum:=sum+a[i];s:=sum/n;
writeln('ср ариф= ',s);
i:=1..n
-
-
readln;end.
+
a[i]
+
sum:=0
s
i:=1..n
sum:=sum+a[i];
s:=sum/n
конец
26. Записать программу возвед. числа а в степень n
var a,n,i,p : integer;
begin
clrscr;
write('n=');readln(n);
write('a=');readln(a);
p:=1;
начало
for i:=1 to n do p:=p*a;write('p=',p);
readln;
Ввод n,a
end.
p
p:=1
i:=1..n
p:=p*a
конец
+
-
27. Сост. прог. выч. факториала числа n.
Пример: 5!=1*2*3*4*5
7!=1*2*3*4*5*6*7 }
var f,n,i : integer;
begin
clrscr;
write('n=');readln(n);
f:=1;
for i:=1 to n do f:=f*i;
write('f=',f);
readln;
начало
Ввод n
f:=1
f:=f*i
end.
конец
f
+
-
i:=1..n
28. Написать программу подсчета количества часов, минут и секунд в данном количестве суток.
uses crt;
var syt,has,min,sec : extended;
begin
clrscr;
write('сут = ');
readln(syt);
has:=24*syt;
min:=60*has;
sec:=60*min;
writeln('часов : ',has:0:0);
writeln('минут : ',min:0:0);
writeln('секунд : ',sec:0:0);
readln;
e
начало
Ввод syt
nd.
has:=24*syt
min:=60*has
sec:=60*min
has, min, sec
конец
29. Составить программу проверки есть ли в тексте буква "s"
var t : string;
i : integer;
ot : boolean;
begin
clrscr;
writeln('введите текст:');readln(t);
ot:=false;
for i:=1 to length(t) do
if t[i]='s' then ot:=true;
if ot=true then write('да')
else write('нет');
readln;
e
начало
Ввод t
nd.
i:=1..length(t)
конец
ot:=false
+
-
t[i]='s'
+
-
ot;=true
ot=true
+
-
Да
Нет
30. Найти значение выражения ( -натуральное число, а>0, х>0, у=1+(1/(1+(1/1+...1+1/x))..)) n знаков "+"
uses crt;
var x,n,i : integer;
y : real;
begin
clrscr;
write('n=');readln(n);
write('x=');readln(x);
y:=x;
for i:=1 to n do y:=1+1/y;
write('y=',y);
readln;
end.
i:=1..n
начало
Ввод n,x
y:=x
y:=1+1/y
y
конец
+
-
31. Найти значение выражения ( -нат. число, а>0, х>0, f=sqr(a+sqr(a+sqr(a+..sqr(a))..) ) n знаков "+"
uses crt;
var a,n,i : integer;
f : real;
begin
clrscr;
write('n=');readln(n);
write('a=');readln(a);
f:=a;
for i:=1 to n do f:=a+sqr(f);
write('f = ',f);
readln;
e
i:=1..n
начало
Ввод n,a
f:=a
f:=a+sqr(f)
nd.
конец
f
+
-
32. Дано предложение составить программу располагающую слова в порядке убывания длины слов
uses crt;
type slov = array [1..10] of string;
var p,b : string;
s : slov;
i,j,l : integer;
q : boolean;
procedure maxdl( ii,jj : integer;ss : slov; var ll : integer );
var t:integer;m:string;
begin
m:=ss[ii]; { считает max(t) }
ll:=ii; { l-номер max }
for t:=ii+1 to jj do
if length(m)<length(ss[t]) then
begin
m:=ss[t];
ll:=t;
end;
end {maxdl};
begin
clrscr;
write('текст p=');readln(p);
j:=1;
for i:=1 to length(p) do
begin
b:=p[i];
if b=' ' then j:=j+1
else s[j]:=s[j]+b;{ склеивание слова и заносим в таб }
end;
b:='';
for i:=1 to j do
begin
maxdl(i,j,s,l); { находим номер мах элм }
b:=s[i]; { меняем местами мах элм: }
s[i]:=s[l];
s[l]:=b;
end;
for i:=1 to j do write(s[i],' ');
readln;
end.
1 Блок-схема процедуры.
конец
t:=ii+1.. jj
Maxdl(ii,jj:integer; ss:slov;var ll:integer)
m:ss[ii], ll:=ii
t:=ii+1.. jj
length(m)<length(ss[t])
m:=ss[t],ll:=t
+
-
-
+
2 Блок-схема основной программы.
конец
i:=1..length(p)
начало
Ввод p
j:=1
b:=p[i]
+
-
b=’’
j:=j+1
s:=s[i]+b
b:=’’
i:=1..j
maxdl(i,j,s,l)
b:=s[i],s[i]:=s[l],
s[l]:=b
i:=1..j
s[i]
+
-
-
+
+
-
33. Дана вещ. таблица a[1..n].
Найти кол-во отрицательных элементов таблицы. }
uses crt;
var k,n,i : longint;
a : array [1..10] of longint;
begin
clrscr;
write('n = ');readln(n);
for i:=1 to n do
begin
write('a[',i,']=');readln(a[i]);
end;
for i:=1 to n do
начало
Ввод n
if a[i]<0 then inc(k);write('k = ',k);
readln;
end.
+
-
i:=1..n
inc(k)
i:=1..n
a[i]<0
a[i]
k
конец
+
-
-
+
34. Найти максимальный элемент таблицы а[1..10]
uses crt;
var a : array [1..10] of longint;
max,i,n : longint;
begin
clrscr;
write('n = ');readln(n);
for i:=1 to n do
begin
i:=1..n
начало
Ввод n
a[i]
write('a[',i,']=');readln(a[i]);end;
max:=a[1];
for i:=2 to n do
if a[i]>max then max:=a[i];
write('max = ',max);
readln;
end.
max:=a[i]
i:=2..n
a[i]>max
max
конец
+
-
-
+
max:=a[1];
-
+
35. Дана таблица [1..n] из целых чисел. Получить элементы, которые находятся между max и min
const L=20
type massiv=array[1..L] of integer;
var tabl:massiv;
n,i,max,min:integer;
begin
writeln(‘>n’);
readln(n);
for i:1 to n do
begin
writeln(i,’й элемент=’);
readln(tabl[i]);
end;
max:=tabl[1];
min:=tabl[1];
for i:=2 to n do
begin
if tabl[i]>max
then max:=tabl[i];
if tabl[i]<min
then min:=tabl[i]
end;
for i:1 to n do
if (tabl[i]>min) and (tabl[i]<max) then
writeln(i,’й элемент=’,tabl[i]);
readln;
end.
i:=1..n
начало
Ввод n
max:=tabl[1],min:=tabl[1]
-
+
Ввод tabl[i]
i:=2..n
tabl[i]>max
tabl[i]<min
min:=tabl[i]
max:=tabl[i]
tabl[i],i
(tabl[i]>min) and (tabl[i]<max)
i:=1..n
конец
-
+
-
+
+
-
+
-
-
+
36. Составить программу для определения лежит ли точка (x3;y3),
на прямой проходящей через точки (x1;y1),C(x2;y2)
uses crt;
var v,x1,x2,x3,y1,y2,y3 : real;
begin
clrscr;
write('x1=');readln(x1);
write('y1=');readln(y1);
write('x2=');readln(x2);
write('y2=');readln(y2);
write('x3=');readln(x3);
write('y3=');readln(y3);
v:= (x3-x1)*(y2-y1)-(y3-y1)*(x2-x1);
if v=0
then write('лежит')
else write('не лежит');
readln;
end.
+
-
начало
Ввод x1,x2,x3,y1,y2,y3
v=0
v:= (x3-x1)*(y2-y1)-(y3-y1)*(x2-x1);
конец
лежит
не лежит
37. Найти номер максимального элемента таблицы а[1..10]
uses crt;
var a : array [1..100] of longint;
k,i,n,max : longint;
begin
+
-
начало
i:=1.. n
конец
max:=a[1];k:=1
Ввод n
k
clrscr;write('n=');readln(n);
for i:=1 to n do
begin
write('a[',i,']=');readln(a[i]);
i:=2.. n
a[i]>max
end;max:=a[1];k:=1;
for i:=2 to n do
if a[i]>max then
begin
a[i]
max:=a[i];k:=i;end;
write('номер: ',k);
readln;
end.
max:=a[i]
k:=i
+
-
+
-
38. Дан линейный массив из n элементов. Составить программу упорядочивания элементов данного массива.
u
+
начало
i:=1.. n
Ввод n
a[i]
+
ses crt;var a : array [1..100] of longint;
j,i,n,max : longint;
begin
clrscr;
write('n=');readln(n);
for i:=1 to n do
begin
write('a[',i,']=');readln(a[i]);
end;
for i:=1 to n-1 do
for j:=i+1 to n do
if a[j]>a[i] then
max:=a[j]
a[j]:=a[i]
a[i]:=max
i:=1.. n-1
j:=i+1..n
a[j]>a[i]
beginmax:=a[j];
-
-
a[j]:=a[i];a[i]:=max;
end;
for i:=1 to n do writeln('a[',i,']=',a[i] );
+
readln;e
+
nd.
конец
a[i]
i:=1..n
-
39. Дано предложение, определить количество слов в нём.
uses crt;
var tec : string;
l,i,n : longint;
begin
clrscr;
-
начало
i:=1.. l
Ввод tec
l:=length(tec)+1;tec[l]:=' '
tec[i]=' '
n:=n+1
n
конец
write('введите текст:');readln(tec);l:=length(tec)+1;tec[l]:=' ';
for i:=1 to l do if tec[i]=' 'then n:=n+1;
write('В тексте ',n,' слов');
readln;
end.
+
-
+
40. Дан текст, определить кол-во слов "кот".
uses crt;
var a ,kot: string;
i,m,k : longint;
begin
clrscr;
write('введите текст ');readln(a);
k:=0;m:=length(a);
kot:= a[i]+a[i+1]+a[i+2];
for i:=1 to m-2 do kot='кот'then inc(k);
write('В тексте ',k,' слов кот');
readln;
end.
+
-
начало
i:=1.. m-2
Ввод a
k:=0;m:=length(a)
kot='кот'
inc(k)
k
конец
kot:= a[i]+a[i+1]+a[i+2]
+
-
41. Найти количество различных чисел в одномерной таблице
(*МЕТОД:Каждый следующий элемент сравниваем со всеми
предыдущими и если равных ему среди предыдущих не будет
то flag оставляем неизменным и счетчик к увеличиваем*)
uses crt;
v
начало
Ввод n
ar a : array [1..10] of longint;i,j,k,flag,n : integer;
begin
clrscr;
write('введите кол.эл.таб. а n=');readln(n);
for i:=1 to n do
begin
-
i:=1.. n
i:=2.. n
-
-
-
write('a[',i,']=');readln(a[i]);end;
k:=1;{Пусть разных чисел нет т.е.все одинак.}
for i:=2 to n do
+
+
+
beginflag:=0;j:=i-1;{j -стоит перед i}
a[i]
k:=0
while (flag=0) and (j>=1) dobegin
if a[i]=a[j] then flag:=1;{решение}
j:=j-1;
end;
if flag=0 then k:=k+1;
end;
write('Колич.различных чисел к=',k);
readln;
end.
flag=0
k:=k+1
a[i]=a[j]
j:=j-1
(flag=0) and (j>=1)
конец
flag:=1
flag:= 0;j:=i-1
k
+
+
42. Каждую букву слова A поместить в таблицу.
uses crt;
var a : string;
n,i : longint;
b : array [1..10] of string;
begin
clrscr;
write('введите текст:');readln(a);
n:=length(a);
for i:=1 to n do b[i]:=a[i];
for i:=1 to n do
begin
writeln('b[',i,']=',a[i]);
end;
readln;
end.
-
начало
i:=1.. n
Ввод a
n:=length(a)
a[i]
конец
+
b[i]:=a[i]
i:=1.. n
+
-
43. Составить алгоритм нахождения суммы цифр числа.
uses crt;
var i,n,k,s : longint;
b : array [1..10] of integer;
begin
clrscr;
write('введите число ');readln(n);
k:=1;
while n>=1 do
begin
b[k]:=trunc(n) mod 10; {элм. таб}{b[k]:= n mod 10};
n:=trunc(n)div 10; {n: = n div 10};
k:=k+1;
end;
for i:=1 to k do s:=s+b[i];
начало
Ввод n
k:=1
write('s=',s);readln;
end.
-
s
конец
+
b[k]:=trunc(n) mod 10,
n:=trunc(n)div 10,
k:=k+1
n>=1
-
+
s:=s+b[i]
i:=1..k
44. Найти двузначное число, сумма кубов цифр которого равна n.
uses crt;
var j,i : integer;
z,n : longint;
begin
clrscr;
начало
write('n=');readln(n);for j:=1 to 9 do
Ввод n
for i:=1 to 9 doif i*i*i+j*j*j=n then begin z:=10*i+j;
write('z=',z);
end;
j:=1..9
i:=1..9
readln;end.
i*i*i+j*j*j=n
+
z:=10*i+j
-
конец
z