
X: integer;
begin
writeln('Таблица степеней двойки');
x:=1;
for n:=0 to 10 do begin
writeln(n:2,x:6); x:=x*2;
end;
readln;
end.
21. Найдите номер столбца массива размером МхN, в котором находится наибольшее количество отрицательных элементов. Элементы вводятся с клавиатуры.
Решение:
program nomerstolb;
Var a: array[1..50,1..50] of integer;
b: array[1..50] of integer;
i, j, m, n, max, jmax: integer;
Begin
Write('сколько строк?'); Readln(m);
Write('сколько столбцов?'); Readln(n);
For i:=1 to m do
begin
For j:=1 to n do
begin
write('a[',i,',',j,']='); readln (a[i,j]); end; end;
for j:=1 to m do
begin
b[j]:=0;
for i:=1 to n do
if a[i,j]<0 then b[j]:=b[j]+1;
end;
max:=b[1]; jmax:=1;
For j:=2 to n do
begin
if b[j]>max then
begin
max:=b[j]; jmax:=j;
end;
writeln('наибольшее количество отрицательных элементов');
end; readln;
end.
22. Сконструируйте программу, которая упорядочит каждый столбец матрицы по возрастанию. Массив размером МхN, элементы которого задаются датчиком случайных чисел на интервале [-17;26].
Решение:
program porydok;
Var a: array[1..50,1..50] of integer;
i, j, n, m,t,r: integer;
Begin
Write('Сколько строк?'); Readln(m);
Write('сколько столбцов?'); Readln(n);
For i:=1 to m do
begin
For j:=1 to n do
begin
a[i,j]:=random(44)-17;
write(a[i,j],' ');
end;
Writeln;
end;
For j:=1 to n do
For r:=1 to m do
For i:=1 to m-1 do
if a[i,j]> a[i+1,j] then
begin
t:= a[i,j];
a[i,j]:= a[i+1,j];
a[i+1,j]:= t;
end;
For i:=1 to m do
begin
For j:=1 to n do write(a[i,j],' ');
Writeln; end; End.
23. Сконструируйте программу, которая содержит записи о книгах. Сведения о каждой из книг – название книги, фамилия автора, год издания. Программа должна определять количество книг, год издания которых меньше или равен 1600 г. Число книг задать программно.
Решение:
Program qq;
Uses Crt;
Type
Pupil=Record
nazvanie: string[30];
fam:String[20];
god:integer;
End;
Type
Myarray=Array [1..5] of pupil;
Var
Mas1:MyArray;
i,n,k:Integer;
Procedure Vvod(Var Mas:Myarray);
Begin
Write('vvedite chislo knig'); ReadLn(n); WriteLn;
For i:=1 to n do
With Mas[i] do
Begin
writeln('Vvedite cherez probel nazvanie knigi and familiy avtora');
WriteLn('Kniga ',i);
Write('nazvanie and fam ');
ReadLn(nazvanie,fam);
writeln('vvedite god');
Write('God izdania');
ReadLn(god);
WriteLn; End; End;
Procedure Vivod(Var Mas:myarray);
Begin
k:=0;
For i:=1 to n do
With Mas[i] do
If god<1600 then k:=k+1;
WriteLn('Kol-vo knig s godom izdania <1600 = ', k);
End;
Begin
ClrScr;
Vvod(Mas1);
Vivod(Mas1);
ReadLn;
End.
24. Напишите алгоритм и программу вычисления функции Z=F1(x). Значения аргумента x функции F1 задано интервалом целых значений отрезка [a1, b1]. Шаг изменений значений аргумента принять равным единице. Данные для решения задачи: F1=4x+1,
[a1,b1] =[-10, 3].
Решение:
program zadanie3;
uses crt;
var i,x:integer;
f1,f3, max, min, Z:real;
begin
clrscr;
Z:=0;
writeln('Vicislenie znachenia fynkcii Z=symmF1(x)');
writeln('-----------------------------------------');
for i:=-10 to 3 do
begin
x:=i;
f3:=4*x;
writeln('ESLI X=',i, ' to F1 =',f3:5:2);
Z:=Z+f1;
end;
writeln('Znachenie fynkcii Z = ', Z:5:2);
writeln;
writeln('Dlya vixoda nazmite Enter');
readln;
end.
25. Напишите функцию, которая сравнивает два целых числа и возвращает результат сравнения в виде одного из знаков: >, < или =.
Решение:
Program primer;
var
xl,x2: real;
res: char;
function Compare(a,b: real): char; begin
if a > b then Compare:='>' else
if a < b then Compare:='<'
else Compare:='=';
end;
begin
writeln('введите два числа и нажмите <Enter>');
write('->');
readln(xl,x2);
res:=Compare(xl,x2);
writeln(xl:6:2,res,x2:6:2);
readln; end.
26. Сконструируйте программу, которая создает файл phone.txt, находящийся на диске с:, в который можно записать фамилию, имя и номер телефона, например, вашего товарища. В файле каждый элемент данных (имя, фамилия, телефон) должен находиться в отдельной строке.
Решение:
Program qqq;
var
f: text;
fam: string[15]; name: string[15]; tel: string[9]; begin
writeln('Добавление в тел.справочник');
Assign(f,'d:\phone.txt');
Rewrite(f);
write('Фамилия->') ;
readln(fam);
write('Имя->');
readln(name);
write('Телефон ->') ;
readln(tel);
writeln(f,fam);
writeln(f,name);
writeln(f,tel);
close(f); writeln('Информация добавлена .');
writeln('Для завершения нажмите <Enter>.'); readln; end.
27. Сконструируйте программу для нахождения суммы положительных элементов в массиве размером M*N. Программу реализовать с использованием подпрограмм.
Решение:
Program primer;
Uses crt;
Type mas=array[1..4, 1..4] of integer;
Var tab:mas;
i,j:integer;
Symma:integer;
Procedure vvodmt(var m:mas);
Begin
Clrscr;
For i:=1 to 2 do
For j:=1 to 2 do begin
Writeln ('введите элементы массива N', i, ' ', j, ' ');
Readln(m[i,j]);
end;end;
Procedure Smtab(m: mas; var sm:integer);
Begin
Sm:=0;
For i:=1 to 2 do
For j:=1 to 2 do
If m[i,j]>0 then
Sm:=sm+m[i,j]; end;
Begin
Vvodmt(tab);
Smtab(tab, symma);
Writeln('сумма положительных= ', symma);
Readln; end.
28. Сконструируйте программу, которая вычисляет сумму элементов массива с четными номерами, содержащего N элементов. Элементы вводятся с клавиатуры.
Решение:
Program sumshet;
Var a: array[1..100] of real;
i, n: integer;
s,sred: real;
Begin
Write ('n='); Readln (n);
s:=0;
For i:=1 to n do
begin
write ('введите число'); readln (a[i]);
if i mod 2 = 0 then s:=s+a[i];
end;
writeln('сумма элементов с четными номерами: ',s:5:2); readln;
End.
29. Сконструируйте программу, которая вычисляет оптимальный вес пользователя, сравнивает его с реальным и выдает рекомендацию о необходимости поправиться или похудеть. Оптимальный вес вычисляется по формуле: рост (в сантиметрах)—100.
Решение:
Program qqq;
var w:real; h:real;
opt:real;
d:real;
begin
writeln('введите в одной строке через пробел');
writeln ('рост (см) и вес (кг), а затем нажмите <Enter>');
write('->'); readln(h,w); opt:=h-100; if w=opt then
writeln('ваш вес оптимален!') else
if w<opt
then begin
d:=opt-w;
writeln('вам надо поправиться ',
d:5:2,' кг.'); end else begin
d:=w-opt;
writeln('вам надо похудеть на ', d:5:2,'ЄЈ'); end; readln;
end.
30. Сконструируйте программу, которая вычисляет среднее арифметическое и определяет минимальное и максимальное число последовательности дробных чисел, вводимых с клавиатуры.
Решение:
Program primer;
var
a: real;
n, i: integer;
sum, sred, min, max: real;
begin
writeln('обработка последовательности дробных чисел.');
write ('введите кол-во последовательности чисел ->');
readln(n);
writeln('введите последовательность.');
writeln('после каждого числа нажимайте <Enter>');
write('->');
readln(a);
min:=a;
max:=a; sum:=a;
for i:=1 to n-1 do begin
write('->');
readln(a);
sum:=sum+a;
if a < min then min:=a;
if a > max then max:=a; end; sred:=sum/n;
writeln('кол-во чисел*',n);
writeln('среднее арифметическое:',sred:6:2);
writeln('минимальное число:',min:6:2); writeln('максимальное число:',max:6:2);
writeln('для завершение нажмите <Enter>'); readln; end.