IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> чтото с условием, проверяет а обратно не идет
admitriev1992
сообщение 4.06.2011 12:32
Сообщение #1





Группа: Пользователи
Сообщений: 6
Пол: Мужской

Репутация: -  0  +


program Trepykhalin3;
uses crt;
function Ugol(a,b:real):real;
begin
Ugol:=180-a-b;
end;
function Stor(a,ua,ub:real):real;
begin
ua:=ua*pi/180;
ub:=ub*pi/180;
Stor:=a*sin(ub)/sin(ua);
end;
function Per(a,b,c:real):real;
begin
Per:=a+b+c;
end;
function Plosh(a,b,uc:real):real;
begin
uc:=uc*pi/180;
Plosh:=a*b*sin(uc)/2;
end;
var a,b,c,ua,ub,uc,p,s:real;
begin
clrscr;
write('Введите длину стороны BC b=');
readln(b);
repeat
writeln('Введите углы BAC и ABC:');
readln(ua,uc);
if ua+uc >= 180 then writeln('Это не треугольник. Повторите код.');
until a+c < 180;
ub:=Ugol(ua,uc);
a:=Stor(b,ub,ua);
c:=Stor(b,ub,uc);
p:=Per(a,b,c);
s:=Plosh(a,b,uc);
writeln('Стороны: AB=',c:0:2,' AC=',b:0:2);
writeln('Угол: ACB=',uc:0:0,#248);
write('Периметр=',p:0:2,' Площадь=',s:0:2);
readln
end.


пишет что это не треугольник а заново ввести велечины не позволяет , программа работает дальше до конца ..(( исправьте плиз))
как можно более проще, я пока что на 1 курсе и мало что понимаю))))
спасибо!)
и вообще она правильно написана то?
"Вычислить для треугольника ABC все стороны, все углы (в градусной мере), периметр и площадь, если известны: сторона BC и углы BAC, ABC.
Замечание: Программа должна содержать ввод известных величин с клавиатуры, вычисление неизвестных с использованием раздела Function и вывод результатов вычислений на экран"

Сообщение отредактировано: Lapp - 4.06.2011 14:21
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
DarkWishmaster
сообщение 5.06.2011 13:11
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 168
Пол: Мужской

Репутация: -  3  +


Цитата(admitriev1992 @ 4.06.2011 12:32) *

program Trepykhalin3;
uses crt;
function Ugol(a,b:real):real;
begin
Ugol:=180-a-b;
end;
function Stor(a,ua,ub:real):real;
begin
ua:=ua*pi/180;
ub:=ub*pi/180;
Stor:=a*sin(ub)/sin(ua);
end;
function Per(a,b,c:real):real;
begin
Per:=a+b+c;
end;
function Plosh(a,b,uc:real):real;
begin
uc:=uc*pi/180;
Plosh:=a*b*sin(uc)/2;
end;
var a,b,c,ua,ub,uc,p,s:real;
begin
clrscr;
write('Введите длину стороны BC b=');
readln(b);
repeat
writeln('Введите углы BAC и ABC:');
readln(ua,uc);
if ua+uc >= 180 then writeln('Это не треугольник. Повторите код.');
until a+c < 180;
ub:=Ugol(ua,uc);
a:=Stor(b,ub,ua);
c:=Stor(b,ub,uc);
p:=Per(a,b,c);
s:=Plosh(a,b,uc);
writeln('Стороны: AB=',c:0:2,' AC=',b:0:2);
writeln('Угол: ACB=',uc:0:0,#248);
write('Периметр=',p:0:2,' Площадь=',s:0:2);
readln
end.


пишет что это не треугольник а заново ввести велечины не позволяет , программа работает дальше до конца ..(( исправьте плиз))
как можно более проще, я пока что на 1 курсе и мало что понимаю))))
спасибо!)
и вообще она правильно написана то?
"Вычислить для треугольника ABC все стороны, все углы (в градусной мере), периметр и площадь, если известны: сторона BC и углы BAC, ABC.
Замечание: Программа должна содержать ввод известных величин с клавиатуры, вычисление неизвестных с использованием раздела Function и вывод результатов вычислений на экран"


  repeat
writeln('Введите углы BAC и ABC:');
readln(ua,uc);
if ua+uc >= 180 then writeln('Это не треугольник. Повторите код.');
until a+c < 180;


ага, вводишь ua и uc, а repeat работает для a и с. until ua+uc мб?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
admitriev1992
сообщение 5.06.2011 16:07
Сообщение #3





Группа: Пользователи
Сообщений: 6
Пол: Мужской

Репутация: -  0  +


Цитата(DarkWishmaster @ 5.06.2011 14:11) *

  repeat
writeln('Введите углы BAC и ABC:');
readln(ua,uc);
if ua+uc >= 180 then writeln('Это не треугольник. Повторите код.');
until a+c < 180;


ага, вводишь ua и uc, а repeat работает для a и с. until ua+uc мб?


сделай пожалуйста чтобы правильно было я не понимаю пока что(
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
DarkWishmaster
сообщение 5.06.2011 16:10
Сообщение #4


Бывалый
***

Группа: Пользователи
Сообщений: 168
Пол: Мужской

Репутация: -  3  +


Цитата(admitriev1992 @ 5.06.2011 16:07) *

сделай пожалуйста чтобы правильно было я не понимаю пока что(

ну тогда как я понимаю это не твоя програма если что не понятно.

program Trepykhalin3;
uses crt;
function Ugol(a,b:real):real;
begin
Ugol:=180-a-b;
end;
function Stor(a,ua,ub:real):real;
begin
ua:=ua*pi/180;
ub:=ub*pi/180;
Stor:=a*sin(ub)/sin(ua);
end;
function Per(a,b,c:real):real;
begin
Per:=a+b+c;
end;
function Plosh(a,b,uc:real):real;
begin
uc:=uc*pi/180;
Plosh:=a*b*sin(uc)/2;
end;
var a,b,c,ua,ub,uc,p,s:real;
begin
clrscr;
write('Введите длину стороны BC b=');
readln(b);
repeat
writeln('Введите углы BAC и ABC:');
readln(ua,uc);
if ua+uc >= 180 then writeln('Это не треугольник. Повторите код.');
until ua+uc < 180;
ub:=Ugol(ua,uc);
a:=Stor(b,ub,ua);
c:=Stor(b,ub,uc);
p:=Per(a,b,c);
s:=Plosh(a,b,uc);
writeln('Стороны: AB=',c:0:2,' AC=',b:0:2);
writeln('Угол: ACB=',uc:0:0,#248);
write('Периметр=',p:0:2,' Площадь=',s:0:2);
readln
end.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
admitriev1992
сообщение 5.06.2011 16:56
Сообщение #5





Группа: Пользователи
Сообщений: 6
Пол: Мужской

Репутация: -  0  +


да не моя ) у нас отчет и надо сделать кучу этих программ)
скажи пожалуйста это что за строчка?
Код
writeln('Угол: ACB=',uc:0:0,#248);
точнее что делает #248 ???
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
IUnknown
сообщение 5.06.2011 17:00
Сообщение #6


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


Цитата
точнее что делает #248 ???
Ты хотя бы запускал программу-то?

Посмотри, что выводится после надписи "Угол: ACB=" сколько-то_там... Значок "градус" (вот такой, в смысле: "°") видишь? Он что, по мановению волшебной палочки там появляется? Его ж надо вывести на экран? Вот его и выводит write(#248). Код этого символа = 248, если что...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
admitriev1992
сообщение 5.06.2011 17:07
Сообщение #7





Группа: Пользователи
Сообщений: 6
Пол: Мужской

Репутация: -  0  +


спасибо тебе огромное)) просто у меня чтото с кодировкой наверно и выводит букву "ш" вместо градуса))

скажи пожалуйста еще а для такого задания Изображение
код программы будет такой
Код
program trepykhalin8;
   uses crt;
   var T:real;
   k,i,d:integer;
begin
   i:=5;k:=3;d:=2;
   T:=(i/(k+ln(d)));
   while i<=14 do
begin
   i:=i+1;
   k:=k+3;
   d:=d+2;
   T:=T*(i/(k+ln(d)));
end;
   writeln('T=', T);readln;
end.

или вот такой
Код
Var
t:real;
i:byte;
k:real;
Begin
t:=1;
k:=0;
for i:=1 to 10 do
Begin
k:=k+2;
t:=t*(4+i)/(3*i-(-1)*ln(k));
end;
writeln(t);
end.


как думаешь??smile.gif)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Krjuger
сообщение 5.06.2011 18:50
Сообщение #8


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Что за угадай мелодию......

program trepykhalin8;
uses crt;
var T:real;
k,i,d:integer;
begin
i:=5;
k:=3;
d:=2;
T:=(i/(k+ln(d)));
while i<=14 do
begin
i:=i+1;
k:=k+3;
d:=d+2;
T:=T*(i/(k+ln(d)));
end;
writeln('T=', T);
readln;
end.


В этом коде есть как минимум 1 проблема здесь нету знакочередования в знаменателе.....И вторая проблема.Нах тебе CRT если ты его вообще не используешь...........
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
admitriev1992
сообщение 5.06.2011 19:06
Сообщение #9





Группа: Пользователи
Сообщений: 6
Пол: Мужской

Репутация: -  0  +


Цитата(Krjuger @ 5.06.2011 19:50) *

Что за угадай мелодию......

program trepykhalin8;
uses crt;
var T:real;
k,i,d:integer;
begin
i:=5;
k:=3;
d:=2;
T:=(i/(k+ln(d)));
while i<=14 do
begin
i:=i+1;
k:=k+3;
d:=d+2;
T:=T*(i/(k+ln(d)));
end;
writeln('T=', T);
readln;
end.


В этом коде есть как минимум 1 проблема здесь нету знакочередования в знаменателе.....И вторая проблема.Нах тебе CRT если ты его вообще не используешь...........


да фиг с этим crt в окошке просто удобнее )))
а как сделать чтобы прога чередовала знак с плюса на минус?)))
подскажи пожалуйста!))
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
DarkWishmaster
сообщение 5.06.2011 21:22
Сообщение #10


Бывалый
***

Группа: Пользователи
Сообщений: 168
Пол: Мужской

Репутация: -  3  +


Цитата(admitriev1992 @ 5.06.2011 19:06) *

да фиг с этим crt в окошке просто удобнее )))
а как сделать чтобы прога чередовала знак с плюса на минус?)))
подскажи пожалуйста!))


меняешь T:=T*(i/(k+ln(d))); на T:=T*(i/(k+sgn(i)*ln(d)));
где sgn:

function sgn(x:byte):byte;
begin
if odd(x) then sgn:=1
else sgn:=-1;
end;


т.е если у тя " i " четное то будет минус если нечетное то будет +.

Сообщение отредактировано: DarkWishmaster - 5.06.2011 21:26
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
admitriev1992
сообщение 5.06.2011 21:44
Сообщение #11





Группа: Пользователи
Сообщений: 6
Пол: Мужской

Репутация: -  0  +


пока я ждал вас тут, додумался сам и вот что получилось
Код
program zadanie8dmitriev;
uses crt;
var
x,k,y,i : integer;
t : real;
begin
i:=1;
t:=1;
x:=5;
k:=3;
y:=2;
while x<14 do
begin
t:= t*(x/(k+i*(ln(y))));
x:=x+1;
k:=k+3;
y:=y+2;
i:=i*(-1);
end;
writeln('T = ',i);
end.

помоему правильно, если нет поправьте, только почемуто ответы разные ... получаются
мой вариант правильный для данной задачи?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
DarkWishmaster
сообщение 5.06.2011 21:49
Сообщение #12


Бывалый
***

Группа: Пользователи
Сообщений: 168
Пол: Мужской

Репутация: -  3  +


Цитата(admitriev1992 @ 5.06.2011 21:44) *

пока я ждал вас тут, додумался сам и вот что получилось
Код
program zadanie8dmitriev;
uses crt;
var
x,k,y,i : integer;
t : real;
begin
i:=1;
t:=1;
x:=5;
k:=3;
y:=2;
while x<14 do
begin
t:= t*(x/(k+i*(ln(y))));
x:=x+1;
k:=k+3;
y:=y+2;
i:=i*(-1);
end;
writeln('T = ',i);
end.

помоему правильно, если нет поправьте, только почемуто ответы разные ... получаются
мой вариант правильный для данной задачи?

и так правильно. Знак "i" изменяется каждый раз, так что всё норм.
а да, там ещё долнжо x<=14 потому что 14 тоже должен считаться.

Сообщение отредактировано: DarkWishmaster - 5.06.2011 21:52
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
IUnknown
сообщение 5.06.2011 22:18
Сообщение #13


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


Цитата
и так правильно.
Угу, как же. А то, что выводить надо не i, а T - это ничего? smile.gif

Вариант, разносящий мозг в клочья:
   k := 3;
t := 1;
for X := 5 to 14 do
begin
t := t * (X / (k + (1 - 2*(1 - x mod 2)) * ln((k div 3) * 2)));
k := k + 3;
end;
writeln(T);
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
DarkWishmaster
сообщение 5.06.2011 23:16
Сообщение #14


Бывалый
***

Группа: Пользователи
Сообщений: 168
Пол: Мужской

Репутация: -  3  +


Цитата(IUnknown @ 5.06.2011 22:18) *

Угу, как же. А то, что выводить надо не i, а T - это ничего? smile.gif


lol.gif дальше не смотрел
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Krjuger
сообщение 6.06.2011 0:50
Сообщение #15


Профи
****

Группа: Пользователи
Сообщений: 652
Пол: Мужской
Реальное имя: Алексей

Репутация: -  20  +


Ну почему же выносящий, предпосылки к этому были какие то у топикстартера)))Собственно если умело скрестить его первую и вторую программы так оно где то и вышло,плюс умело найденные закономерности внесеные в саму расчетную формулу)В итоге 5 параметров были заменены 3)))
Кстати для знакочередования можно было не писаль отдельную функцию,а воспользоваться экспоненциальной записью))

Сообщение отредактировано: Krjuger - 6.06.2011 0:53
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 28.04.2024 16:39
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"