-6A82E~1
.PDF
91
Пояснения к схеме алгоритма типовой задачи (лаб.раб. №4)
Задание матрицы, как кон-
станты
Ввод матрицы М1 раз-
мером n строк
3 столбца
92
Умножение матриц:
M=M1×M2
(M размером n×2; M1 размером n×3; M2 размером 3×2)
Вывод на экран и в файл
матрицы М размером n строк
2 столбца
Пояснения к схеме алгоритма индивидуальной задачи (лаб.раб. №4)
При выполнении схемы алгоритма для индивидуальной задачи необходимо учесть следующие моменты:
1)Размеры матриц: n строк, n столбцов.
2)Обе исходные матрицы вводятся с клавиатуры, поэтому задание матрицы константой нужно исключить, а блок ввода матрицы повторить для первой и второй матрицы.
3)Блок сложения матриц выглядит несколько по иному (см. ниже).
4)Выводить нужно три матрицы (две исходные и результирующую), поэтому блок вывода матрицы нужно сделать трижды.
5)Кроме этого присутствует еще доп.задание (см. ниже).
93
Сложение двух матриц
Фрагмент программы:
for i:=1 to n do
for j:=1 to n do M[i,j]:=M1[i,j]+M2[j,k];
Фрагмент схемы:
Сложение элементов матрицы
Фрагмент программы:
S:=0;
for i:=1 to n do
for j:=1 to n do S:=S+M[i,j]
Writeln(r,’Summa elementov matrix = ’,S);
Фрагмент схемы:
94
Поиск наибольшего элемента последней строки и его индекса
Поскольку с целью исключения случайных результатов до начала поиска необходимо инициализировать переменные, предназначенные для хранения значения максимума последней строки (max) и его номера столбца (jm), запи-
сываем в эти переменные существующие значения. В переменную max записываем значение первого элемента последней строки (max:=M[n,1]), а в переменную jm, предназначенную для хранения номера столбца максимального элемента последней строки, записываем 1 (jm:=1) соответственно. Так как при описании матрицы в программе первый индекс отвечает за номер строки, а второй – за номер столбца, то для обработки последней строки нужен один цикл, в котором будут просматриваться только элементы этой строки, т.е. первый индекс элемента массива будет фиксирован, а второй будет изменяться (M[n,j]). В цикле for j:=1 to n do будем проверять: если значение текущего элемента последней строки (M[n,j]) больше значения, записанного в переменную max, то в переменную max запишем значение текущего элемента (max:=M[n,j]), а в переменную для номера столбца запишем номер текущего столбца (jm:=j). После окончания цикла по столбцам последней строки необходимо вывести результат.
Фрагмент программы:
max:=M[n,1]; jm:=1; for j:=1 to n do
if M[n,j]>max then begin max:=M[n,j]; jm:=j;
end;
Writeln(r,’Max element posledney stroki = ’,max,’ N stolbtsa ’,jm);
Фрагмент схемы:
95
Индивидуальные задания
Вариант №1. Составить схему алгоритма и программу для задачи:
Сложить матрицы М1(n×n) и М2(n×n). Размер n и матрицы М1 и М2 ввести с клавиатуры. Исходные и результирующую матрицы вывести в файл. Найти наибольший элемент и его индексы результирующей матрицы. Результаты вывести в файл.
Вариант №2. Составить схему алгоритма и программу для задачи:
Сложить матрицы М1(n×n) и М2(n×n). Размер n и матрицы М1 и М2 ввести с клавиатуры. Исходные и результирующую матрицы вывести в файл. Найти сумму элементов результирующей матрицы. Результат вывести в файл.
Вариант №3. Составить схему алгоритма и программу для задачи: Перемножить матрицы М1(n×n) и М2(n×n). Размер n и матрицы М1 и М2
ввести с клавиатуры. Исходные и результирующую матрицы вывести в файл. Найти наибольший элемент и его индексы результирующей матрицы. Результаты вывести в файл.
Вариант №4. Составить схему алгоритма и программу для задачи: Перемножить матрицы М1(n×n) и М2(n×n). Размер n и матрицы М1 и М2
ввести с клавиатуры. Исходные и результирующую матрицы вывести в файл. Найти сумму элементов результирующей матрицы. Результат вывести в файл.
Вариант №5. Составить схему алгоритма и программу для задачи:
Сложить матрицы М1(n×n) и М2(n×n). Размер n и матрицы М1 и М2 ввести с клавиатуры. Исходные и результирующую матрицы вывести в файл. Найти наибольший элемент и его индексы первой строки результирующей матрицы. Результаты вывести в файл.
Вариант №6. Составить схему алгоритма и программу для задачи:
Сложить матрицы М1(n×n) и М2(n×n). Размер n и матрицы М1 и М2 ввести с клавиатуры. Исходные и результирующую матрицы вывести в файл. Найти сумму элементов первой строки результирующей матрицы. Результат вывести в файл.
Вариант №7. Составить схему алгоритма и программу для задачи: Перемножить матрицы М1(n×n) и М2(n×n). Размер n и матрицы М1 и М2
ввести с клавиатуры. Исходные и результирующую матрицы вывести в файл. Найти наибольший элемент и его индексы первой строки результирующей матрицы. Результаты вывести в файл.
96
Вариант №8. Составить схему алгоритма и программу для задачи: Перемножить матрицы М1(n×n) и М2(n×n). Размер n и матрицы М1 и М2
ввести с клавиатуры. Исходные и результирующую матрицы вывести в файл. Найти сумму элементов последней строки результирующей матрицы. Результат вывести в файл.
Вариант №9. Составить схему алгоритма и программу для задачи:
Сложить матрицы М1(n×n) и М2(n×n). Размер n и матрицы М1 и М2 ввести с клавиатуры. Исходные и результирующую матрицы вывести в файл. Найти наибольший элемент и его индексы главной диагонали результирующей матрицы. Результаты вывести в файл.
Вариант №10. Составить схему алгоритма и программу для задачи:
Сложить матрицы М1(n×n) и М2(n×n). Размер n и матрицы М1 и М2 ввести с клавиатуры. Исходные и результирующую матрицы вывести в файл. Найти сумму элементов главной диагонали результирующей матрицы. Результат вывести в файл.
Вариант №11. Составить схему алгоритма и программу для задачи: Перемножить матрицы М1(n×n) и М2(n×n). Размер n и матрицы М1 и М2
ввести с клавиатуры. Исходные и результирующую матрицы вывести в файл. Найти наибольший элемент и его индексы последнего столбца результирующей матрицы. Результаты вывести в файл.
Вариант №12. Составить схему алгоритма и программу для задачи: Перемножить матрицы М1(n×n) и М2(n×n). Размер n и матрицы М1 и М2
ввести с клавиатуры. Исходные и результирующую матрицы вывести в файл. Найти сумму элементов последнего столбца результирующей матрицы. Результат вывести в файл.
97
14 ПРОГРАММИРОВАНИЕ АЛГОРИТМОВ С ИСПОЛЬЗОВАНИЕМ СТРОК (лабораторная работа № 5)
Типовая задача:
Program PR;{Фамилия, №группы} var str1:string[2];
str2:string[3];
str3:string[4];
str:string;
d:char;
n:integer;
r:text;
BEGIN assign(r,'r-vt-5');rewrite(r); str1:='ab';
str2:='cde';
str3:=str1+str2;
d:=str3[4]; writeln(r,' d=',d); writeln(r,str3); str:=copy(str2,3,1);
writeln(r,' 1) str=',str); insert(str1,str,2); writeln(r,' 2) str=',str); insert(str2,str,3); writeln(r,' 3) str=',str); delete(str,3,2); writeln(r,' 4) str=',str); n:=length(str);
writeln(r,' длина строки Str =',n); close(r);
END.
В результате выполнения этой программы должны получить:
d=d abcd
1)str=e
2)str=eab
3)str=eacdeb
4)str=eaeb
длина строки Str =4
98
17 ПРОГРАММИРОВАНИЕ АЛГОРИТМОВ С ИСПОЛЬЗОВАНИЕМ ЗАПИСЕЙ (лабораторная работа №6)
Типовая задача. Начислить 13-ю зар.плату работникам фирмы (количество работников не более 10) в зависимости от стажа (в полных годах):
-менее 5 лет - в размере 70% зар.платы;
-от 5, но менее 10 лет - в размере 90% зар.платы;
-от 10 лет - в размере 100% зар.платы;
Данные о сотрудниках ввести с клавиатуры. В выходной файл вывести табель с указанием Ф.И.О. работника, его зар.платы, его стажа и 13-ой зар.платы.
Программа:
Program Lab_6_tip;{Familii} |
|
|
|
|
type zap=record |
|
|
|
|
fio:string[20]; {FIO rabotnika} |
|
|||
zp: real; {oklad} |
|
|
|
|
st: integer; {staz} |
|
|
||
v13: real; {13-zarplata} |
|
|
||
end; |
|
|
|
|
var tab:array[1..10] of zap; |
|
|
||
i,n:integer; |
|
|
|
|
r:text; |
|
|
|
|
BEGIN |
|
|
|
|
assign(r,'res-6'); rewrite(r); |
|
|
||
writeln('Kol-vo rabotnikov - ?');readln(n); |
|
|||
writeln(' Vvedite spisok |
FIO'); |
|
|
|
writeln(' |
|
oklad |
staz'); |
|
for i:=1 to n do begin |
|
|
|
|
readln(tab[i].fio); |
|
|
|
|
readln(tab[i].zp,tab[i].st); |
|
|
||
end; |
|
|
|
|
Writeln(r,' |
FIO |
',' |
Oklad ',' |
Staz ',' 13-zarplata'); |
for i:=1 to n do |
|
|
|
|
With tab[i] do begin |
|
|
|
|
if st<5 |
then v13:=zp*0.7 |
|
|
|
|
else if st<10 then v13:=zp*0.9 |
|
||
|
else v13:=zp; |
|
||
writeln(r,fio,'':20-length(fio),zp:7:2,st:7,v13:12:2); end;
close(r);
END.
99
Схема алгоритма
100
Индивидуальные задания
Вариант №1. Составить схему алгоритма и программу для задачи: Начислить премию работникам фирмы (количество работников не более
10) в зависимости от стажа (в полных годах): менее 10 лет – в размере 30% от оклада, от 10 лет – в размере 50% от оклада. Данные о сотрудниках ввести с клавиатуры. В выходной файл вывести табель с указанием Ф.И.О. работника, его оклада, стажа и суммы премии.
Вариант №2. Составить схему алгоритма и программу для задачи: Начислить премию работникам фирмы (количество работников не более
10) в зависимости от оклада – в размере 50% от оклада. Данные о сотрудниках ввести с клавиатуры. В выходной файл вывести табель с указанием Ф.И.О. работника, его оклада, и суммы премии.
Вариант №3. Составить схему алгоритма и программу для задачи:
Начислить новый оклад работникам фирмы (количество работников не более 10) в зависимости от повышения минимальной заработной платы со 100 руб. до 150 руб. Данные о сотрудниках ввести с клавиатуры. В выходной файл вывести табель с указанием Ф.И.О. работника, его старого и нового окладов.
Вариант №4. Составить схему алгоритма и программу для задачи: Начислить премию работникам фирмы (количество работников не более
10) в зависимости от стажа (в полных годах): менее 10 лет – нет премии, от 10 лет – в размере 50% от оклада. Данные о сотрудниках ввести с клавиатуры. В выходной файл вывести
1)табель с указанием Ф.И.О. работника, его оклада и стажа;
2)табель с указанием Ф.И.О. работника и суммы выплаты.
Вариант №5. Составить схему алгоритма и программу для задачи:
Начислить новый оклад работникам фирмы (количество работников не более 10) в зависимости от стажа (в полных годах): менее 10 лет – оклад увеличить на 30%, от 10 лет – на 50%. Данные о сотрудниках ввести с клавиатуры. В выходной файл вывести табель с указанием Ф.И.О. работника, его старого и нового оклада.
Вариант №6. Составить схему алгоритма и программу для задачи:
В мартовскую зарплату выдать премию работникам женского пола в размере 100 руб. Данные о сотрудниках ввести с клавиатуры. В выходной файл вывести табель с указанием Ф.И.О. работника, его пола, оклада, премии и суммы выплаты.
