задачи на турбо паскале
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
задачи на турбо паскале - 2008-12-24 18:15:16.760000
|
|
|
ylyaka
Сообщений: 4
Оценки: 0
Присоединился: 2008-12-24 16:19:14.093333
|
Здравствуйте… помогите пожалуйста решить несколько задач…неожиданностью стала для меня информатика,а сказали к экзамену решить,а он завтра 8( у меня паника,не знаю что делать! Заранее всем огромнейшее спасибо!!!!! Извините что я такая наглая,прост обстоятельства так неожиданно сложились( сейчас вот сижу читаю про палькаль… Задание 1.Ввести с клавиатуры x, y и вычислить,используя метод промежуточного аргумента : z=Ctg(1+|x+y|)-1+|x+y|^3 Задание 2.Ввести х и вычислить : {2|x+1| , Если x<-1 y={0 ,Если x=-1 {lg|x+1| ,Если x>-1 Задание 3. Построить таблицу значений функции "у" на отрезке [a,b] с шагом "h" c приостановкой выдачи результатов через каждые N строк таблицы. Найти максимальное и минимальное значение "у" и соответствующие им значения аргумента "х". y(x) = sin(x) +|sin(x)| a=-5 ; b=10; h=0.2; N=10. Замечание : таблица должна иметь следующий вид : _____________________________________________ |_№_п/п_____|_______x________|________y______| |____….______|______…______ _|_______…______| Задание 4. Вычислить : tg 1 tg 3 tg 5 tg 19 S=—– - —– - —– - … - ——– 3+2 5-3 7+4 21-11
|
|
|
RE: задачи на турбо паскале - 2008-12-24 19:18:32.743333
|
|
|
Zmaster
Сообщений: 930
Оценки: 0
Присоединился: 2007-02-09 19:02:43.500000
|
Я решу первое задание, если мне кто-нибудь объяснит, что такое метод промежуточного аргумента.
|
|
|
RE: задачи на турбо паскале - 2008-12-24 21:28:31.320000
|
|
|
Данила88
Сообщений: 38
Оценки: 0
Присоединился: 2008-12-06 14:44:29.386666
|
Стилистикой турбо паскаля не владею, однако структура такова:(Fortran77) 3) dimension x(1000),y(1000)Объявление массивов аргумента и функции read(*,*)a,b,h,nВВод данных m=int((b-a)/h)+1 Установление количества шагов do 1 i=1,m * x(i)=a+h*(i-1) * y(i)=sin(x)+abs(sin(x))* p=i/n * if(p-int(p).eq.0) then * Установление множеств зн-й аргументов и функции,вывод их по каналу 1, pause * остановка через каждые n шагов endif * write(1,*)i,y(',i,'),x(',i,')* 1continue * i=1 4continue w=y(i) r=y(i+1) if(r.gt.w) then go to 3 else i=i+1 go to 4 endif 3continue i=i+1 if(i.eq.m) then go to 5 Остальное- установление max элемента endif go to 4 5continue do 6 i=1,m if(w.eq.y(i)) then v=x(i) 6continue write(1,*)w,v вывод max элемента end 2) read(*,*)x if(x.lt.-1) then y=2*abs(x-1) endif if(x.gt.-1) then y=log(abs(x+1)) endif if(x.eq.0) then y=0 endif write(1,*)y end
|
|
|
RE: задачи на турбо паскале - 2008-12-24 21:51:06.070000
|
|
|
K1ller
Сообщений: 94
Оценки: 0
Присоединился: 2008-11-25 23:19:36.140000
|
var x,y :real;
begin
readln(x);
if(x=-1) then y:=0;
if(x<-1) then y :=2*(1+x)*(-1);
if(x>-1) then y:=0.434*ln(x+1);
writeln(y);
end.
Вторая
|
|
|
RE: задачи на турбо паскале - 2008-12-24 22:55:00.686666
|
|
|
ylyaka
Сообщений: 4
Оценки: 0
Присоединился: 2008-12-24 16:19:14.093333
|
Спасибо огромное Вам всем!Побольше бы таких отзывчивых людей на свете как Вы)
|
|
|
RE: задачи на турбо паскале - 2008-12-24 23:06:17.286666
|
|
|
K1ller
Сообщений: 94
Оценки: 0
Присоединился: 2008-11-25 23:19:36.140000
|
Var x,y,z,result,cosinus,sinus,cotangens : real;
begin
readln(x,y);
z:=x+y;
if(z<0) then z:=z*-1;
sinus:=sin(z+1);
cosinus:=cos(z+1);
cotangens:=cosinus/sinus;
result:=cotangens-1+z*z*z;
writeln(result);
end.
Певая quote:
Я решу первое задание, если мне кто-нибудь объяснит, что такое метод промежуточного аргумента. Действительно, что же это. То, что я написал, похоже?
|
|
|
RE: задачи на турбо паскале - 2008-12-24 23:36:26.306666
|
|
|
Denaturat
Сообщений: 1741
Оценки: 453
Присоединился: 2008-10-27 20:50:06.380000
|
quote:
ORIGINAL: Данила88 Стилистикой турбо паскаля не владею, однако структура такова:(Fortran77) это прекрасно, чёрт возьми
|
|
|
RE: задачи на турбо паскале - 2008-12-24 23:38:36.013333
|
|
|
K1ller
Сообщений: 94
Оценки: 0
Присоединился: 2008-11-25 23:19:36.140000
|
Var x,a,b,h : real;
ar : array[1..10000] of real;
br : array[1..10000] of real;
i,min,max : real;
count,n,tmp,j,xmin,xmax : longint;
begin
writeln('Vvedyte a,b,h,n');
readln(a,b,h,n);
min:=3;
max:=-3;
count:=1;
i:=a;
repeat
ar[count]:=sin(i)+abs(sin(i));
br[count]:=i;
if(ar[count]>max) then begin max:=ar[count]; xmax:=count; end;
if(ar[count]<min) then begin min:=ar[count]; xmin:=count; end;
inc(count);
i:=i+h;
until i>b+h;
tmp:=n;
writeln('№ x y');
for j:= 1 to count-1 do
begin
if j>n then begin readln; n:=n+tmp; end;
writeln(j,' ',br[j]:0:4,' ',ar[j]:0:4);
end;
writeln('min=',min:0:3,' v tochke ',br[xmin],' max=',max:0:3,' v tochke ',br[xmax]);
end.
Третья. За безошибочную работу программы не отвечаю)) Введи пару тестов, проверь ее. З.Ы Я думаю, для экзамена тебе хватит и трех задач. 4 бала обеспечено, если, конечно, препод не спросит как работает программа))
|
|
|
RE: задачи на турбо паскале - 2008-12-25 00:35:06.116666
|
|
|
ylyaka
Сообщений: 4
Оценки: 0
Присоединился: 2008-12-24 16:19:14.093333
|
Спасибо тебе огромное. я вот тут поискала в инете и нашла вот такой вариант 3 задачи: Program PRIMER_Tabl; Uses CRT; Const a=0; b=3; h=0.5; Var x,y,maxf,maxx,minf,minx: real; k,n :integer; key: char; Function F(xx:real):real; Begin F:=sqr(xx)*sin(xx) End; Begin ClrScr; x:=a; maxf:=-1e38; minf:=1e38; {Для рисования таблицы воспользуемся таблицей ASCII-кодов. Нужный символ можно получить, если при нажатой клавише ALT на дополнительной цифирной клавиатуре набрать код символа, и после этого отпустить ALT. См. Замечание 3.} Writeln('—-T—¬'); Writeln('¦ x ¦ y ¦'); Writeln('+–+–+'); Repeat y:=f(x); Writeln(' ',x:3:1,' ',y:6:3,' '); if (y>maxf) then Begin maxf:=y; maxx:=x End; if (y<minf) then Begin minf:=y; minx:=x End; x:=x+h; Until (x>b+h/2); Writeln('L–+—'); Writeln('MaxF = F(',maxx:3:1,') = ',maxf:6:3); {вывод на экран результата} Writeln('MinF = F(',minx:3:1,') = ',minf:6:3); Repeat Until KeyPressed; End. А еще по поводу Метода промежуточного аргумента : Ввести с клавиатуры x и вычислить y, используя метод промежуточного аргумента: y=( (1+|x|+sin(x))^1/3 / x ) + lg(1+|x|+sin(x)) + (1+|x|+sin(x))^1/2 (делить на Х всё первое выражение в степени одна треть,потом в этому всему выражение прибавляеться lg(1+|x|+sin(x)) ) Прежде всего заметим, что в выражение для y три раза входит блок 1+|x|+sin(x) . Чем три раза выписать его в программе, лучше вычислить его как промежуточный аргумент, обозвав его каким-либо именем (например р) . Тогда при описании переменных в начале программы необходимо предусмотреть введение величины р вещественного типа: Program Argument; Uses CRT; {стандартная библиотека} Label start; Var x, y, p : real; Begin start: Write(‘x =’); Readln(x); if (x=0) then goto start; p:=1+abs(x)+sin(x); y:=exp(1/3*ln(p))/x +ln(p)/ln(10)+sqrt(p); Writeln(‘y =’,y:6:3); {вывод на экран результата} Repeat Until Keypressed; End. Сделаем несколько необходимых замечаний. 1) Поскольку при x=0 в первой дроби будет деление на 0, и ЭВМ выдаст сообщение об ошибке “Division by zero”, в программу поставлена проверка условия “x=0?” и при положительном ответе программа повторяет ввод. 2) Оператор Repeat Until Keypressed приводит к паузе до нажатия любой клавиши.
|
|
|
RE: задачи на турбо паскале - 2008-12-25 14:41:39.230000
|
|
|
ylyaka
Сообщений: 4
Оценки: 0
Присоединился: 2008-12-24 16:19:14.093333
|
Посмотрите плз 4 задачу) я сама по шаблону решила ) Для решения задачи выделим закономерность в этих слагаемых. Каждое слагаемое представляет из себя дробь вида: tg a +/- ——- b +/- c где “a” от шага к шагу увеличивается на 2 “b” – на 2 “c” -на 1 Чередование знака введем через вспомогательную переменную “p”, принимающую значения +1 и -1. Program Summa; Uses Crt; Var a,b,c: integer; p: integer; s :real; Begin s:=0; a:=1 b:=3 c:=2 p:=1; Repeat s:=s+p*(tg a / (b+p*c) inc(a,2); inc(b,2); inc(c,1); {Стандартные процедуры} p:=-p; Until (a>19); {условие остановки} Writeln('s = ',s:8:3); {вывод на экран результата} Repeat Until KeyPressed; End.
|
|
|
RE: задачи на турбо паскале - 2008-12-25 19:17:05.260000
|
|
|
K1ller
Сообщений: 94
Оценки: 0
Присоединился: 2008-11-25 23:19:36.140000
|
Program Summa;
Uses Crt;
Var
a,b,c: integer;
p: integer;
s :real;
Begin
s:=0; a:=1; b:=3; c:=2; p:=1;
Repeat
s:=s+p*(sin(a)/cos(a) / (b+p*c));
inc(a,2); inc(b,2); inc(c,1); {Стандартные процедуры}
p:=-p;
Until (a>19); {условие остановки}
Writeln('s = ',s:8:3); {вывод на экран результата}
Repeat Until KeyPressed;
End.
Из всеми исправлениями… Алгоритм вроде правильный. Посчитай вручную и сравни из результатом программы.
|
|
|
|
|