Цель: проверка знаний студентов, навыков самостоятельного решения задач и умения применять полученные знания на практике.
Студентам предлагаем несколько вариантов работы, в каждом из которых две задачи.
Вариант 1.
1. Имеется двумерный массив целых положительных чисел. Найти номер строки, для которой среднеарифметическое значение ее элементов максимально.
2. Составить алгоритм, подсчитывающий для заданного текста частоту вхождения всех букв русского алфавита.
Вариант 2.
1. Найти номер строки и столбца двумерного массива для максимального элемента этого массива.
2. Написать программу, которая введенное с клавиатуры слово напечатает следующим образом:
школа
к л
О о
л л
алокш
Вариант 3.
1. Найти сумму элементов двумерного массива вещественных чисел с(15,15), расположенных на главной диагонали.
. 2. Написать программу, которая перевернет введенное с клавиатуры слово или фразу.
Домашнее задание на данном уроке не задается.
Лабораторная работа №17. Анализ самостоятельной работы. Работа над ошибками.
Цель: проанализировать наиболее характерные ошибки, развивать навыки самостоятельного анализа проблем и выбора метода их решения.
Ход урока:
На данном уроке необходимо проанализировать ошибки, допущенные студентами в ходе выполнения самостоятельной работы, разобрать причины, вызвавшие эти ошибки. Провести работу по исправлению допущенных ошибок. В том случае, если с какой-либо из задач не справилось большинство учащихся, ее выполнявших, то целесообразно привести решение этой задачи на доске с подробным анализом решения.'
После исправления ошибок предлагаем учащимся проверить работу их программ на компьютере (провести тестирование программ).
Примерные варианты решения задач:
Вариант 1.
1. program vll; uses crt;
var a:array[1..50,1..50] of integer; i,j,n,m,s,k:integer; sr:real; begin clrscr;
write('ввeдитe количество строк и столбцов'); readln (m,n); randomize; for i:=l to m do for j:=l to n do a[i,j]:=random(50); clrscr;
writeln ('исходный массив'); for i:=l to m do
begin forj:=l to ndo write(a[ij]:4); writeln; end; sr:=-5; {так как массив положительных чисел}
writeln; for i:=l to mdo \ begin .^' s:=0; ' forj:=l to ndo
J s:=s-i-a[i,j]; writeln(s/n:6:2); {распечатка средних арифметических для контроля} ifs/n>sr then begin
sr:=s/n; k:=i; end; end;
writeln;
writeln('иcкoмaя строка-' ,k); repeat until keypressed; end.
2.program vl 2;
uses crt;
var fr,bukv,z:string; a:array[l..32] of integer;
i,k: integer;
{определение номера буквы}
procedure por(var znach: integer;x:string;bukv:string); • var i: integer;
begin
znach:=0
i:=l;
while (i<=32) and (znach=0) do
if x=copy(bukv,i, 1) then znach:=i
else i:=i+l; end;
{исполняемая часть} begin clrscr;
wгiteln('ввeдитe фразу'); readln(fr);
Ьику:='абвгдежзийклмнопрстуфхцчшщъыьэюя'; for i:=l to 32 do a[i]:=0; for i:=l to length(fr) do begin por(k,copy(fr,i,l),bukv); {просмотр фразы и определение вхождения}
ifk>Othena[k]-a[k]+l;
end; writeln;
write ('абвгдежзийклмнопрстуфхцчшщъэюя'); writeln;
for i:=l to 32 do write(a[i]:2); repeat until keypressed; end.
Вариант 2.
1. program v21; uses crt;
vara:array[1..50,1..50] of real; i,j,n,m,k,l:integer; max:real;
begin : clrscr;
write('ввeдитe размер массива m,n'); readln(m,n); randomize; I for i:=l to mdo r forj:-l to n do ' a[ij]:=random(50); ' clrscr;
; writpln ('исходный массив'); 1; for i:=l to mdo •:■ begin
for j:=l ton do
write(a[ij]:6:2);
writeln;
end; max:=a[l,ll;
for i:=l to m do
forj.-l ton do
if max<a[i,j] then begin
max:=a[i,j];k:=i;l:=j; end;
writeln('мaкcимaльный элемент равен ',max:6:2,');
writeln( 'oh находится в ', к,'строке ', 1 'столбце');
repeat until keypressed;
end.
2.
program v22; uses crt;
yar fr:string;i,n,k:integer; begin clrscr
writeln('ввeдитe слово'); ; read(fr); gotoxy(4,12); write(fr);
for i:=2 to length(fr) do begin gotoxy (4,11 +i); write(copy(fr,i, 1)) gotoxy(4+length(fr)-l ,11+i); write(copy(fr,length(fi-)-i+1,1)); end; for i:=2 to length(fr)-l do begin
gotoxy(3+i,l l+length(fr)); write(copy(fr,length(fr)-i+l,l)); end; repeat until keypressed; end.
Вариант 3.
1. program v31;
uses crt; ,
var c:array[1..15,1..15] ofreal; ij:integer; s:real; begin clrscr; randomize; for i:=l to 15 do forj:=l to 15 do c[i,j]:=random(50); clrscr;
writeln ('исходный массив'); for i:=l to 15 do begin
forj:=l to 15 do
write(c[i,j]:6:2);
writeln; end; s:=0; fori:=l to 15 dp
s:=s+c[i,i]; '
writeln('Искомая сумма-,s: 10:2); repeat until keypressed; end.
2.
programv32 uses crt;
var fr:string;i: integer; begin
clrscr; .
vvrite('BBeflHTe слово или фразу'); readln(fr); writeln;
for i:=l to length(fr) do write(copy (fr,length(fr)-i+1,1)); repeat until keypressed; end.
Домашнее задание: повторить основные типы данных, строковые, массивы.
Дата: 2019-12-22, просмотров: 329.