Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 6472
Последний выпуск: 19.06.2015

Задачи на Паскале

14K
12 декабря 2005 года
Vaza
4 / / 12.12.2005
Уважаемые члены форума,помогите решить задачи по языкам программирования.Срочно!

1) подсчитать количество цифр больших 9, у натурального числа N в шестнадцатиричной
системе счисления.

2) Вычислить сумму ряда с погрешностью E=0,0001 в окрестности точки 0, т.е. при |x|<1;
y=ln(1+x/2)=x/2-x*x/(2*2*2)+x*x*x/(2*2*2*3)-x*x*x*x/(2*2*2*2*4)+....;

3) Вычислить значение выражения
Y=(6!-2*2*2*2*2*x)/(1+5!-2*2*2*2*x)/(2+(4!-2*2*2*x)/(3+(3!-2*2)/(4+(2!-2*x)/(5+x)))));
Заранее благодарен!
14K
13 декабря 2005 года
Vaza
4 / / 12.12.2005
Кто-нибудь, объясните хотя бы как решить первую задачу.:{
911
14 декабря 2005 года
sp999
198 / / 31.01.2003
Цитата:
Originally posted by Vaza
Кто-нибудь, объясните хотя бы как решить первую задачу.:{


Элементарно, Ватсон!

var
N: string;
i, Num: Integer;
...
ReadLn(N);
Num := 0;
for i := 1 to Length(N) do
if N in ['a'..'f', 'A'..'F'] then
Inc(Num);
WriteLn(Num);

Удачи!

6.3K
14 декабря 2005 года
Neutral
76 / / 13.12.2005
Цитата:
Originally posted by Vaza
Уважаемые члены форума,помогите решить задачи по языкам программирования.Срочно!

1) подсчитать количество цифр больших 9, у натурального числа N в шестнадцатиричной
системе счисления.

2) Вычислить сумму ряда с погрешностью E=0,0001 в окрестности точки 0, т.е. при |x|<1;
y=ln(1+x/2)=x/2-x*x/(2*2*2)+x*x*x/(2*2*2*3)-x*x*x*x/(2*2*2*2*4)+....;

3) Вычислить значение выражения
Y=(6!-2*2*2*2*2*x)/(1+5!-2*2*2*2*x)/(2+(4!-2*2*2*x)/(3+(3!-2*2)/(4+(2!-2*x)/(5+x)))));
Заранее благодарен!



Если я правильно понял условие первой задачки, то у нас есть число (в десятичной системе) и мы должны узнать сколько у него цифр больше 9 в шестнадцатиричной ситеме счисления. Вот приблизительный код:

var n,ans:longint;

begin
ans:=0;
readln(n);
while (n<>0) do
begin
if n mod 16>9 then inc(ans);
n:=n div 16;
end;
writeln(ans);
end.

14K
14 декабря 2005 года
ksana
8 / / 14.12.2005
Решение 3-ей задачи:
var
y : real;
x, i, j : integer;

procedure Faktorial(n : integer) : integer;
var
result : integer;
begin
for i := 1 to n do
begin
result := result * i;
end;

Faktorial := result;
end;

begin

writeln('Vvedite znachenie x = ');
readln(x);

y := (Faktorial(6) - 2 * 2 * 2 * 2 * 2 * x) / 2 + (Faktorial(4) - 2 * 2 * 2 * x) / (3 + (Faktorial(3) - 2 * 2) / 4 + (Faktorial(2) - 2 * x) / (5 + x)))));

writeln(y);
read;

end.
14K
14 декабря 2005 года
Vaza
4 / / 12.12.2005
Цитата:
Originally posted by Neutral
Если я правильно понял условие первой задачки, то у нас есть число (в десятичной системе) и мы должны узнать сколько у него цифр больше 9 в шестнадцатиричной ситеме счисления.


Да ты правильно понял, но такой код я уже пробывал, он не работает.
Счетчик всегда остается на нуле.

911
15 декабря 2005 года
sp999
198 / / 31.01.2003
Цитата:
Originally posted by Vaza
Да ты правильно понял, но такой код я уже пробывал, он не работает.
Счетчик всегда остается на нуле.


Фигню говорите, товарищ!
Код работает, я проверял.

14K
15 декабря 2005 года
Vaza
4 / / 12.12.2005
Цитата:
Originally posted by sp999
Фигню говорите, товарищ!
Код работает, я проверял.


Извини, я ошибся, код действительно работает.
Спасибо всем, кто учавствовал в решении задач.

14K
15 декабря 2005 года
GreK
10 / / 15.12.2005
Народ помогите плиз бедному студенту!!!
Вообщем нужно написать процедуры для ввода и вывода комплексных чисел!
program comp;
type TComp=Record
Re,Im:real;
Algebr:boolean;
end;
var Comp1,Comp2,Comp3:TComp;

procedure InComp(Var Comp:TComp);
Const Str1='vvedite deistvetelnyu chast';
Str2='vvedite mnimyu chast';
begin write(Str1);
readln(Comp.Re);
write(Str2);
readln(Comp.Im);
end;

procedure OutComp(Str:string;Comp:TComp);
begin
with Comp do
if (Im>=0) then
writeln(Str,Re:5:2,'+j',Im:5:2)
else writeln(Str,Re:5:2,'-j',-Im:5:2);
end;


begin
InComp(Comp1);
InComp(Comp2);
InComp(Comp3);
OutComp (???);
end.

Что надо написать в скобках OutComp? А так же кто может помогите здесь же написать процедуры для +,-,*,/ для комплексных чисел! Plz
911
16 декабря 2005 года
sp999
198 / / 31.01.2003
Цитата:
Originally posted by GreK
Народ помогите плиз бедному студенту!!!
Вообщем нужно написать процедуры для ввода и вывода комплексных чисел!
program comp;
type TComp=Record
Re,Im:real;
Algebr:boolean;
end;
var Comp1,Comp2,Comp3:TComp;

procedure InComp(Var Comp:TComp);
Const Str1='vvedite deistvetelnyu chast';
Str2='vvedite mnimyu chast';
begin write(Str1);
readln(Comp.Re);
write(Str2);
readln(Comp.Im);
end;

procedure OutComp(Str:string;Comp:TComp);
begin
with Comp do
if (Im>=0) then
writeln(Str,Re:5:2,'+j',Im:5:2)
else writeln(Str,Re:5:2,'-j',-Im:5:2);
end;


begin
InComp(Comp1);
InComp(Comp2);
InComp(Comp3);
OutComp (???);
end.

Что надо написать в скобках OutComp? А так же кто может помогите здесь же написать процедуры для +,-,*,/ для комплексных чисел! Plz



Скорее всего, что-то вроде
OutComp('Comp1:',Comp1);

function AddComp(Comp1, Comp2: TComp): TComp;
var
Res: TComp;
begin
with Res do begin
Re := Comp1.Re + Comp2.Re;
Im := Comp1.Im + Comp2.Im;
end;
end;

function SubComp(Comp1, Comp2: TComp): TComp;
var
Res: TComp;
begin
with Res do begin
Re := Comp1.Re - Comp2.Re;
Im := Comp1.Im - Comp2.Im;
end;
end;

function MulComp(Comp1, Comp2: TComp): TComp;
var
Res: TComp;
begin
with Res do begin
Re := Comp1.Re * Comp2.Re - Comp1.Im * Comp2.Im;
Im := Comp1.Re * Comp2.Im + Comp1.Im * Comp2.Re;
end;
end;

function DivComp(Comp1, Comp2: TComp): TComp;
var
Res: TComp;
begin
with Res do begin
Re := (Comp1.Im * Comp2.Im + Comp1.Re * Comp2.Re) / (Sqr(Comp2.Re) + Sqr(Comp2.Im));
Im := (Comp1.Im * Comp2.Re - Comp1.Re * Comp2.Im) / (Sqr(Comp2.Re) + Sqr(Comp2.Im));
end;
end;

Удачи!

911
16 декабря 2005 года
sp999
198 / / 31.01.2003
Забыл, во всех функциях надо в конце вписать
строчку, вроде
AddComp := Res;
14K
16 декабря 2005 года
GreK
10 / / 15.12.2005
Спасибо конечно но код не работает и надо не через функцию прописывать а через процедуру! С этим я разобрался! Если интересно вот:
Цитата:

Program comp;
uses crt;
Type Tcomp=record
Re,Im:Real;
Algebr:Boolean;
end;
Var Comp1,Comp2,Comp3:Tcomp;
a,z:real;
procedure InComp(Var Comp:TComp);
const Str1='Vvedite destvitelnyu chast=';
Str2='Vvedite mnimyu chast=';

Begin
Write(Str1);
Readln(Comp.Re);
write(Str2);
Readln(Comp.Im);
Comp.Algebr:=True;
end;

procedure OutComp(Str:string;Comp:TComp);
var a,z:real;
Begin

With Comp do
if Im>=0 then
writeln(str,Re:5:2,'+j',Im:5:2)
else
writeln(str,Re:5:2,'-j',-Im:5:2);


z:=sqrt(sqr(Comp.Re)+sqr(Comp.Im));
a:=arctan(Comp.Im/Comp.Re);
Comp.Re:=z;
Comp.Im:=a;

writeln(Comp.Re:5:2,'(','cos',Comp.Im:5:2,'+','j','sin',Comp.Im:5:2,')');
readln;

End;

Procedure PocComp(var Comp:Tcomp);
var z,a:real;
Begin
z:=sqrt(sqr(Comp.re)+sqr(Comp.Im));
a:=arctan(Comp.Im/Comp.Re);
Comp.Re:=z;
Comp.Im:=a;
Comp.Algebr:=False;
end;

Procedure TransToAlg (Var Cmp: TComp);
Var a,b: Real;
begin
a:=Cmp.Re*Cos(Cmp.Im);
b:=Cmp.Re*Sin(Cmp.Im);
Cmp.Re:=a;
Cmp.Im:=b;
Cmp.Algebr:=True;
End;

Procedure SumComp(Cmp1,Cmp2:Tcomp; Var Cmp3:TComp);
begin
If Not Cmp1.Algebr then TransToAlg(Cmp1);
If Not Cmp2.Algebr then TransToAlg(Cmp2);
Cmp3.Re:=Cmp1.Re+Cmp2.Re;
Cmp3.Im:=Cmp1.Im+Cmp2.Im;
Cmp3.Algebr:=True;
end;

Procedure SubComp(Cmp1,Cmp2:TComp; Var Cmp3:TComp);
begin
If Not Cmp1.Algebr then TransToAlg(Cmp1);
If Not Cmp2.Algebr then TransToAlg(Cmp2);
Cmp3.Re:=Cmp1.Re-Cmp2.Re;
Cmp3.Im:=Cmp1.Im-Cmp2.Im;
Cmp3.Algebr:=True;
end;

Procedure MulComp(Cmp1,Cmp2:TComp;Var Cmp3:TComp);
begin
If Not Cmp1.Algebr then TransToAlg(Cmp1);
If Not Cmp2.Algebr then TransToAlg(Cmp2);
Cmp3.Re:=Cmp1.Re*Cmp2.Re-Cmp1.Im*Cmp2.Im;
Cmp3.Im:=Cmp1.Re*Cmp2.Im+Cmp1.Im*Cmp2.Re;
Cmp3.Algebr:=True;
end;

Procedure DivComp(Cmp1,Cmp2:TComp;Var Cmp3:TComp);
begin
If Not Cmp1.Algebr then TransToAlg(Cmp1);
If Not Cmp2.Algebr then TransToAlg(Cmp2);
Cmp3.Re:=(Comp1.Im*Comp2.Im+Comp1.Re*Comp2.Re)/(Sqr(Comp2.Re)+Sqr(Comp2.Im));
Cmp3.Im:=(Comp1.Im*Comp2.Re-Comp1.Re*Comp2.Im)/(Sqr(Comp2.Re)+Sqr(Comp2.Im));
Cmp3.Algebr:=True;
end;

begin
clrscr;
InComp(Comp1);
OutComp('Comp1=',Comp1);
InComp(Comp2);
OutComp('Comp2',Comp2);
SumComp (Comp1,Comp2,Comp3);
OutComp('Comp1+Comp2= ',Comp3);
SubComp(Comp1,Comp2,Comp3);
OutComp('Comp1-Comp2= ',Comp3);
MulComp (Comp1,Comp2,Comp3);
OutComp('Comp1*Comp2= ',Comp3);
DivComp (Comp1,Comp2,Comp3);
OutComp('Comp1/Comp2= ',Comp3);

end.


Энто правильный код!!!

Знаете кого-то, кто может ответить? Поделитесь с ним ссылкой.

Ваш ответ

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог