Главная страница

Решение квадратного уравнения. Оператор варианта. Вычисление площадей фигур. 10. Примерные задания к контрольной работе


Скачать 443 Kb.
НазваниеРешение квадратного уравнения. Оператор варианта. Вычисление площадей фигур. 10. Примерные задания к контрольной работе
АнкорPaskal-1.doc
Дата07.03.2018
Размер443 Kb.
Формат файлаdoc
Имя файлаPaskal-1.doc
ТипРешение
#16375
страница12 из 14
1   ...   6   7   8   9   10   11   12   13   14

МАССИВА УДОВЛЕТВОРЯЮЩИХ ЗАДАННОМУ УСЛОВИЮ



ПОСТАНОВКА ЗАДАЧИ: Требуется из данного массива А, состоящего из N элементов, выбрать элементы, удовлетворяющие заданному ( пусть А(i)>T ), и сформировать из них массив B.

Исходный массив А: 4 6 8 2 23 1 9 Условие: A(i)>=8

Новый массив B: 8 23 9
Особенность решения: Индексы элементов массивов A и B не совпадают,

так как не все элементы массива A включаются в массив B.

Введем переменную, формирующую индексы и являющуюся счетчиком

элементов нового массива.
Program Massiv_po_Uslowiu; Uses crt;

. . .
procedure Mass_Usl;

begin

write('Введите параметр условия: '); readln(t);

k:=0; {k- счетчик найденых элементов }

for i:=1 to n do if a[i]>=t then begin k:=k+1; b[k]:=a[i]; end;

end;
Begin

ClrScr; n:=20;

Input; { заполнение исходного массива A }

ClrScr;

Print(а, n); writeln; { печать исходного массива A }

Mass_Usl; { формирование массива по условию }

Print(b, k); writeln; { вывод на экран нового массива B }

Readkey;

End.
З А Д А Н И Я:
1. Набрать и исполнить программу.
2. Изменить условие.
3. Вывести на экран сообщение о количестве найденных элементов.
4. Найти среднее арифметическое элементов нового массива.

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 39



#8. ОБРАБОТКА ОДНОМЕРНЫХ МАССИВОВ

ПОИСК МАКСИМАЛЬНОГО ЭЛЕМЕНТА В МАССИВЕ

С ЗАПОМИНАНИЕМ ЕГО ПОЛОЖЕНИЯ (ИНДЕКСА)
ПОСТАНОВКА ЗАДАЧИ: Найти в массиве A, состоящем из n элементов, наибольший

элемент и запомнить его индекс (K).
Program MaxElMassiva; uses crt;

{ описание массива и переменных }

{ процедура ввода массива }

{ процедура вывода массива }
procedure MaxEl;

begin

max:=a[1]; k:=1;

for i:=1 to n do if max

writeln('Максимальный элемент массива А равен ',max);

writeln('Максимальный элемент массива стоит на ' ,k, ' месте);

end;
Begin

ClrScr; n:=20;

Input;

ClrScr;

Print; writeln;

MaxEl;

Readkey;;

End.

З А Д А Н И Я:
1. Набрать и исполнить программу.
2. Найти минимальный элемент и его индекс.
3. Найти минимальный и максимальный элементы, и их индексы.
4. Заменить найденный минимальный элемент числом 100 и показать

на экране массив с этой заменой.

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 40



#9. ОБРАБОТКА ОДНОМЕРНЫХ МАССИВОВ

ПОИСК ЗАДАННОГО ЭЛЕМЕНТА В МАССИВЕ



ПОСТАНОВКА ЗАДАЧИ: Определить, есть ли в заданном массиве элемент равный L.

Имеется массив А: 3 1 2 5 3 4 8 L=5

В массиве А имеется элемент равный 5
В данной программе можно использовать "флажок" - специальную переменную, которая принимает значения "истина" или "ложь" в зависимости от того найден элемент или нет.
Program Poisk_El_Massiva; uses crt;
. . .
procedure Poisk(L: integer);

var fl: boolean;

begin

fl:=false;

for i:=1 to n do if a[i]=L then fl:=true;

if fl then write(' Элемент равный ',L,' имеется ')

else write(' Элемент равный ',L,' отсутствует');

end;
Begin

ClrScr; n:=20;

Input;

ClrScr;

Print; writeln; writeln;

write('Введите значение искомого элемента: '); readln(L);

Poisk(L);

Readkey;

End.

З А Д А Н И Я:
1. Набрать и исполнить программу, т. е. найти 3-4 элемента.
2. Если в массиве несколько одинаковых элементов, то найти первый из них и указать его индекс.
3. Подсчитать количество одинаковых элементов в массиве.

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 41



#10. ОБРАБОТКА ОДНОМЕРНЫХ МАССИВОВ

У П О Р Я Д О Ч Е Н И Е М А С С И В А



ПОСТАНОВКА ЗАДАЧИ: Расположить элементы массива в порядке возрастания.

Из множества сортировок рассмотрим поиск MIN и перестановку.

Исходный массив: 3 2 -5 2 0 8 4

Конечный массив: -5 0 2 2 3 4 8
Program SortirowkaMassiva; uses crt;
. . .
procedure Sort;

var min: real;

begin

for i:=1 to n do

begin

min:=a[i]; k:=i;

for j:=i to n do

if a[j]

a[k]:=a[i];

a[i]:=min

end

end;
Begin

ClrScr;

Input;

ClrScr;

write('Исходный массив: '); Print; writeln;

Sort;

write('Конечный массив: '); Print;

readkey;

End.
З А Д А Н И Я:
1. Набрать и исполнить программу.
2. Отсортировать исходный массив по убыванию элементов.
3. Отсортировать исходный массив по возрастанию и убыванию элементов.
4. Отсортировать массив латинских букв.

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 42



О Б Р А Б О Т К А М А Т Р И Ц

ВВОД И ВЫВОД МАТРИЦ



В Паскале двумерные массивы называют матрицами.

TYPE MATRICA=ARRAY[1..N,1..M] OF REAL; - определение типа

двумерного массива, где N -число строк, М -столбцов.
ПОСТАНОВКА ЗАДАЧИ: Заполнить матрицу и вывести ее на экран.
Заполнение матрицы может производиться также как и одномерного массива, только с помощью вложенных циклов.
Program Wwod_Wywod_Mat; uses crt;

const n=3;

var a: array[1..n,1..n] of integer;

i,j: integer;
Begin { ввод матрицы по строкам }

ClrScr;

for i:=1 to n do

for j:=1 to n do

begin

write('a[',i,',',j,']=');readln(a[i,j])

end;

{ вывод матрицы по строкам вывод в указанном месте}

for i:=1 to n do for i:=1 to n do

begin begin

for j:=1 to n do write(a[i,j],' '); gotoxy(10,5+i);

writeln { перевод курсора на новую строку } for j:=1 to n do write(a[i,j]:3);

end; end;

readkey; readkey;

End. End.
Можно задать постоянную матрицу:
const a: array[1..3,1..3] of integer=((1,2,3),

(4,5,6),

(7,8,9));
З А Д А Н И Я:
1. Набрать и исполнить программу.

2. Описать процедуры ввода и вывода матриц.

3. Задать постоянную матрицу.

4. Вывести на экран матрицу по столбцам.

5. Вывести матрицу в указанное место экрана.

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 43



О Б Р А Б О Т К А М А Т Р И Ц
1. СУММА ЭЛЕМЕНТОВ МАТРИЦЫ
ПОСТАНОВКА ЗАДАЧИ: Для двумерного массива B размером N х M необходимо

вычислить сумму всех элементов матрицы.
Program Summa_Mat; uses crt;
. . .
procedure Sum;

begin

s:=0;

for i:=1 to n do

for j:=1 to m do

s:=s+b[i,j]

end;
Begin

ClrScr;

Input_Mat; { если массив вводится с клавиатуры }

ClrScr;

Print_Mat; writeln;

Sum;

write('Сумма элементов матрицы равна ',s);

readkey;

End.


З А Д А Н И Я:
1. Набрать и исполнить программу.
2. Ввести дробные и отрицательные числа.

ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 44



О Б Р А Б О Т К А М А Т Р И Ц
2. ВЫЧИСЛЕНИЕ СЛЕДА МАТРИЦЫ
СЛЕД МАТРИЦЫ - сумма диагональных элементов матрицы N х N.
ПОСТАНОВКА ЗАДАЧИ: Для матрицы В размером N х N надо вычислить

сумму диагональных элементов B[i,i].
. . .
procedure Sled_Mat; { главная диагональ }

begin

s:=0;

for i:=1 to n do s:=s+b[i,i]

end;
. . .

3. ВЫЧИСЛЕНИЕ СУММЫ ЭЛЕМЕНТОВ СТРОК МАТРИЦЫ
ПОСТАНОВКА ЗАДАЧИ: Вычислить сумму элементов каждой строки матрицы В

размером N х M. Результат получить в виде вектора D.

. . .
procedure Sum_Strok_Mat;

begin

for i:=1 to n do

begin

s:=0;

for j:=1 to m do

s:=s+b[i,j];

d[i]:=s

end

end;
. . .

. . .
З А Д А Н И Я:
1. Набрать и исполнить программу.

2. Получить сумму элементов побочной диагонали.

3. Напечатать вектор суммы строк вертикально справа от матрицы.

4. Получить вектор суммы столбцов матрицы.

Приложение:
Процедуры обработки матриц:
Сумма указанной строки:

S:=0; i:=3;

For J:=1 to m do S:=S+b[i,j];
Транспонирование квадратной матрицы:

For i:=1 to n-1 do

For j:=1 to n do

Begin

P:= a[i,j];

a[i,j]:=a[j,i];

a[j,i]:=p;

end;
Удаление строки из матрицы:

n:=n-1;

For i:=1 to n do

For j:=1 to m do b[i,j]:=b[i+1,j];
Включение строки в матицу:

i:=n;

while i>=k do

begin

for j:=1 to m do b[i+1,j]:=b[i,j];

i:=i-1;

end;

for j:=1 to m do b[k,j]:=c[j];

n:=n+1;
Перестановка строк матрицы:

For k:=1 to k do c[k]:=a[i,k];

For k:=1 to k do a[i,k]:=a[j,k];

For k:=1 to k do a[j,k]:=c[k];
Поиск минимального элемента матрицы:

Min:= a[1,1]; k;=1; L:=1;

For i:=1 to n do

For j:=1 to m do

IF min>a[i,j] then begin min:=a[i,j]; k:=i; l:=j; end;
Сложение строк матрицы:

For j:=1 to m do

a[k,j]:=a[k,j]+a[l,j]*b;
З А Д А Н И Я:

  1. Изменить значения указанной строки.

  2. Найти минимальные значения в каждой строке.

  3. Найти максимальные значения в каждом столбце.


ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 45
ПОДГОТОВКА К КОНТРОЛЬНОЙ РАБОТЕ

ПОСТАНОВКА ЗАДАЧИ:

1. ПОВТОРИТЬ ТЕМУ "МАССИВЫ (ВЕКТОРА И МАТРИЦЫ )".

2. В КОНТРОЛЬНОЙ РАБОТЕ 2 ЗАДАНИЯ:

ОБРАБОТКА ОДНОМЕРНОГО МАССИВА (ВЕКТОРА);

а) 1 -я обработка; б) 2 -я обработка.

3. ПРОГРАММА ДОЛЖНА ИМЕТЬ БЛОЧНУЮ СТРУКТУРУ.
ПРИМЕР ЗАДАНИЯ: Заполнить одномерный числовой массив и выбрать из него отрицательные элементы. Найти среднее арифметическое отрицательных элементов массива. Отрицательные элементы отсортировать по возрастанию.
ПРИМЕР РЕШЕНИЯ:

Program Vektor; uses crt;

type mas=array[1..40] of integer;

var i, k, s, n, p, q: integer;

a, d: mas;

procedure Input;

begin

randomize; p:=-10; q:=10; for i:=1 to n do a[i]:=random(q-p+1)+p;

end;

procedure Print (y: mas; x: integer);

begin

for i:=1 to x do write(y[i],' '); writeln; writeln;

end;

procedure Vybor;

begin

k:=0; for i:=1 to n do if a[i]<0 then begin k:=k+1; d[k]:=a[i]; end;

end;

function Sredn_Arifm: real;

begin

s:=0;

if k<>0 then begin for i:=1 to k do s:=s+d[i]; Sredn_Arifm:=s/k; end

else Sredn_Arifm:=0

end;

procedure Sort;

var l,j,min: integer;

begin

k:=0; l:=0;

for i:=1 to k-1 do begin

min:=d[i];

for j:=i+1 to k do

if d[j]

min:=d[j]; l:=j;

d[l]:=d[i]; d[i]:=min

end

end

end;

Begin

ClrScr;

write('Число элементов(<40) : '); readln(n); clrscr; Input;

write('Исходный массив A: '); Print(a,n); vybor;

write('Mассив D: '); Print(d,k);

writeln('Среднее арифметическое отрицательных элементов массива равно ',Sredn_Arifm);

if Sredn_Arifm=0 then writeln('Нет отрицательных элементов');

Sort;

if Sredn_Arifm<>0 then

begin

write('Отсортированный массив по возрастанию: ');

Print(d,k)

end;

readkey;

End.
ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 46

ЗАПИСИ
При работе с массивами существует один существенный недостаток – элементы в массиве одного типа. На практике часто требуется обрабатывать данные с элементами разного типа. Если одновременно вести работу с несколькими массивами разного типа, то программа получается очень громоздкой и требуется много времени для отладки такой программы.

В Паскале предусмотрена возможность описывать сложные типы и работать с ними.

ЗАПИСЬ – упорядоченное множество значений, называемых полями записи, которые могут иметь разные типы.

ЗАПИСЬ – структура данных, построенная из компонент, имеющих в общем случае разные типы данных.
Тип записи

TYPE NAME=RECORD

поле_1: тип;

поле_2: тип;

……..

поле_N:тип;

END;

VAR NAMREC: NAME;
Record – служебное слово – запись,

NAME – имя типа записи,

Поле_N – поле записи указанного типа, в качестве поля может быть запись,

NAMREC – имя записи – переменная определенного TYPE типа;

Имена полей не должны совпадать,

Если полей одного типа несколько, то их имена перечисляются через запятую:

Record x,y: real; end;
Доступ к элементу записи производится с помощью компонентных переменных, имеющих форму R.T , где R – переменная типа записи, Т – имя поля.

Если полей много, то обращение можно произвести с помощью оператора над записью или оператора присоединения WITH имя_записи DO
Задача

Для группы учащихся, имеющих итоговые оценки по 5 предметам вычислить средний балл и упорядочить список группы по убыванию среднего балла.
Нарисуем таблицу с указанием имен полей, их типов.

Затем приступим к описанию переменных и написанию программы.
Табель успеваемости


Фамилия

Fam: string[15]

Матем

Mat: byte

Русский

Rus: byte

Физика

Fiz: byte

Химия

Xim: byte

История

Ist: byte

Средн балл Sb:real


Иванов

Петров

Сидоров


4

5

3


5

3

4


3

4

3


4

3

3


3

5

4


3.8

4

3.4


Program Sr_Ball; uses crt;

type grup=record

fam:string[15];

mat,rus,xim,fiz:byte;

sb:real;

end;

var tbl:array[1..20] of grup;

y:grup;

i,j,k,m:integer;

x:real;

Begin

clrscr;

write('Количество учащихся в группе: '); readln(m);

writeln;

for i:=1 to m do

with tbl[i] do

begin

write('fam[',i,']='); readln(fam);

write('mat='); readln(mat);

write('rus='); readln(rus);

write('xim='); readln(xim);

write('fiz='); readln(fiz);

end;

for i:=1 to m do with tbl[i] do sb:=(mat+rus+xim+fiz)/4;

for i:=1 to m do

begin

k:=i; x:=tbl[i].sb;

for j:=i to m do

if tbl[j].sb>x then begin k:=j; x:=tbl[j].sb end;

y:=tbl[k];

tbl[k]:=tbl[i];

tbl[i]:=y;

end;

clrscr;

writeln('Пн | Фамилия | Mat | Rus | Xim | Fiz ' );

writeln('---------------------------------------------');

for i:=1 to m do

with tbl[i] do

writeln(i:2,' |',fam:15,' | ',mat:2,' | ',rus:2,' | ',xim:2,' | ',fiz:2);

readln; clrscr; writeln('Пн | Фамилия | Sredn ball ' );

for i:=1 to m do with tbl[i] do writeln(i:2,' |',fam:15,' |',sb:3:1); readkey;

End.
ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 47. ФАЙЛЫ

Файл – форма хранения информации вне среды.

Файл удобен:

- данные из файла можно использовать в нескольких программах;

- файл сохраняется после окончания работы программы;

- данные часто не убираются в ОЗУ (игры);

- с файлами можно выполнять множество полезных манипуляций.

Типы файлов:

  1. Последовательные – чтение/запись от начала к концу.

  2. Файлы прямого доступа – доступ к записи по адресу.

  3. Индексированные файлы – доступ к записи по адресу и по ключу.

Порядок работы с файлами.

  1. Объявить файл (var f: file of тип или var f: text для текстового файла).

  2. Связать файловую переменную с конкретным файлом на устройстве.

  3. Открыть файловую переменную для записи или чтения.

  4. Закрыть файловую переменную для записи или чтения.

По организации работы с данными различают три вида файлов: типизированные, текстовые и нетипизированные.
Основные процедуры и функции обработки файлов (общие).

Assign(f,name); - связь файловой переменной f с внешним файлом.

Reset(f); - открыть существующий файл для чтения.

Rewrite(f); - открыть файл для записи (если существует – стирается!).

Close(f); - закрыть файл для чтения/записи.

Eof(f) - функция «конец файла» (true, если из файла всё считано).
Для типизированных файлов:

Read(f,a); - чтение информации из файла в переменную а.

Write(f,a); - запись информации (значения переменной a) в файл.

Seek(f,num); - пропуск заданного количества записей в файле.

Truncate(f); - удаление части файла с текущего компонента до конца.

FilePos(f) - функция номера текущей записи в файле.

FileSize(f) - функция - количество записей в файле (размер файла).
Для текстовых файлов:

Readln(f,a); - чтение строки из файла.

Writeln(f,a); - запись строки в файл.

Append(f); - открыть файл для добавления в конец файла.

Eoln(f) - функция конец строки файла.

SeekEoln(f) - функция конец строки файла(не замечает пробелов в конце).

SeekEof(f) - функция конец файла(не замечает пробелов в конце файла).
Задача 1. Присвоить переменным числовые значения и сохранить их в файле. Прочитать файл, передав числовые значения другим переменным.

Задача 2. Создать текстовый файл данных из нескольких строк. Прочитать файл.

Прочитать числовое значение из текстового файла в числовую переменную и изменить полученное значение.
Program fil; Uses crt;

var f: file of integer;

b,c,d,x,y,z,i:integer;

t:text; a:string;

Begin

clrscr; b:=3; c:=4; d:=5;

writeln('b=',b,' c=',c,' d=',d);
assign(f,'c:r.dat');

rewrite(f);

write(f,b,c,d);

close(f);
reset(f);

read(f,x,y,z);

write('x=',x,' y=',y,' z=',z);

close(f);
readkey; clrscr; assign(t,'c:\pascal\turbo7\work\prob.dat');

reset(t);

for i:=1 to 4 do

begin

readln(t,a);

writeln(a);

end;

readln(t,x); x:=x*2; writeln('x=',x);

close(t);
readkey;

End.
ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 48.

ЗАДАЧИ ОПТИМИЗАЦИИ
Проблема оптимизации встречается во всех сферах человеческой деятельности - от самого высокого общегосударственного уровня до личного (распределение средств). Задача сводится к поиску наилучшего варианта с точки зрения намеченной цели.

При решении проблемы следует оформить ее как математическую задачу , придав количественный смысл словам "лучше", "хуже".

Многие задачи оптимизации сводятся к поиску MAX, MIN некоторой функции, которую принято называть ЦЕЛЕВОЙ ФУНКЦИЕЙ или КРИТЕРИЕМ КАЧЕСТВА.

Задачи оптимизации, в которых целевая функция является линейной функцией независимых переменных, а условия, определяющие допустимые значения этих переменных, имеют вид линейных уравнений и неравенств относят к ЛИНЕЙНОМУ ПРОГРАММИРОВАНИЮ.

НАЧАЛО: 1938г. Ленинградский Государственный Университет. Л.В. Канторович приступил к решению задачи о распределении работы 8 станков. Канторович нашел общий метод решения.

Позже Канторович получил Ленинскую и Нобелевскую премии.

МАТЕМАТИЧЕСКОЕ МОДЕЛИРОВАНИЕ



Этапы моделирования:

1. Определение цели и формирование ЦЕЛЕВОЙ ФУНКЦИИ.

2. Составление СПИСКА ПЕРЕМЕННЫХ и ранжировка их по степени влияния на целевую функцию. Выделение значимых переменных.

3. Составление математического описания процесса.

4. Разработка алгоритма реализации математического. описания на эвм.

5. Проверка соответствия математической модели моделируемому процессу.

6. Исследование объекта моделирования с помощью математической модели.
НЕКОТОРЫЕ ЗАДАЧИ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ
ЗАДАЧА О ИСПОЛЬЗОВАНИИ РЕСУРСОВ.

Выпускаются стулья двух типов:

Переменная

Цена(у.е.)

Доски(м)

Ткань(кв.м)

Рабочее время(чел.час)

X1

8

2

0,5

2

X2

12

4

0,25

2,5

Ресурсы:




440

65

320

Какие стулья выпускать и в каком количестве чтобы выручка от продажи стульев была наибольшей?
МАТЕМАТИЧЕСКАЯ МОДЕЛЬ

2 ∙х1+4· х2440

0,5∙х1+0,25∙х2 65 Целевая функция Р=8∙х1+12∙х2 max

2· х1+2,5 ∙х2320

х10 , х20
После построения и исследования графиков получим, что оптимальные значения: х1=60, х2=80 стульев.
ЗАДАНИЯ:

1. Найти выручку, если выпускать стулья только х1.

2. Найти выручку, если выпускать стулья только х2.

3. Найти выручку, если выпускать стулья х1=х2
ПРАКТИЧЕСКОЕ ЗАНЯТИЕ № 49.

БИОЛОГИЧЕСКАЯ ЗАДАЧА.
Для производства вакцины на заводе выращивают культуру бактерий. ИЗВЕСТНО, что если масса бактерий Х г, то через день она увеличится на (А-В∙Х)∙Х г, где А и В - коэффициенты рождение и гибель бактерий. Ежедневно для нужд производства забирается М г бактерий.

ИССЛЕДОВАТЬ, как изменяется масса бактерий по дням от 1 до 365.

МАТЕМАТИЧЕСКАЯ МОДЕЛЬ
Исходные данные: коэффициенты А, В

начальная масса Хо

масса для производства М

Результаты: масса бактерий через 1,2,3,..,365 дней

Из условия получим рекуррентную формулу: Х:=Х+(А-В∙Х)∙Х-М

Если масса бактерий станет равной или меньшей 0, то необходимо сигнализировать о ЧП - чрезвычайном происшествии и остановить производство.

ВЫЧИСЛИТЕЛЬНЫЙ ЭКСПЕРИМЕНТ
А=1 , В=О.ООО1, ХО=12ООО, М=2ООО.

Масса бактерий сначала быстро убывает, но на 11 день становится равной 7236 г и после этого практически не изменяется.

Увеличим начальную массу бактерий до ХО=17ООО. Масса резко снижается, но к 27 дню стабилизируется на уровне 7236 г.

Возьмем 18ООО г, то уже через 2 дня произойдет ЧП. Бактерии гибнут.
НАЙТИ:

1. Минимальное первоначальное количество бактерий.

2. Максимальное первоначальное количество бактерий.

3. Определить какую максимальную массу можно забирать, чтобы завод бесперебойно работал в течение года при начальной массе ХО=12ООО грамм.

1   ...   6   7   8   9   10   11   12   13   14


написать администратору сайта