Рабочая программа учебной практики
Направление подготовки – Прикладная информатика
Профиль подготовки - социально-культурная сфера
Квалификация выпускника - бакалавриат
Краснодар – 2012
Содержание
1.ВВЕДЕНИЕ………………………………………..…..3-4
2.Цели и задачи практики………………………………4
3.Задания и их решения….…….…………....................6
4.Дневник практики…………………………..……...76
5.Рекомендуемая литература.…………………………..78
ВВЕДЕНИЕ
Так как ЭВМ является "слепым" исполнителем программ, то успешное решение задачи полностью определяется квалификацией программиста.
В общем случае решение задачи на ЭВМ можно разбить на следующие этапы:
- постановка задачи;
- разработка алгоритма;
- составление программы;
- трансляция программы;
- отладка и выполнение программы;
- анализ результатов.
В программировании используется такое определение алгоритма: "алгоритм – это точное предписание, определяющее вычислительный процесс, ведущий от варьируемых начальных данных к искомому результату".
Алгоритм должен обладать следующими основными свойствами:
- детерминированность (определенность) – при заданных исходных данных обеспечивается однозначность искомого результата;
- массовость – пригодность для задач данного типа при исходных данных, принадлежащих заданному подмножеству;
- результативность – реализуемый вычислительный процесс выполняется за конечное число этапов с выдачей осмысленного результата;
- дискретность – разбиение на отдельные этапы, выполнение которых не вызывает сомнений.
Под программой понимают описание, воспринимаемое ЭВМ и достаточное для решения на ней определенной задачи. Для создания программы используются искусственные языки, называемые языками программирования. ЭВМ, как правило, непосредственно воспринимает и выполняет программы, написанные только на одном из языков программирования – машинном языке для данной ЭВМ. С помощью специальных программ можно получить опосредованное "понимание" других языков. Одна из таких программ – транслятор. Транслятор – это программа, осуществляющая перевод текстов с одного языка на другой, т.е. с входного языка (Паскаль и др..) на машинный язык реальной ЭВМ. Программа, попадающая на вход транслятора, называется исходной, а результат трансляции – объектной программой.
Цели и задачи практики
- изучение и освоение методов разработки и приемов эксплуатации информационных систем.
- подготовка к осознанному и углубленному изучению общепрофессиональных и специальных дисциплин;
- углубление и систематизация знаний по программному обеспечению информационных систем;
- подготовка будущего специалиста к самостоятельной трудовой деятельности;
- формирование умений и навыков по базовым информационным технологиям;
- приобретение умений и навыков по рабочей профессии «Прикладная информатика в социально-культурной сфере»;
- развитие профессионального мышления;
- обеспечение связи практики с теоретическим обучением.
- формирование умений и навыков по работе на персональном компьютере;
- приобретение практических умений и навыков по видам деятельности техника – производственно-технологической и организационно-управленческой;
Задания и их решения
Практические задания
Написать представленные задачи в виде текстовых файлов в программе 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 (‘Не принимаем в школу’);
end.
| начало |
| Ввод 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(‘y=’, y);
end.
| Ввод x,y |
| конец |
| s:=x+y p:=x*y |
| x>y |
| x:=s y:=p |
| y:=s x:=p |
| + |
| - |
| x= y= |
4.Составить программу, которая по введенному номеру дня недели выводит на экран его название.
| начало |
Var day:byte;
Begin
Write(‘Введите номер дня недели’);
| Ввод day |
Case day of
| - |
| + |
| + |
| Пн |
| Пн |
| Пн |
| Ср |
| - |
| - |
| - |
| + |
| Вт |
else writeln(‘Такого дня нет’);
end; end.
| Чт |
| Пт |
| Сб |
| Вс |
| - |
| - |
| - |
| + |
| + |
| + |
| + |
| Такого дня нет |
| конец |
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.
| начало |
| k<N |
| k:=k+1 |
| Ввод x |
| + |
| - |
| N:=10, k:=0, s:=0 |
| s:=s+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, ‘руб.’);
| начало |
| Ввод sort[i] |
| i:=1..16 |
| + |
| - |
| max:=sort[1] |
| конец |
| i:=2..16 |
| max:=sort[i] |
| max |
| max<sotr[i] |
| + |
| - |
| + |
| - |
| конец |
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.
| начало |
| p:=0 |
| i:=1..22 |
| + |
| - |
| stud[i]<1) or (stud[i]>5) |
| - |
| + |
| - |
| stud[i]:=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
If 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);
| max:=a[2,1] |
| max:=a[2,j] |
| j:=2..4 |
| - |
| начало |
| + |
| i:=1..3 j:=1..4 |
| + |
| конец |
| max |
| - |
| + |
| - |
| max<a[2,j] |
| a[i,j] |
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]);
| i:=1..5 |
| - |
| + |
| (r[i,1]=5) and (r[i,2]=5) |
| - |
| конец |
| + |
| st[i] |
| i:=1..5 |
| + |
| - |
| Ввод st[i], r[i,1], r[i,2] |
| начало |
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
| начало |
for j:= 1 to 10 do
begin
b [i,j]:= random(20)-10;
| - |
| i:=1..10 j:=1..10 |
end;
writeln;
end;
| + |
readln (k);
| b [i,j]:= random(20)-10 |
For j:=1 to 10 do
If b[i, j] >k then write (b[i, j]);
| конец |
| b[i,j] |
| + |
| - |
| b[i, j] >k |
| + |
| - |
| i:=1..10 j:=1..10 |
| Ввод k |
| b[i,j] |
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]; |
| - |
| i:=1.. k-1 |
| k mod i=0 |
| + |
| + |
| - |
| - |
| d[k1]:=i,inc(k1) |
| i:=1..k1-1 |
| + |
| - |
| sum:=sum+d[i] |
| k=sum |
| + |
| - |
| совершенное |
| не совершенное |
| конец |
| k=1 |
| + |
| - |
| совершенное |
| sum:=0, k1:=1 |
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;
| начало |
| Ввод 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) Блок-схема процедуры:
| 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]);
| начало |
sum:=0;
for i:=1 to n do
| Ввод n |
s:=sum/n;
writeln('ср ариф= ',s);
| - |
| - |
| i:=1..n |
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;
| начало |
write('p=',p);
readln;
| Ввод n,a |
| 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;
| f:=f*i |
| f:=1 |
| Ввод n |
| начало |
| конец |
| 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;
| Ввод syt |
| начало |
| 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;
| Ввод t |
| начало |
| 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;
| f:=a+sqr(f) |
| f:=a |
| Ввод n,a |
| начало |
| i:=1..n |
| - |
| конец |
| 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 |
| начало |
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
| a[i] |
| Ввод n |
| начало |
| i:=1..n |
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
| Ввод n |
| max:=a[1];k:=1 |
| конец |
| i:=1.. n |
| начало |
| - |
| + |
| k |
write('n=');readln(n);