powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как делать? Скажите... (Pascal)
17 сообщений из 17, страница 1 из 1
Как делать? Скажите... (Pascal)
    #32977417
Za4
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Za4
Гость
Поскажите пожалуйста как делать...

Даны три множества X1 , Х2, ХЗ, содержащие целые числа из диапазона 100 ... 200. Известно, что мощность каждого из этих множеств равна 10. Сформировать новое множество Y=(x1 пересечение x2) объединение (x1 объединение x3). На печать вывести множества X1, Х2, Х3 и Y
...
Рейтинг: 0 / 0
Как делать? Скажите... (Pascal)
    #32977805
Фотография Lelikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Откройте любую книгу по Pascal -- там рассказано про элементарные операции на множествах
________________________________________________________
Глюк - это высокоорганизованная система не поддающихся определению частиц
...
Рейтинг: 0 / 0
Как делать? Скажите... (Pascal)
    #32979978
roman74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне только непонятно причем тут "мощность". Да и что это - тоже непонятно :)
...
Рейтинг: 0 / 0
Как делать? Скажите... (Pascal)
    #32982942
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
roman74Мне только непонятно причем тут "мощность".
Скорее всего, препод, который давал задачу из учебника, не знал, что в Паскале есть элементарные операции с множествами - вот и упростил на всякий случай :)

roman74 Да и что это - тоже непонятно :)
Хм. Ну и ладно.
...
Рейтинг: 0 / 0
Как делать? Скажите... (Pascal)
    #32983063
Фотография tchingiz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 roman74
неплохо иногда ходить на лекции по теории множеств.

в случае конечных множеств, кардинальное число, называемое мощность множества совпадает с количество элементов в этом множестве.
в твоих множествах содержится по десять чисел.
...
Рейтинг: 0 / 0
Как делать? Скажите... (Pascal)
    #32983147
roman74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дык, в свое время ходил я на эти лекции. Но такие подробности как мощность не помню :((
Помню только объединение,разность, пересечение,...что же еще...декартово произведение!!!вот!!! :)) Еще помню такие слова как сущности и кортежи :)
Сейчас все мои знания из этой области сводятся к sql
...
Рейтинг: 0 / 0
Как делать? Скажите... (Pascal)
    #32983287
Dremuchij Forester
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
roman74Сейчас все мои знания из этой области сводятся к sql

О!!!
я тоже это слово знаю!!!
...
Рейтинг: 0 / 0
Как делать? Скажите... (Pascal)
    #32984909
Фотография S.G.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LelikkОткройте любую книгу по Pascal -- там рассказано про элементарные операции на множествах
Мне кажется, в условие задачи в неявном виде входит " ...не открывая ни одну книгу по Pascal, а также лекции/учебник "

2 Za4
напиши в среде Дельфи, в подходящем месте:
const B : set of byte = [10,20, 31..35];
потом поставь курсор на "set" и нажми на F1. Посмотри хелп на set и все рядом с ним, например "set operators".
...
Рейтинг: 0 / 0
Как делать? Скажите... (Pascal)
    #32985036
Шогал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да и вообще это задачу можно решить просто тремя массивами типа boolean:

Код: plaintext
1.
2.
3.
4.
5.
for i :=  100  to  200  do
  Y[i] := (X1[i] and X2[i]) or (X1[i] or X3[i]);

А вывести на экран:
for i :=  100  to  200  do
  if Y[i] then writeln(i);
...
Рейтинг: 0 / 0
Как делать? Скажите... (Pascal)
    #32985724
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ШогалДа и вообще это задачу можно решить просто тремя массивами типа boolean:
Можно и еще более извратными способами :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как делать? Скажите... (Pascal)
    #37116916
Havok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно что то сократить? А то код длинноват получился...
авторprogram N3_by_k1T4eR;

uses
CRT;

var
sAx, sAy, sBx, sBy, sCx, sCy: string;
x1, x2, x3, y1, y2, y3, a, b, c, p, Dx, Dy, Ex, Ey, Fx, Fy, AF, BD, CE, R: real;
kAx, kAy, kBx, kBy, kCx, kCy: integer;
j, z: char;


