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

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

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

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

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

2 Za4
напиши в среде Дельфи, в подходящем месте:
const B : set of byte = [10,20, 31..35];
потом поставь курсор на "set" и нажми на F1. Посмотри хелп на set и все рядом с ним, например "set operators".
...
Рейтинг: 0 / 0
28.03.2005, 22:15
    #32985036
Шогал
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как делать? Скажите... (Pascal)
Да и вообще это задачу можно решить просто тремя массивами типа 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
29.03.2005, 11:29
    #32985724
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как делать? Скажите... (Pascal)
ШогалДа и вообще это задачу можно решить просто тремя массивами типа boolean:
Можно и еще более извратными способами :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
15.02.2011, 13:07
    #37116916
Havok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как делать? Скажите... (Pascal)
Можно что то сократить? А то код длинноват получился...
автор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
15.02.2011, 13:24
    #37116981
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как делать? Скажите... (Pascal)
HavokМожно что то сократить? А то код длинноват получился...
Ну, с 24 марта 2005 года основное, что стоит сократить - это сроки разработки :) А код.. ну вот например если один и тот же фрагмент повторяется девять раз подряд, на такой стиль обычно немного ругаются :)
...
Рейтинг: 0 / 0
15.02.2011, 13:47
    #37117086
Havok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как делать? Скажите... (Pascal)
softwarerнапример если один и тот же фрагмент повторяется девять раз подряд, на такой стиль обычно немного ругаются :)
Понятно:) Спасибо)
...
Рейтинг: 0 / 0
15.02.2011, 16:42
    #37117646
Havok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как делать? Скажите... (Pascal)
Хотя не совсем...) Мне, что удалить всё, что повторяется 9 раз, и оставить по 8...? Но тогда же теряется тк. скз. кусок кода... или может его заменит чем-то можно что бы было меньше символов?
...
Рейтинг: 0 / 0
15.02.2011, 16:48
    #37117662
Джигеротта Грешница
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как делать? Скажите... (Pascal)
HavokХотя не совсем...) Мне, что удалить всё, что повторяется 9 раз, и оставить по 8...? Но тогда же теряется тк. скз. кусок кода... или может его заменит чем-то можно что бы было меньше символов?
Используй процедуры, Люк! Для ввода значений. Избавься от goto.
...
Рейтинг: 0 / 0
15.02.2011, 18:17
    #37117920
Havok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как делать? Скажите... (Pascal)
Джигеротта ГрешницаИспользуй процедуры, Люк! Для ввода значений. Избавься от goto.
Может кто может изменить этот код, так как нужно и запостить в теме, пожалуйста? А я по примеру ещё один похожий исправлю и буду разбиратся, что да как...
...
Рейтинг: 0 / 0
20.02.2011, 23:21
    #37127124
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как делать? Скажите... (Pascal)
Ну, например, можно сделать так
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
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Как делать? Скажите... (Pascal) / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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