ПРИМЕР ЛИНЕЙНОЙ ПРОГРАММЫ




Теперь, когда мы познакомились с операторами, необходимыми для составления линейной программы, рассмотрим еще один пример такой программы. Пусть дано два числа a и b - длины сторон прямоугольника. Найти площадь s и периметр p прямоугольника. На рис.6 представлена графическая схема алгоритма решения данной задачи, а программа приведена в примере pr2.

Рис. 6

program pr2;

var

a,b,s,p:real;

begin

writeln('Введите длины стоpон пpямоугольника:');

read(a,b);

s:=a*b;

p:=(a+b)*2;

writeln('Площадь = ',s:5:3);

writeln('Пеpиметp = ',p:5:3);

end.

 

 

В этой программе все операторы выполняются последовательно друг за другом. Выполнение программы начинается с вызова процедуры вывода writeln, которая выводит на экран подсказку "Введите длины сторон прямоугольника:", что обеспечивает удобный интерфейс с пользователем. Вызов процедуры read приводит к прерыванию программы до тех пор, пока пользователь не введет два числа. Далее вычисляются площадь и периметр прямоугольника и выводятся результаты на экран.

РАЗВЕТВЛЯЮЩИЯСЯ ПРОГРАММЫ

 

К разветвляющимся программам приводят задачи, в которых, в зависимости от некоторого условия, вычисления производятся тем или иным путем. Пусть нам необходимо вычислить значение y по формуле:

На рис.7 приведена графическая схема алгоритма, а программа - в примере pr3.

 

Рис. 7

 

program pr3;

var

x,y:real;

begin

writeln('Введите x:');

readln(x);

if x>0

then

y:=x*x*x+3

else

y:=x*sin(x);

writeln(y);

end.

 

 

В этой программе впервые встречается условный оператор и служит для выбора формулы вычисления y в зависимости от введенного значения x.

УСЛОВНЫЙ ОПЕРАТОР

Условный оператор служит для ветвлений в программе и имеет следующий синтаксис:

if <условие> then <оператор1> else <оператор2>.

Здесь if, then, else - ключевые слова (перев. с англ. если, то, иначе соответственно);

<условие> - логическое выражение типа сравнения (например, a>b, c<=d, f=1), логическому типу посвящен следующий раздел пособия;

<оператор1> и <оператор2> - любой оператор Турбо-Паскаля. Оператор работает следующим образом: если условие истинно, то выполняется <оператор1> и управление передается на следующий за условным оператор; если условие ложно, то выполняется <оператор2> и управление передается на следующий за условным оператор. Таким образом, всегда выполняется один из двух операторов: либо из ветви then, либо из ветви else.

Кроме вышеприведенной формы условного оператора, существует сокращенная форма условного оператора, в которой отсутствует ветвь else:

if <условие> then <оператор1>.

Оператор работает следующим образом: если условие истинно, то выполняется <оператор1> и управление передается на следующий за условным оператор; если условие ложно, то управление сразу передается на следующий за условным оператор. Таким образом, в зависимости от условия <оператор1> либо выполняется, либо не выполняется.

Рассмотрим фрагменты схем алгоритмов и соответствующие им фрагменты программ.

 

  if a>b then max:=a else max:=b;
if k>0 then s:=s+k;
if a>b then if a>c then max:=a else max:=c;
     

 

if a>b then

if a>c then

max:=a

else max:=c

else

if b>c then

max:=b

elsemax:=c;

 

В первом примере приведена полная форма условного оператора, во втором – сокращенная, в третьем – сокращенная с вложенным условным оператором и в четвертом - полная форма с вложенными в каждой ветви условными операторами. Вложенные условные операторы уменьшают число необходимых проверок, обеспечивают большую эффективность, но ухудшают читаемость программы, поэтому не рекомендуется слишком увлекаться вложением условных операторов.

При определении последовательности выполнения вложенных условных операторов следует учесть, что каждое else соответствует тому if, которое ему непосредственно предшествует, таким образом исключается всякая двусмысленность.

Условный оператор может оказаться негибким, так как выполняемые действия могут быть описаны только одним оператором. Если необходимо выполнить в ветви условного оператора несколько операторов, то в этом случае можно использовать составной оператор.

 

СОСТАВНОЙ ОПЕРАТОР

Когда необходимо добиться того, чтобы последовательность операторов работала как единый оператор, можно помещать эту последовательность между ключевыми словами begin и end. Такая конструкция называется составным оператором, или операторными скобками: begin открывает скобку, end – закрывает. Каждый оператор, входящий в состав составного оператора, заканчивается точкой с запятой. Рассмотрим примеры:

 

 

  if c>0 then begin s:=s+c; k:=k+1 end else c:=c-1;
if n<m then begin n:=n+1; m:=m-1; end else begin n:=n-1; m:=m+1; end;

 

Здесь следует обратить внимание на правила употребления точки с запятой:

- каждое описание переменной и определение константы заканчивается точкой с запятой;

- каждый оператор в теле программы завершается точкой с запятой, если сразу за ним не следуют ключевые слова end, else или until;

- после определенных ключевых слов, таких, как then, else, begin, var, const, никогда не ставится точка с запятой.

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

ЛОГИЧЕСКИЙ ТИП

Паскаль позволяет обрабатывать данные не только числового типа, но и других типов, например логического. Для обозначения логического типа используется ключевое слово boolean. Булевы (логические) переменные могут иметь одно из двух значений: true (истина) или false (ложь). Булевский тип является порядковым типом и упорядочен так, что false < true. По сравнению с типом real, который допускает миллионы различимых значений, может показаться, что тип boolean имеет ограниченную область применения. Однако, как это ни странно, именно ограниченность диапазона значений булевых переменных придает булевым выражениям их значимость.

Булевы выражения могут принимать несколько различных форм. Во-первых, они могут быть просто константами true (истина) или false (ложь). Оператор присваивания, использующий эту форму, аналогичен арифметическому оператору. Например, пусть переменные a и b логического типа:

var a,b:boolean;

тогда можно написать операторы:

a:=true;

b:=false.

Булевы выражения можно использовать для проверки отношений между двумя переменными: a>b,c<=d,k=m и т.д. Таким образом, условие в условном операторе является выражением логического типа. Кроме того, булевы выражения могут конструироваться с помощью булевых операций. Эти операции образуют инструментальный фундамент булевой логики, алгебры логики, разработанной в ХIХв. математиком Джорджем Булем. Рассмотрим три основные булевы операции.

Операция and – логическое пересечение (умножение, операция "и"). Выражение a and b дает значение true только в том случае, если a и b имеют значения true, в остальных случаях – false:

true and true = true

true and false = false

false and false = false

Операция or – логическое сложение (объединение, операция "или"). Выражение a or b дает значение false в том и только в том случае, если a и b имеют значения false, в остальных случаях – результат true:

true or true = true

true or false = true

false or false = false

Операция not – отрицание (операция "не"). Выражение not a имеет значение, противоположное значению a:

not true = false

not false = true

Эти операции полезны, если нужно проверить сложное условие:

 

if (a>b) and (a>c) then max:=a;

 

if (x=y) or (x=z) then z:=y;

 

ОдномерныЕ массивы

 

Приведем схему алгоритма формирования элементов массива с помощью датчика случайных чисел, вывод элементов массива на экран, вычисление суммы всех элементов.

Программа приведена в примере:

constn1=100; {максимальный размер массива}

type mas = array[1..n1] of integer;

var a:mas;

i,{индекс элемента массива}

n,s:integer;

begin

writeln ('Введите число элементов массива:');

read (n);

{ Формирование массива с помощью датчика случайных чисел}

randomize;{Инициализация датчика случайных чисел }

for i:=1 to n do

a [i]:=random(10);

writeln ('Полученныймассив');

for i:=1 to n do

write (a[i]:5);

writeln;

s:=0; { Нахождениесуммы }

for i:=1 to n do

s:=s+a[i];

writeln ('s=',s);

end.

 

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

const n1=100; {максимальный pазмеp массива}

type

mas = array[1..n1] of integer;

var

a:mas;

i, {индекс элемента массива}

n,s,

imax:integer;{индекс максимального элемента}

begin

writeln('Введите число элементов массива:');

read(n);

{Вводмассива}

for i:=1 to n do

begin

read(a[i])

end;

s:=0;

imax:=1;{пpедполагаем, что пеpвый элемент максимальный}

for i:=1 to n do

begin

{если элемент положительный, то прибавляем его к сумме}

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

{если текущий элемент массива больше максимального, то запоминаем его индекс}

if a[imax]<a[i] then imax:=i;

end;

writeln('максимальный элемент массива =',a[imax]);

a[imax]:=s;{ замена максимального элемента суммой }

writeln('s=',s);

writeln('Обpаботанныймассив:');

for i:=1 to n do

writeln (a[i]);

end.

 

2.4. двумерныЕ массивЫ

Приведена схема алгоритма формирования элементов массива с помощью датчика случайных чисел, вывод элементов массива на экран, вычисление суммы всех элементов двумерного массива. Программа дана в примере:

program pr21;

const n1=10; {максимальнoе количество стpок массива}

m1=10; { максимальное количество столбцов массива}

type mas = array[1..n1,1..m1] of integer;

var a: mas;

i, { текущийномеp строки }

j, { текущийномеp столбца }

n,s,m: integer;

begin

writeln('Введите число стpок и столбцов массива:');

read(n,m);

randomize;

for i:=1 to n do

for j:=1 to m do

a[i,j]:=random(10);

writeln('Полученныймассив');

for i:=1 to n do

begin

for j:=1 to m do

write (a[i,j]:5);

writeln;

end;

s:=0;

for i:=1 to n do

for j:=1 to m do

s:=s+a[i,j];

writeln('s=',s);

end.

 

Дана прямоугольная матрица. Отсортировать столбцы матрицы в порядке неубывания максимальных элементов столбцов. Пример решения:

 

const n1=10; {максимальнoе количество стpок массива}

m1=10; {максимальнoе количество столбцов массива}

type

mas = array[1..n1,1..m1] of integer;{квадpатнаяматpица}

var

a:mas;

b:array[1..m1] of integer;{массивизмаксимальныхэлементовстолбцов}

i, { текущийномеp стpоки }

j, { текущийномеp столбца }

n,m,d:integer;

fl:boolean;

begin

writeln ('Введите число стpок и столбцов массива:');

read(n,m);

for i:=1 to n do

for j:=1 to m do

begin

writeln('Введитеэлементмассива');

read(a[i,j]);

end;

writeln ('Исходныймассив');

for i:=1 to n do

begin

for j:=1 to m do

write (a[i,j]:5);

writeln;

end;

{Фоpмиpование одномеpного массива из максимальных

элементов столбцов}

forj:=1 tomdo {Пеpебиpаемвсестолбцы}

begin

b[j]:=a[1,j];{Пpинимаем пеpвый элемент в столбце за максимальный }

for i:=2 to n do{Пеpебиpаем все элементы в столбце}

if a[i,j]>b[j] then b[j]:=a[i,j];

end;

{Сортировка одномерного и двумерного массива}

repeat

fl:=true;{Поднятьфлаг}

for j:=1 to m-1 do {Перебрать элементы одномерного массива}

if b[j]>b[j+1] then { Проверить нужна ли перестановка }

begin

fl:=false;{опустить флаг}

{Переставить элементы одномерного массива и}

d:=b[j];

b[j]:=b[j+1];

b[j+1]:=d;

{столбцыдвумерногомассива}

for i:=1 to n do

begin

d:=a[i,j];

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

a[i,j+1]:=d;

end;

end;

until fl;{Завершить сортировку,если флаг не опускался}

writeln('Отсортированныймассив');

for i:=1 to n do

begin

for j:=1 to m do

write (a[i,j]:5);

writeln;

end;

end.

 

ЗАПИСИ

 

Рассмотрим пример программы с использованием массива структур. В ведомости, содержащей фамилии группы студентов, оценки по физике, математике и программированию определить средний балл каждого студента и средний балл в группе.

В программе использованы следующие обозначения:

n1– максимальное количество студентов в группе;

n – реальное количество студентов в группе;

student– идентификатор типа, представляющий запись с полями fam, fiz, mat, pr и ss;

fam – поле записи, содержащее фамилию студента;

fiz, mat, pr – поле записи, содержащее оценки по физике, математике и программированию соответственно;

ss – поле записи, содержащее средний балл студента;

ved – массив, содержащий элементы типа student;

sg – средний балл группы;

i – индекс элемента массива ved;

Программа выглядит следующим образом:

constn1=30;

type student=record

fam:string[10];

fiz,mat,pr:integer;

ss:real;

end;

var ved:array[1..n1] of student;

i,n:integer;

sg:real;

begin

writeln('сколько студентов в группе?');

read(n);

for i:=1 to n do

with ved[i] do

begin

writeln('введитефамилиюстудента');

read(fam);

writeln('введитеоценки');

read(fiz,mat,pr)

end;

sg:=0;

for i:=1 to n do

with ved[i] do

begin

ss:=(fiz+mat+pr)/3; {вычислениесреднегобалластудента}

sg:=sg+ss;

end;

sg:=sg/n;{вычисление среднего балла группы}

writeln('ведомость группы');

write('! фамилия! физика! мат! прогр!');

writeln('! cp. балл!')

for i:=1 to n do

with ved[i] do

begin

write('!',fam:10,'!',fiz:10,'!',mat:10,'!',pr:10);

writeln('!',ss:10:2,'!');

end;

writeln('средний балл в группе =',sg);

end.

 

СТРОКИ СИМВОЛОВ

 

Приведем пример программы, определяющие количество символов и слов в произвольнойстроке символов.

program pr28;

const YES=1; {Константы, опpеделяющие является ли }

NO=0; { текущий символ элементом слова}

var

str: string;

nw, {Количество слов}

nc, {Количество символов}

inword: integer; {Переменная, принимающая значения констант YES или NO}

