0 / 0 / 0
Регистрация: 07.02.2019
Сообщений: 4
1

Вывод текста по TRUE/FALSE

07.02.2019, 11:03. Показов 3319. Ответов 7
Метки нет (Все метки)

Нашел на форуме этот код, но хочу переделать вывод результата в одну строчку. Чтобы текст добавлялся в зависимости от результатов подпрограмм.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
var a,b,c:real;
 
function is_triangle(a,b,c:real):boolean;
var k:boolean;
begin
 k:=true;
 if (a>=b+c) or (b>=a+c) or (c>=a+b) then k:=false;
 is_triangle:=k;
end;
 
function is_isosceles(a,b,c:real):boolean;
var k:boolean;
begin
 k:=false;
 if (a=b) or (b=c) or (a=c) then k:=true;
 is_isosceles:=k;
end;
 
function is_equilateral(a,b,c:real):boolean;
var k:boolean;
begin
 k:=false;
 if ((a=b) and (b=c)) then k:=true;
 is_equilateral:=k;
end;
 
function is_right(a,b,c:real):boolean;
var k:boolean;
begin
 k:=false;
 a:=a*a;
 b:=b*b;
 c:=c*c;
 if (c=a+b) or (a=b+c) or (b=a+c) then k:=true;
 is_right:=k;
end;
 
begin
 readln(a,b,c);
 writeln('Треугольник  ',is_triangle(a,b,c));
 writeln('Равнобедренный  ',is_isosceles(a,b,c));
 writeln('Равносторонний  ',is_equilateral(a,b,c));
 writeln('Прямоугольный  ',is_right(a,b,c));
end.
В pascal только начал учиться и лучшее, что смог придумать:

Pascal
1
2
3
4
if is_triangle(a,b,c):=true then write('Треугольник ') and
if is_isosceles(a,b,c):=true then write('Равнобедренный  ') and
if is_equilateral(a,b,c):=true then write('Равносторонний  ') and
if is_right(a,b,c):=true then write('Прямоугольный  ')
Объясните пожалуйста, в чем ошибки и как это можно реализовать.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.02.2019, 11:03
Ответы с готовыми решениями:

true/false
Даны координаты (как целые от 1 до 8) двух различных полей шахматной доски. Если конь за один ход...

true and false
pomogite napisat' programmu функция возвращает true, если натуральное n равно сумме своих...

Задание на true,false
1.Вычислить значение выражения при p=q=true: (p<true)=(q=false). 2.Записать на Паскале отношение,...

Вычислить выражение: (p<false) = (q=true)
Вычислить выражение: (p&lt;false) = (q=true) при p=q=false

7
Почетный модератор
64275 / 47574 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
07.02.2019, 11:25 2
Лучший ответ Сообщение было отмечено Mihray как решение

Решение

Может так нужно?
Pascal
1
2
3
4
if is_triangle(a,b,c) then write('Это треугольник, он ');
if is_isosceles(a,b,c) then write('равнобедренный ')
else if is_equilateral(a,b,c)then write('равносторонний  ')
else if is_right(a,b,c) then write('прямоугольный  ');
1
3405 / 1824 / 489
Регистрация: 28.02.2015
Сообщений: 3,699
07.02.2019, 11:38 3
Pascal
1
2
3
4
if is_triangle(a,b,c):=true then write('Треугольник ') and
if is_isosceles(a,b,c):=true then write('Равнобедренный  ') and
if is_equilateral(a,b,c):=true then write('Равносторонний  ') and
if is_right(a,b,c):=true then write('Прямоугольный  ')
1) В условиях :=true истина проверяется сама, её не нужно проверять знаком равенства "=", и тем более присваиванием.
2) and, вместо точки с запятой - круто.


Pascal
1
2
3
4
5
6
7
8
 if is_triangle(a,b,c)then
   begin
     write('Треугольник  ');
     if is_isosceles(a,b,c) then
       if is_equilateral(a,b,c) then writeln('Равносторонний')
                                else writeln('Равнобедренный');
     if is_right(a,b,c) then writeln('Прямоугольный  ')
   end;
0
0 / 0 / 0
Регистрация: 07.02.2019
Сообщений: 4
07.02.2019, 11:45  [ТС] 4
Спасибо, значит функция сама по себе true и указывать значение не нужно? Но как тогда задать условие в котором функция будет false?
0
3405 / 1824 / 489
Регистрация: 28.02.2015
Сообщений: 3,699
07.02.2019, 11:51 5
Цитата Сообщение от Mihray Посмотреть сообщение
Спасибо, значит функция сама по себе true и указывать значение не нужно? Но как тогда задать условие в котором функция будет false?
False = NOT True
0
0 / 0 / 0
Регистрация: 07.02.2019
Сообщений: 4
07.02.2019, 13:07  [ТС] 6
Вот к такому я пришел, многовато нагромождений, но ответ получается красивый и учитывает все тонкости геометрии

Pascal
1
2
3
4
5
6
7
8
9
10
11
 readln(a,b,c);
if is_triangle(a,b,c) then write('Это треугольник, он ');
If not is_triangle(a,b,c) then 
 begin 
 write('Треугольника с данными сторонами не существует ');
 exit 
 end;
if not is_isosceles(a,b,c) and not is_equilateral(a,b,c) and not is_right(a,b,c) then write('произвольный ' );
if is_isosceles(a,b,c) then write('равнобедренный ');
if is_equilateral(a,b,c)then write('равносторонний  ');
if is_right(a,b,c) then write('прямоугольный  ');
0
3405 / 1824 / 489
Регистрация: 28.02.2015
Сообщений: 3,699
07.02.2019, 13:53 7
Цитата Сообщение от Mihray Посмотреть сообщение
но ответ получается красивый и учитывает все тонкости геометрии
Если два катета, прямоугольного треугольника равны, он прямоугольный или равнобедренный, или прямоугольный и равнобедренный?
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7519 / 4383 / 2781
Регистрация: 22.11.2013
Сообщений: 12,542
Записей в блоге: 1
07.02.2019, 16:23 8
Когда ктото делает так
Pascal
1
2
  k:=True
  if условие then k:=False;
или наоборот, то где-то умирает маленький пушистый котенок.
Пожалейте котят.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function is_triangle(a, b, c: Real): Boolean;
begin
 is_triangle:=(a<b+c) and (b<a+b) and (c<a+b);
end;
 
function is_isosceles(a, b, c: Real): Boolean;
begin
  is_isosceles:=(a=b) or (b=c) or (a=c);
end;
 
function is_equilateral(a, b, c: Real): Boolean;;
begin
  is_equilateral:=(a=b) and (b=c);
end;
 
function is_right(a, b, c: Real): Boolean;
begin
  a:=a*a;
  b:=b*b;
  c:=c*c;
  is_right:=(c=a+b) or (a=b+c) or (b=a+c); { = -- очень плохая идея }
end;
Добавлено через 50 секунд
Сравнивать вычисленные действительные на равенство — идея так себе...
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.02.2019, 16:23
Помогаю со студенческими работами здесь

Вычислить выражение: not(a or b) при a=true и b=false
Вычислить выражение: not(a or b) при a=true и b=false

Вычислить значение выражения при a=true, b=false
a OR b AND NOT a

Определить значение логического выражения при a=true і b=false:
(not a and not b) and not b or a Подскажите мне ! Shelcok, на будущее - официальный язык форума...

Написать программу, которая печатает true и false в зависимости
Написать программу, которая печатает true и false в зависимости от того, имеют три заданных целых...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru