Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Семестровая работа 2

.pdf
Скачиваний:
13
Добавлен:
14.03.2016
Размер:
553.13 Кб
Скачать

Замечания по поводу оформления семестровой

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

Семестровая работа оформляется на отдельных односторонних листах А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');