Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SODERZhANIE_Uch_Pr_dlya_PI.docx
Скачиваний:
6
Добавлен:
28.09.2019
Размер:
682.73 Кб
Скачать
  1. Практические задания

Написать представленные задачи в виде текстовых файлов в программе Word и проверить их работоспособность.

Создать на основе решения блок-схему каждой задачи.

  1. Составить программу, которая запрашивает возраст ребенка и затем выдает решение о приеме ребенка в школу (возраст ³ 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

начало

egin

for 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 do

F 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]

begin

max:=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

+

+

+

begin

flag:=0;j:=i-1;{j -стоит перед i}

a[i]

k:=0

while (flag=0) and (j>=1) do

begin

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 do

if 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]