label 1;{Метка - запрос на повторное выполнение}
label 2;{Метка - возвращение на повторное выполнение}
label 3;{Метка - Пропуск сообщения приветствия}
label 4;{Метка - при неверном вводе "x1"}
label 5;{Метка - при неверном вводе "y1"}
label 6;{Метка - при неверном вводе "x2"}
label 7;{Метка - при неверном вводе "y2"}
label 8;{Метка - при неверном вводе "x3"}
label 9;{Метка - при неверном вводе "y3"}
begin
WriteLn('Добро пожаловать!');
goto 3; {Пропуск очистки экрана}
2: ClrScr; {Очистка при повторном выполнении}
3: WriteLn('Для нахождения R круга и медиан треуголльника введите:');
WriteLn;
WriteLn('Координаты точки А:');
4: Write('х = ');
ReadLn(sAx);
Val(sAx, x1, kAx);
if kAx <> 0 then goto 4;
5: Write('у = ');
ReadLn(sAy);
Val(sAy, y1, kAy);
if kAy <> 0 then goto 5;
WriteLn('Координаты точки B:');
6: Write('х = ');
ReadLn(sBx);
Val(sBx, x2, kBx);
if kBx <> 0 then goto 6;
7: Write('у = ');
ReadLn(sBy);
Val(sBy, y2, kBy);
if kBy <> 0 then goto 7;
WriteLn('Координаты точки C:');
8: Write('х = ');
ReadLn(sCx);
Val(sCx, x3, kCx);
if kCx <> 0 then goto 8;
9: Write('у = ');
ReadLn(sCy);
Val(sCy, y3, kCy);
if kCy <> 0 then goto 9;

Dx := (x1 + x3) / 2;
Dy := (y1 + y3) / 2;
Ex := (x1 + x2) / 2;
Ey := (y1 + y2) / 2;
Fx := (x2 + x3) / 2;
Fy := (y2 + y3) / 2;
a := SQRT(SQR(x2 - x3) + SQR(y2 - y3)); {BC}
b := SQRT(SQR(x1 - x3) + SQR(y1 - y3)); {AC}
c := SQRT(SQR(x1 - x2) + SQR(y1 - y2)); {AB}
AF := SQRT(SQR(x1 - Fx) + SQR(y1 - Fy)); {медиана AF}
BD := SQRT(SQR(x2 - Dx) + SQR(y2 - Dy)); {медиана BD}
CE := SQRT(SQR(x1 - Ex) + SQR(y1 - Ey)); {медиана CE}
p := (a + b + c) / 2;
R := (a * b * c) / (4 * SQRT(p * (p - a) * (p - b) * (p - c)));
ClrScr;
WriteLn('Ваш результат при A(', x1, ';', y1, '), B(', x2, ';', y2, '), C(', x3, ';', y3, '):');
WriteLn;
WriteLn('Радиус R = ', R:8:2);
WriteLn('Медиана AF= ', AF:8:2);
WriteLn('Медиана BD= ', BD:8:2);
WriteLn('Медиана CE= ', CE:8:2);
WriteLn;
WriteLn('*** Данную программу составил студент Дмитрий ***');
WriteLn;
1: WriteLn('Попробовать с другими значениями? (Y/N)');
ReadLn(z);
j:=upcase(z);
if j = 'Y' then goto 2;
if j = 'N' then exit
else goto 1;
end.
...
Рейтинг: 0 / 0
Как делать? Скажите... (Pascal)
    #37116981
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HavokМожно что то сократить? А то код длинноват получился...
Ну, с 24 марта 2005 года основное, что стоит сократить - это сроки разработки :) А код.. ну вот например если один и тот же фрагмент повторяется девять раз подряд, на такой стиль обычно немного ругаются :)
...
Рейтинг: 0 / 0
Как делать? Скажите... (Pascal)
    #37117086
Havok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarerнапример если один и тот же фрагмент повторяется девять раз подряд, на такой стиль обычно немного ругаются :)
Понятно:) Спасибо)
...
Рейтинг: 0 / 0
Как делать? Скажите... (Pascal)
    #37117646
Havok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотя не совсем...) Мне, что удалить всё, что повторяется 9 раз, и оставить по 8...? Но тогда же теряется тк. скз. кусок кода... или может его заменит чем-то можно что бы было меньше символов?
...
Рейтинг: 0 / 0
Как делать? Скажите... (Pascal)
    #37117662
Фотография Джигеротта Грешница
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HavokХотя не совсем...) Мне, что удалить всё, что повторяется 9 раз, и оставить по 8...? Но тогда же теряется тк. скз. кусок кода... или может его заменит чем-то можно что бы было меньше символов?
Используй процедуры, Люк! Для ввода значений. Избавься от goto.
...
Рейтинг: 0 / 0
Как делать? Скажите... (Pascal)
    #37117920
Havok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Джигеротта ГрешницаИспользуй процедуры, Люк! Для ввода значений. Избавься от goto.
Может кто может изменить этот код, так как нужно и запостить в теме, пожалуйста? А я по примеру ещё один похожий исправлю и буду разбиратся, что да как...
...
Рейтинг: 0 / 0
Как делать? Скажите... (Pascal)
    #37127124
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, например, можно сделать так
Example
Код: plaintext
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.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
 program  N3_by_k1T4eR;

 uses 
    CRT;

 type 
    Triangle =  record 
        A, B, C, Ma, Mb, Mc:  record  X,Y: Real  end ;
        la, lb, lc, lma, lmb, lmc: Real;
        p, R: Real;
     end ;

 const 
    OutL= 8 ; OutD= 2 ;

 var 
    T: Triangle;
    z:  String ;

 Procedure  CalcTriangle( var  T:Triangle);
 begin 
    T.Ma.X:=(T.B.X+T.C.X)/ 2 ;
    T.Ma.Y:=(T.B.Y+T.C.Y)/ 2 ;
    T.Mb.X:=(T.A.X+T.C.X)/ 2 ;
    T.Mb.Y:=(T.A.Y+T.C.Y)/ 2 ;
    T.Mc.X:=(T.A.X+T.B.X)/ 2 ;
    T.Mc.Y:=(T.A.Y+T.B.Y)/ 2 ;

    T.la:=Sqrt(Sqr(T.B.X-T.C.X)+Sqr(T.B.Y-T.C.Y));
    T.lb:=Sqrt(Sqr(T.A.X-T.C.X)+Sqr(T.A.Y-T.C.Y));
    T.lc:=Sqrt(Sqr(T.B.X-T.A.X)+Sqr(T.B.Y-T.A.Y));
    T.lma:=Sqrt(Sqr(T.A.X-T.Ma.X)+Sqr(T.A.Y-T.Ma.Y));
    T.lmb:=Sqrt(Sqr(T.B.X-T.Mb.X)+Sqr(T.B.Y-T.Mb.Y));
    T.lmc:=Sqrt(Sqr(T.C.X-T.Mc.X)+Sqr(T.C.Y-T.Mc.Y));

    T.p:=(T.la+T.lb+T.lc)/ 2 ;
    T.R:=(T.la*T.lb*T.lc)/( 4 *Sqrt(T.p*(T.p-T.la)*(T.p-T.lb)*(T.p-T.lc)));
 end ;

 Function  TrimPrint(N: Real): string ;
 var 
    s:  String ;
 begin 
    Str(N:OutL:OutD,s);
     while  s[ 1 ]=' '  do  Delete(s, 1 , 1 );
    TrimPrint:=s;
 end ;

 Procedure  InputPoint( var  r: Real; Message:  String );
 var 
    s:  String ;
    code: Integer;
 begin 
     if  Length(Message)> 0   Then 
         begin  Write('Координаты точки '); Write(Message); WriteLn(':')  end ;
     repeat 
         if  Length(Message)> 0   then  Write('x = ')  else  Write('y = ');
        ReadLn(s);
        Val(s,r,code);
     until  code= 0 ;
 end ;

 Procedure  OutResults(T:Triangle);
 begin 
    WriteLn('Ваш результат при A(', TrimPrint(T.A.X), ';', TrimPrint(T.A.Y), '), B(',
     TrimPrint(T.B.X), ';', TrimPrint(T.B.Y), '), C(', TrimPrint(T.C.X), ';', TrimPrint(T.C.Y), '):');
    WriteLn;
    WriteLn('Радиус R = ', TrimPrint(T.R));
    WriteLn('Длина медианы M(A) = ', TrimPrint(T.lma));
    WriteLn('Длина медианы M(B) = ', TrimPrint(T.lmb));
    WriteLn('Длина медианы M(C) = ', TrimPrint(T.lmc));
 end ;

 begin 
 repeat 
    ClrScr;
    WriteLn('Добро пожаловать!');
    WriteLn;
    WriteLn('Для нахождения R круга и медиан треугольника введите:');
    WriteLn;

    InputPoint(T.A.X,'A');
    InputPoint(T.A.Y,'');
    InputPoint(T.B.X,'B');
    InputPoint(T.B.Y,'');
    InputPoint(T.C.X,'C');
    InputPoint(T.C.Y,'');

    CalcTriangle(T);
    OutResults(T);

    WriteLn;
    WriteLn('*** Данную программу составил студент Дмитрий ***');
    WriteLn;

    z:='N';
    Write('Повторить?(Y):');
    ReadLn(z);
 until  UpCase(z[ 1 ])<>'Y';
 end .

Кода не намного меньше, но сама методика подхода к разработке...
Кроме того, на основе данного примера уже можно сделать дальнейшее развитие - скажем, заменить в типе Triangle переменные на множества и сделать "record-case". Кроме того, реализация уже практически просится к преобразованию в класс - и прямая дорога в ООП...
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как делать? Скажите... (Pascal)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]