Задача по Turbo Pascal

Модераторы: Duncon, Naeel Maqsudov, Хыиуду, Игорь Акопян

Аватара пользователя
LovesaN
Сообщения: 6
Зарегистрирован: 04 ноя 2007, 14:56

22 ноя 2007, 21:53

Привет всем! Помогите решить задачу
Найти периметр и площадь прямоугольной трапеции с основами a и b (a>b) и острым углом (угол задан в радианах).
Заранне спасибо
Хыиуду
Сообщения: 2388
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

23 ноя 2007, 11:03

Если угол - r, то длина большего бедра l=(a-b)/cos(r), меньшего - t=l*sin(r), периметр - сумма длин сторон, а площадь S=t*(a+b)/2
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Аватара пользователя
LovesaN
Сообщения: 6
Зарегистрирован: 04 ноя 2007, 14:56

24 ноя 2007, 14:56

Хыиуду спасибо за помощь.

Помогите ище с одной задачкой :(
Найти значение ф-ции, если a изменяется от a1 до an с шагом da. В случае если вычесление значения функции невозможно, выдать соответствующее сообщение.


Вот мой код:

Код: Выделить всё

program func;

var
a,an,ak,da:real;
b,c,f:real;
x:real;
begin
write('an: ');  //начальное значение а
readln(an);
write('ak: ');  //конечное значение а
readln(ak);
write('da: ');  //шаг с каким изменяется а
readln(da);
write('b: ');   //число b
readln(b);
write('c: ');   //число с
readln(c);

a:=0;
f:=0;
a:=an;
while (a<=ak) do
begin
f:=exp(a*ln(b*c))+sqrt((ln(a+b)))/(cos(b-c)); 
writeln('a=',a,' f=',f);
a:=a+da;
end;

end.
Проблема в том, что если (b-c)=90, то cos должен быть 0, но получается совсем друго е число. Пробывал (b-c) переводить в радианы, значение функции получается слишком маленькое, например при an:=2 ak:=5 da:=1 b:=91 c:=1 результаты следущие:
f=-1.1704247605E+12
f=-1.1718040903E+12
f=-1.1731001420E+12
f=-1.1682764279E+12

Как это можно исправить?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Хыиуду
Сообщения: 2388
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

24 ноя 2007, 15:13

Область определения: a+b>=1, |cos(b-c)|>=0.0001 (точность можно и изменить). Кстати, аргумент косинуса задается именно в радианах
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Аватара пользователя
LovesaN
Сообщения: 6
Зарегистрирован: 04 ноя 2007, 14:56

24 ноя 2007, 15:23

Хыиуду, спасибо ище раз :)
Аватара пользователя
alex@net
Сообщения: 11
Зарегистрирован: 24 ноя 2007, 17:58

24 ноя 2007, 19:05

-----------

предупреждение! ИА
Аватара пользователя
annihilator
Сообщения: 30
Зарегистрирован: 27 ноя 2007, 00:22

27 ноя 2007, 14:02

LovesaN, насколько я помню, паскаль в градусах считать не умеет, только в радианах.... или я что-то не понимаю по формуле?
alex@net, на себя посмотри
Вот представьте себе: чистое поле - ни кустика, ни деревца, и вдруг из-за угла выезжает танк!
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

27 ноя 2007, 16:13

alex@net - в бан
Тему в решите мне задачку
Аватара пользователя
Игорь Акопян
Сообщения: 1419
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

27 ноя 2007, 17:07

&quot писал(а):Тему в решите мне задачку
нет, ибо автор что-то делает сам.
Изображение
Аватара пользователя
LovesaN
Сообщения: 6
Зарегистрирован: 04 ноя 2007, 14:56

28 ноя 2007, 22:08

Уже как-то стыдно задавать такие ламерские вопросы, но...

В общем есть строка. Нужно вывести на экран все символы которые встречаются в строке 1 раз. Я хотел зделать так: удалить все повторяющиеся символы, а потом вывести все те что остались.

Код: Выделить всё

label 1;
var
n,c:integer;
s:string;

begin
s:=edit1.Text;
for n:=1 to length(s)-1 do
1:for c:=n+1 to length(s) do
begin
if s[n]=s[c] then
begin
delete(s,c,1);
goto 1;

end;
end;
label1.Caption:=s;
end;

Весь прыкол в том что у меня не получается удалить первый символ s[n] с которым сравниваются все остальные s[c]

Какие будут идеи?
Заранее спасибо
Закрыто