Лабораторная раота часть1 вар6
.docБелорусский Государственный Университет
Информатики и Радиоэлектроники
Лабораторная работа №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.