i: integer;

begin

writeln('Введитестpокусимволов:');

read (str);

nw:=0;nc:=0;inword:=NO;

for i:=1 to length(str) do

begin

nc:=nc+1;

if str[i] in [':','.',',','"','!','?',';',' ']{Если pразделитель,}

then inword:=NO {то текущий символ вне слова}

else

if inword=NO then

begin inword:=YES;

nw:=nw+1;

end;

end;

writeln ('nc=',nc,'nw=',nw);

end.

 

Практические задания

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

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

 

1. Составить программу, которая запрашивает возраст ребенка и затем выдает решение о приеме ребенка в школу (возраст ³ 7лет).

 

Program sh;

Var v: integer;

Begin

Write(‘Введите возраст ребенка’);

Readln(v);

If v>=7 then writeln(‘Принимаемвшколу’)

else writeln (‘Не принимаем в школу’);

end.

 

 
 

 


2. Модифицировать данную программу, чтобы ограничить верхнюю границу приема в школу 16 годами.

Program sh;

Var v: integer;

Begin

Write(‘Введите возраст ребенка’);

Readln(v);

If (v>=7) and (v<=16) then writeln(‘Принимаемвшколу’)

else writeln (‘Не принимаем в школу’);

end.

 
 

 


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.

 

       
   
 
 

 


4.Составить программу, которая по введенному номеру дня недели выводит на экран его название.

Program days;

Var day:byte;

Begin

Write(‘Введите номер дня недели’);

Readln(day);

Case day of

-
1: writeln(‘Понедельник’);

+
+
2: writeln(‘Вторник’);

3: writeln(‘Среда’);

4: writeln(‘Четверг’);

-
-
-
5: writeln(‘Пятница’);

+
6: writeln(‘Суббота’);

7: writeln(‘Воскресенье’)

elsewriteln(‘Такого дня нет’);

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(‘Осень’)

elsewriteln(‘Такогомесяцанет’);

end; end.


 

       
 
 
   

 


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.

 

 


7. Найти сумму 10 произвольных чисел.

Programz;

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.


 

 


 


8. В автопарке, имеющем 18 машин марки КАМАЗ, каждый из КАМАЗов перевез за день определенный объем груза. Определить суммарный объем перевозок грузов за день.

Useswincrt;

TypeKAMAZ=array[1..18] ofreal;

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.



9. Известна среднемесячная зарплата всех 16 сотрудников одного отдела. Найти величину наибольшей среднемесячной зарплаты в отделе.

Useswincrt;

TypeZARPL=array[1..16] ofreal;

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, ‘руб.’);

End.

 

 
 

       
   
 
 

 

 


10. Известны результаты экзамена по информатике одной группы из 22 студентов. Определить, сколько студентов сдали экзамен на 4 и 5.

Текст программы:

TypeINF=array[1..22] ofinteger;

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.

 

       
   
 
 

 

 


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.

 
 




12. Задан одномерный массив В (10), заполненный произвольным образом. Подсчитать количество элементов массива, больших заданного числа k.

Varb:array [1..10] ofword;

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.

       
   
 
 



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.

           
 
   
 
   
 



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]
-
+
end.
+
-
+
-

 

 

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

ProgramSessia;

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]);

end.

           
 
   
-
 
   
 


 

 


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.

 
 

 



17. Задан двумерный массив В(10, 10), заполненный случайными числами из [-10,10]. Найти и вывести на экран те элементы массива, которые

больше заданного числа k.

Programmassiv;

Uses crt;

Var b: array[1..10, 1..10] of integer; i, j, k:integer;

Begin

Clrscr;

for i:=1 to 10 do

begin

for j:= 1 to 10 do

begin

b [i,j]:= random(20)-10;

-
write(b[i,j], ‘ ‘);

end;

writeln;

end;

+
write(‘Введитечисло k’);

readln (k);

b [i,j]:= random(20)-10
For i:=1 to 10 do

For j:=1 to 10 do

If b[i, j] >k then write (b[i, j]);

+
-
+
-
End.

 

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.

 


 

       
 
 
   

           
   
 
   
 
 

 

 



19. Найти значение выражения 1*1+2*2+...+n*n

varn,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.

 



20. Найтисумму.

var a,b,s: integer;

begin

clrscr;

write('a=');readln(a);

write('b=');readln(b);

s:=a+b;

write('сумма s=',s);

readln;

end.

 

 

 


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.

 

       
   
 
 


       
 
   
-
 



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.

 
 



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)Блок-схема основной программы:

       
   
 
 


24. Количествово букв "а" в тексте

uses crt;

var d: string;

n,i: integer;

begin

write('наберитетекст ');

readln(d);

n:=0;

for i:=1



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-12-12 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: