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

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

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

 
 Ответить  Открыть новую тему 
> чтото с условием, проверяет а обратно не идет
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





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

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


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


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

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


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

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


Гуру
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской
Ада: Разработчик
Embarcadero Delphi: Сторонник
Free Pascal: Разработчик

Репутация: -  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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Бывалый
***

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

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


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

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


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


Профи
****

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

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


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

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

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

 





- Текстовая версия 29.03.2024 2:39
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name