Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
практикум ИНФОРМАТИКА 2 семестр.pdf
Скачиваний:
14
Добавлен:
02.06.2015
Размер:
986.78 Кб
Скачать

26

Варианты заданий обработки чисел

Таблица 5.1

Вариант

N

P

L

Q

1

3

11

3

7

2

6

8

4

6

3

5

7

5

5

4

8

6

8

4

5

9

4

9

3

6

3

13

10

9

7

3

11

11

5

8

4

9

7

4

9

5

2

2

3

10

3

6

9

9

11

7

5

5

4

12

8

3

6

9

Варианты заданий обработки текста

1.Определить, сколько раз в тексте встречается буква В и сколько – С.

2.Заменить в тексте все буквы А на О и букву Д на Т.

3.В тексте убрать лишние пробелы, оставив по одному.

4.Подсчитать, сколько слов в тексте имеют удвоенное сочетание букв.

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

6.Разбить последовательность символов на слова, оканчивающиеся буквой

А.

7.Определить, входит ли в группу символов, заключенных в скобки буква А.

8.Подсчитать, сколько слов в тексте имеют сочетание букв "жи", "ши".

9.В тексте убрать все двойные буквы, оставив по одной.

10.Подсчитать количество букв в каждом слове и найти самое короткое.

11.Разбить слова длиннее восьми букв на короткие не более восьми в каж-

дом.

12.Заменить в тексте знаки ' + ' на '–' и подсчитать количество замен.

ЗАДАНИЕ 6 Обработка одномерных массивов

Цель задания

1.Изучение приемов программирования задач с расчетом и выводом таблицы и графика функции.

2.Изучение способов формирования и обработки массивов.

27

3. Приобретение навыков использования файлов для хранения результатов расчетов.

Постановка задачи

1.Составить программу для расчета и вывода в файл таблицы функции y( x ) при изменении x в пределах от А до В, разбивая отрезок на 50 участков.

2.Предусмотреть в программе занесение значений функции и аргумента в одномерные массивы и выполнение их обработки в соответствии с вариантом задания.

3.Вывести на экран график функции, используя масштабирование.

Содержание отчета

1.Постановка задачи.

2.Описание алгоритма формирования и обработки массивов.

3.Текст программы и результаты ее выполнения.

Пример программы, которая вычисляет значения функции y( x ) = a sin( kx + b ) + 2kx

при k = p / 10 ; b = p / 4 ;a = 10

в интервале от А до , Вкоторые считываются из файла'o.dat' вместе с значениями Q и P, например: ( -50 30 -6 10); заносит значения x , y в соответствующие массивы; определяет интервалы возрастания функции, если ее значения заключены между Q и P("в трубке" QP); выводит результаты расчетов в файл 'o.rez' ; строит график функции.

program Odn1_Mass;{Определить интервалы возрастания функции в трубке [p,q]}

uses Crt,Graph; const N=50; var F1,F2:text;

var X,Y: array [0..N] of real;A,B,H,P,Q,MaxX,MaxY,Mx,My: real; C,Xr,Yr: array[0..N] of integer;Qr,Pr:integer;

K,I:integer;

var DriverVar,ModeVar,Ec: integer; function Yx(D:real): real;

const K=Pi/10;Bet=Pi/4;A=10.0; begin

Yx:=A*Sin(K*D+Bet)+2*D*K;

end;

28

procedure Init; begin

DriverVar:=Detect;

InitGraph(DriverVar,ModeVar,'');

Ec:=GraphResult;

if Ec <> grOK then Writeln('Графическая системная ошибка'); Halt(1)

end;

begin ClrScr;

Assign (F1,'o.dat');

Assign (F2,'o.rez'); Reset(F1); Rewrite(F2); Readln(F1,A,B,Q,P); H:=(B-A)/N;

for I:=0 to N do begin X[I]:=A+H*I; Y[I]:=Yx(X[I]); end;

for I:=0 to N-1 do begin

C[I]:=0;

if (Y[I]>Q) and (Y[I]<P) then if (Y[I+1]>Y[I]) then C[I]:=1;

end;

 

 

 

 

C[N]:=0;

 

 

 

 

if (Y[N]>Q) and (Y[N]<P)

then

 

if Y[N]>Y[N-1] then C[N]:=1;

for I:=1 to 45 do

 

 

 

Write(F2,'-');

 

 

 

 

Writeln(F2);

 

 

 

 

Writeln(F2,' |

I |

X

| Y

| C |');

for I:=1 to 45 do

 

 

 

Write(F2,'-');

 

 

 

 

Writeln(F2);

 

 

 

 

for I:=0 to N do

 

 

 

Writeln(F2,' |

',I:4,'

| ',X[I]:8:3,' |

',Y[I]:8:3,' | ',C[I]:4,

' | ');

 

 

 

 

for I:=0 to 45 do Write(F2,'-'); Writeln(F2); K:=0;

for I:=0 to N do

29

if (C[I]>0) then begin

if (C[I]<>C[I-1]) or (I=0) then begin

K:=K+1;

Write(F2,' ',K, '- интервал возрастания функции в трубке [', X[I]:8:4);

end; end else

if C[I-1]>0 then Writeln(F2,'...',X[I-1]:8:4,']');

if (C[N]>0) and (C[N-1]>0) then Writeln(F2,'...',X[N]:8:4,']');

if K=0 then Writeln(F2,' Интервалов возрастания функции в трубке нет'); Close(F1);

Close(F2);

MaxX:=0;

MaxY:=0;

for I:=0 to N do begin

if Abs(X[I])>MaxX then MaxX:=Abs(X[I]);

if Abs(Y[I])>MaxY then MaxY:=Abs(Y[I]);

end;

DriverVar:=Detect;

InitGraph(DriverVar,ModeVar,''); setlinestyle (0,0,3); setbkcolor(1);

setcolor(8);

Line(10,GetmaxY div 2 ,GetmaxX-10,GetMaxY div 2); Line(GetMaxX div 2,GetmaxY -10, GetMaxX div 2,10); Mx:=(GetmaxX div 2-20)/MaxX;

My:=(GetmaxY div 2-20)/MaxY; for I:=0 to N do

begin

Xr[I]:=Round(X[I]*Mx)+GetMaxX div 2; Yr[I]:=-Round(Y[I]*My)+GetmaxY div 2;

end;

setcolor(2);

for I:=0 to N-1 do begin

Circle(Xr[I],Yr[I],2);

LIne(Xr[I],Yr[I],Xr[I+1],Yr[I+1]);

end;

30

setlinestyle (3,0,1); Qr:=-Round(Q*My)+GetmaxY div 2; Pr:=-Round(P*My)+GetmaxY div 2; setcolor(4); Line(10,Qr,GetmaxX-10,Qr); Line(10,Pr,GetmaxX-10,Pr);

Readln;

Init;

CloseGraph;

end.

В результате работы программы в файл будет выведена следующая таблица с комментариями (в массиве С находится единица, если приращение функции больше нуля и значение находится в трубке QP и ноль в противном случае):

Таблица 6.1

|

I

|

X

|

Y

|

C

|

---------------------------------------------

|

0

|

-50.000

|

-38.487

|

0

|

|

1

|

-48.400

|

-40.014

|

0

|

 

2

|

-46.800

|

-39.164

|

0

|

|

3

|

-45.200

|

-35.901

|

0

|

 

……………………….

 

 

 

|

45

|

22.000

|

23.700

|

0

|

|

46

|

23.600

|

24.237

|

0

|

|

47

|

25.200

|

22.447

|

0

|

|

48

|

26.800

|

19.020

|

0

|

|

49

|

28.400

|

15.054

|

0

|

|

50

|

30.000

|

11.778

|

0

|

----------------------------------------------

 

1- интервал возрастания функции в трубке [-19.6000...

-18.0000]

2- интервал возрастания функции в трубке [ -3.6000...

1.2000]

3- интервал возрастания функции в трубке [ 12.4000...

17.2000]

Графическое изображение выводится на экран монитора.

Варианты задания:

1. Определить первый интервал возрастания функции на отрезке

[-1,5…20]:

y = e- x sin x

20

31

2. Определить последний интервал возрастания функции на отрезке [0…20]:

x

y= 70e10 sin x ;

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

[-2.5…1.4] на отрезке [-5…20]:

y = 10 sin x ;

4

4. Определить последний интервал возрастания функции в трубке

[-5…4] на отрезке [-5…60]:

æ

x

 

p ö

 

y = 10 sinç

 

+

 

 

÷

;

3

3

è

 

ø

 

5. Определить второй интервал положительных значений функции в трубке [- 5…3] на отрезке [-5…40]:

y= 10 cos( x / 7 );

6.Определить предпоследний интервал положительных значений функции в трубке [-5…1] на отрезке [0…40]:

y = -3 - 5 sin x ;

2

7.Найти первый интервал выпуклости функции на отрезке [-20…10]:

у= cos( x + p / 4 ) + 0 ,5 x

8.Найти первый интервал вогнутости функции на отрезке [-10…30]:

у = cos( 2 x ) + x

9.Найти последний интервал выпуклости функции на отрезке [-20…4]:

у= 2 sin( x + p / 2,5 ) + x

10.Найти второй интервал выпуклости функции на отрезке [-20…10]:

у= 3 cos( x + p / 3 )

11.Найти первый интервал убывания функции на отрезке [0…20]:

у= 3 cos( x + p / 5 ) + 1,5x

12.Найти последний интервал убывания функции в трубке[0.3…1] на отрезке [- 20…10]:

у= 3 cos( x + p / 2 ) + x

ЗАДАНИЕ7 Сортировка массивов

Цель задания

1.Получение практических навыков работы с массивами

2.Знакомство с алгоритмами упорядочения.

32

Постановка задачи

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

Содержание отчета

1. Постановка задачи для конкретного варианта.

2.Текст программы и результаты ее выполнения.

3. Результаты тестирования.

Методические указания

1.Перед выполнением варианта задания ознакомится с программами сортировки массивов по невозрастанию (по материалам лекций).

2.Исходные данные должны содержать числа с разными знаками.

Пример программы, которая формирует массив из 20 случайных чисел больших А=-10 и меньших С=100 и перемещает в его начало все элементы модуль которых меньше В=10.

program Sort_Mass; uses Crt,Graph; const

Q=-10;

P=10;

N=20;

M=110;

var DriverVar,ModeVar,Ec: integer;

var A,Ar: array[1..N] of integer; MaxA,Ma: real; D,I,J,H,Qr,Pr: integer;

begin ClrScr;

Randomize;

Writeln(' Исходный массив'); for I:=1 to N do

begin

A[I]:= Random(M)-10; Write(A[I],' ');

end;

Writeln;

for I:=2 to N do

if Abs(A[I]) < P then begin

D:=A[I];

J:=I; repeat

A[J]:=A[J-1]; J:=J-1;

until J<=1;

33

A[1]:=D;

Writeln('Массив после перестановки элемента с номером ',I); for H:=1 to N do Write(A[H],' ');

Writeln;

end;

MaxA:=0;

for I:=0 to N do begin

if Abs(A[I])>MaxA then MaxA:=Abs(A[I]);

end;

DriverVar:=Detect;

InitGraph(DriverVar,ModeVar,''); setlinestyle (0,0,3); setbkcolor(1);

setcolor(8);

Line(10,GetmaxY div 2,GetmaxX-10,GetMaxY div 2); Ma:=(GetmaxY div 2-40)/MaxA;

for I:=1 to N do begin

Ar[I]:=-Round(A[I]*Ma)+GetMaxY div 2; end;

setcolor(2);

for I:=1 to N do begin

SetFillstyle(1,3); Bar(I*30,Ar[I],I*30+10,GetMaxY div 2);

end;

setlinestyle (3,0,1); Qr:=-Round(Q*Ma)+GetmaxY div 2; Pr:=-Round(P*Ma)+GetmaxY div 2; setcolor(4); Line(10,Qr,GetmaxX-10,Qr); Line(10,Pr,GetmaxX-10,Pr);

Readln;

CloseGraph;

end.

Варианты задания

Во всех вариантах построить диаграммы, отражающие величину элементов массива на экране:

1. Сформировать массив из 30 элементов, разность между элементами которого меньше А=5 и переставить в начало все элементы меньшие В=4.