Семестровая работа 2
.pdfЗамечания по поводу оформления семестровой
При решении задач обязательно нужно использовать подпрограммы в тех местах, где алгоритмы имеют многократное повторение (если в задаче нет повторяющихся алгоритмов, то искусственно выделить как минимум один из них в отдельную подпрограмму).
Семестровая работа оформляется на отдельных односторонних листах А4 с проставлением номеров страниц (титульный лист считается, но не нумеруется)
Каждое задание должно включать в себя (именно в таком порядке!): 1) условие задачи; 2) тестовый пример; 3) блок схема; 4) листинг программы на
Pascal.
Каждый новый пункт задачи начинается на отдельном листе (кроме тестового примера, который нужно расположить на листе вместе с условием). Таким образом, выходит, что на оформление одной задачи уходит не менее трёх листов.
Оформление титульного листа следует делать так, как показано ниже:
Федеральное агентство по образованию ГОУ ВПО
Волгоградский государственный технический университет
Кафедра «Вычислительная техника»
Семестровая работа №1 по информатике за 2-й семестр
тема: «Сложно-структурированные типы данных языка
Pascal»
Вариант № 000
Выполнил: ст. гр. БНД-007 Пупкин В.В.
Проверил: ст. преп. каф ВТ Акулов Л.Г.
Волгоград 2010
Далее приводится пример выполнения семестровой работы
1. Условие задачи
Вариант 0
Ввести символ с клавиатуры.
Если этот символ есть «a» или «b», то задать матрицу A6×6 . Найти количество
нечетных элементов среди элементов, находящихся в столбцах правее того, который содержит максимум на главной диагонали.
Если символ есть «c», то в числовых массивах A12×3 , A22×4 и A32×2 найти суммы положительных элементов, которые переписать в одномерный массив B3
Если символ в диапазоне от «t» до «z», то создать файл, состоящий из целых чисел. Переписать во второй файл все положительные элементы первого файла, а в третий файл элементы первого в обратном порядке. Все файлы вывести.
2. Набор тестовых примеров
1) _
входные данные:
символ |
‘a’ |
|
|
|
|
|
|
|
Матрица A: |
|
|
|
|
|
|
|
|
1 |
2 |
3 |
4 |
2 |
|
3 |
||
4 |
5 |
6 |
|
7 |
|
9 |
|
6 |
5 |
3 |
30 |
|
2 |
|
4 |
|
5 |
3 |
1 |
4 |
|
7 |
|
5 |
|
6 |
8 |
9 |
6 |
|
5 |
|
4 |
2 |
|
3 |
45 |
6 |
|
7 |
4 |
|
1 |
выходные данные:
позиция максимума на гл. диагонали = 3
Количество нечетных Knech = 9
2) _
входные данные:
символ |
|
‘c’ |
|
|
|
|
||||
Матрица A1 после формирования: |
||||||||||
|
|
1 |
|
-3 |
|
-4 |
|
|
|
|
|
|
2 |
|
|
1 |
|
-5 |
|
|
|
Матрица A2 после формирования: |
||||||||||
|
|
3 |
|
|
8 |
|
10 |
|
12 |
|
|
|
1 |
|
|
1 |
|
-6 |
|
0 |
|
Матрица A3 после формирования: |
||||||||||
|
12 |
|
|
1 |
|
|
|
|
|
|
|
|
2 |
|
|
3 |
|
|
|
|
|
выходные данные:
массив B, сформированный из сумм: 4 35 18
3) _
входные данные:
символ ‘w’
файл F1: |
2 |
3 |
4 -5 |
6 |
1 |
выходные данные:
Выводим |
файл F2 |
4 |
6 |
|
|
1 |
2 |
3 |
|
||
Выводим |
файл F3 |
3 |
2 |
1 |
|
6 |
-5 |
4 |
|||
|
|
|
|
|
|
3. Блоксхема алгоритмов
4. Листинг программы на ЯВУ Pascal
program MaxMInExch; const L=10;
type T2M = array[1.. L,1..L] of integer; T1M = array[1.. L] of integer;
TF = file of integer; Tname = string[4];
var A,A1,A2,A3: T2M; B:T1M; S1,S2,S3,buf,k:integer; imax,Knech,N,i,j:byte;
F1,F2,F3: file of integer; ch:char;
// процедура для ввода матрицы
procedure VvodMx(var A:T2m; const N,M: byte; const name:Tname); var i,j:byte;
begin
writeLn('вводите элементы матрицы ',name); for i:=1 to N do
for j:=1 to M do begin
write('A[',i,',',j,']=');
readLn(A[i,j]);
end;
end;
// процедура для вывода матрицы
procedure VivodMx(const A:T2m; const N,M: byte; const name:Tname);
var i,j:byte; begin
writeLn('Матрица ',name,' после формирования:'); for i:=1 to N do
begin
for j:=1 to M do write(A[i,j]:4);
writeLn;
end;
end;
// процедура для ввода файла
procedure VvodF(var F:TF; const name:Tname); var buf:integer;
begin rewrite(F);
writeLn('введите первую компоненту файла ', name); writeLn('признак конца ввода 999 ');
readLn(buf); while buf<>999 do
begin write(F,buf);
writeLn('введите следующую компоненту:'); readLn(buf);
end;
end;
// процедура для вывода файла
procedure VivodF(var F:TF; const name:Tname); var buf:integer;
begin reset(F);
writeLn('Выводим файл ', name); while not EOF(F) do
begin read(F,buf); write(buf:5);
end;
writeLn;
end;
//функция поиска суммы положительных элементов function summ(const A:T2m; const N,M:byte):integer; var i,j:byte;
S:integer; begin
S:=0;
for i:=1 to N do for j:=1 to M do
if A[i,j]>0 then S:=S+A[i,j];
summ:=S;
end;
//основная программа
begin
writeLn('введите символ'); readLn(ch);
case ch of 'a','b': begin N:=6;
VvodMx(A,N,N,'A'); writeLn('исходная матрица:'); VivodMx(A,N,N,'A');
// макс на гл. диагонали imax:=1;
for i:=1 to N do
if A[i,i]>A[imax,imax] then imax:=i;
writeLn('позиция максимума на гл. диагонали = ', imax); Knech:=0;
for i:=1 to N do
for j:=imax+1 to N do
if A[i,j]mod 2 <> 0 then inc(Knech);
writeLn('Knech=',Knech);
end;
'c': begin
VvodMx(A1,2,3,'A1');
VvodMx(A2,2,4,'A2');
VvodMx(A3,2,2,'A3');
VivodMx(A1,2,3,'A1');
VivodMx(A2,2,4,'A2');
VivodMx(A3,2,2,'A3');
B[1]:=summ(A1,2,3);
B[2]:=summ(A2,2,4);
B[3]:=summ(A3,2,2);
writeLn('массив B, сформированный из сумм:'); for i:=1 to 3 do
write(B[i]:5);
writeLn;
end; 't'..'z': begin
// инициализация файла
Assign(F1,'F1.dat');
rewrite(F1);
VvodF(F1,'F1');
Assign(F2,'F2.dat');
rewrite(F2);
reset(F1);
while not EOF(F1) do begin
read(F1,buf); if buf>0 then
write(F2,buf);
end;
Assign(F3,'F3.dat');
rewrite(F3);
k:=1; repeat
seek(F1,fileSize(F1)-k); read(F1,buf); write(F3,buf);
inc(k);
until filePos(F1)=1;
VivodF(F1,'F1');
VivodF(F2,'F2');