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

Лабораторная раота часть1 вар6

.doc
Скачиваний:
8
Добавлен:
01.04.2014
Размер:
100.35 Кб
Скачать

Белорусский Государственный Университет

Информатики и Радиоэлектроники

Лабораторная работа №1

по дисциплине «Основы алгоритмизации и программирования»

Выполнил: студент БГУИР ФЗиДО

Группы 801024-6 Новиков Игорь

Минск 2009

Задание №1

Для аргумента Х, изменяющегося от -0.6 с шагом 0.05, вычислить 20 значений функции:

;

.

Функцию f2(x) вычислить для ряда точностей . Для указанных точностей определить количество N элементов ряда, суммируемых для достижения заданной точности. Результаты расчетов свести в следующую таблицу:

x

f1(x)

f2(x)

N

f2(x)

N

f2(x)

N

….

P.S. Обе функции выражают одну и ту же зависимость Х от У. Функция с бесконечностью – это итерационный цикл с заданной точностью. Значения, вычисленные по каждой из функций, должны полностью совпадать.

x

f1(x)

f2(x)

N

f2(x)

N

f2(x)

N

-0.6

0.0049

0.0054

1

0.0052

2

0.0052

3

-0.55

0.0035

0.0038

1

0.0037

2

0.0037

3

-0.5

0.0024

0.0026

1

0.0025

2

0.0025

2

-0.45

0.0016

0.0017

1

0.0017

2

0.0017

2

-0.4

0.00099

0.0011

1

0.0011

2

0.0011

2

-0.35

0.00059

0.00063

1

0.00063

1

0.00062

2

-0.3

0.00032

0.00034

1

0.00034

1

0.00034

2

-0.25

0.00016

0.00016

1

0.00016

1

0.00016

2

-0.2

0.000064

0.000067

1

0.000067

1

0.000067

1

-0.15

0.00002

0.000021

1

0.000021

1

0.000021

1

-0.1

0.0000041

0.0000042

1

0.0000042

1

0.0000042

1

-0.05

0.00000026

0.00000026

1

0.00000026

1

0.00000026

1

0

0

0

1

0

1

0

1

0.5

0.00000026

0.00000026

1

0.00000026

1

0.00000026

1

1

0.0000043

0.0000041

1

0.0000041

1

0.0000041

1

1.5

0.000022

0.000021

1

0.000021

1

0.000021

1

2

0.00007

0.000067

1

0.000067

1

0.000067

1

2.5

0.00017

0.00016

1

0.00016

1

0.00016

1

3

0.00036

0.00034

1

0.00034

1

0.00034

1

3.5

0.00068

0.00063

1

0.00063

1

0.00063

1

Program Lab11;

Procedure f1(x:Real);

Begin

Writeln('x=',x,':f1(x)=',(11*x*x*x-15*x*x+6*x+6*(1-x)*(1-x)*(1-x)*ln(1-x))/36:2)

End;

Procedure f2(x:Real;eps:Real);

Var result, xx, tempResult:Real; k:Integer;

Begin

xx := x;

k:=0;

result:=0;

while ((Abs(tempResult)>eps) or (k=0)) do

Begin

k:= k+1;

xx:=xx*x*x*x;

tempResult := xx/(k*(k+1)*(k+2)*(k+3));

result:= result+tempResult;

End;

Writeln('x=',x,':f2(x)=',result:2,':N=',k);

End;

Var x:Real;i:Integer;

Exit:Char;

Begin

x:=-0.6;

For i:=1 to 20 do

Begin

f1(x);

f2(x,0.01);

f2(x,0.001);

f2(x,0.0001);

x := x+0.05;

End;

Readln(Exit);

End.

Задание №2

Дана строка символов S, состоящая из латинских букв. Группы символов, разделенные пробелами и не содержащие пробелов внутри себя, будем называть словами. Преобразовать исходную строку в строки S1 и S2 в соответствии с пунктами 1 и 2 задания. Если какая-либо из итоговых строк окажется пустой, выводить соответствующее сообщение.

п.1. - Напечатать слова, отличные от последнего слова, если они удовлетворяют следующему условию: слово совпадает с начальным отрезком латинского алфавита (a, ab, abc и т.д.); учесть, что в диапазоне «а».. «z» могут быть литеры, отличные от латинских букв.

п.2. - Напечатать все слова, отличные от последнего слова, перенося последнюю букву в начало слова.

Program Lab12;

Function asAlphabet(s:String):Boolean;

Var i:Integer;Alphabet:String;

Begin

Alphabet := 'abcdefghijklmnopqrstuvwxyz';

If Length(Alphabet)>=Length(s) then

asAlphabet:= true else asAlphabet:=false;

For i:=1 to Length(s)-1 do

If s[i]<>Alphabet[i] then asAlphabet:=false;

End;

Function equals(s:String;ss:String):Boolean;

Var i:Integer;

Begin

If Length(s)=Length(ss) then equals:= true

else equals:= false;

For i:=1 to Length(s) do

If s[i]<>ss[i] then equals:=false;

End;

Function replace(s:String):String;

Var i:Integer;ss:String;

Begin

ss:=s[Length(s)];

For i:=1 to Length(s)-1 do

ss:=ss+s[i];

replace:=ss;

End;

Type

words = array[1..100] of String;

Var

charWords:words;

charString:String;

i,j:Integer;

word:String;

Exit:Char;

empty:Boolean;

Begin

Writeln('Enter string of chars');

Readln(charString);

j:=0;

For i:=1 to Length(charString) do

Begin

if ((charString[i]<>' ') and (i < Length(charString)))

then word := word + charString[i]

else

Begin

If i=Length(charString) then word:=word+charString[i];

j:=j+1;

charWords[j]:=word;

word:='';

End;

End;

Writeln('Words with ordered literals and is not equals to last word:');

empty:=true;

For i:=1 to j do

Begin

If (asAlphabet(charWords[i]) and not equals(charWords[i],charWords[j]))

then Begin Writeln(charWords[i]);empty:=false;End;

End;

If empty then Writeln('No words have been found');

Writeln('Words with replaced first literal to end and is not equals to last word:');

empty:=true;

For i:=1 to j do

Begin

If not equals(charWords[i],charWords[j])

then Begin Writeln(replace(charWords[i]));empty:=false;End;

End;

If empty then Writeln('No words have been found');

Readln(Exit);

End.