|
|
|
множество [pascal]
|
|||
|---|---|---|---|
|
#18+
Написать программу, в которой для конечных упорядоченных множеств реализовать все основные операции (Объединением,Пересечением,Разностью,Симметрической разностью) с помощью алгоритма типа слияния . Допустима организация множеств в виде списка или в виде массива. 1. На вход подаются два упорядоченных множества A и B (вводятся с клавиатуры, элементы множеств – буквы латинского алфавита). 2. После ввода множеств выбирается требуемая операция (посредством текстового меню, вводом определенного символа в ответ на запрос – выбор по желанию автора). 3. Программа посредством алгоритма типа слияния определяет результат выбранной операции и выдает его на экран с необходимыми пояснениями. Одновременно с результатом на экране должны присутствовать и исходные множества. 4.Возврат на п.2 (выбор операции). 5. Завершение работы программы – из п.2 (например, по ESC). Множества ввожу ,а дальше никак.Подскажите как правильно процедуры описать,чтобы их можно было в меню вызывать. авторProgram dm1; uses crt; Type Simvol = set of 'a'..'z'; Var A,B:simvol; i:integer; x,key:char; begin A:=[]; B:=[]; i:=1; repeat clrscr; writeln(' Vvedite ',i,'-y element mnogestva A '); readln(x); if (x in A) then begin writeln(x,' uje sodergitsya v mnogestve A '); i:=i-1; end else begin writeln(x,' pomeschon v mnogestvo A '); A:=A+[x]; end; i:=i+1; until i>5; i:=1; repeat clrscr; writeln(' Vvedite ',i,'-y element mnogestva B '); readln(x); if (x in B) then begin writeln(x,' uje sodergitsya v mnogestve B '); i:=i-1; end else begin writeln(x,' pomeschon v mnogestvo B '); B:=B+[x]; end; i:=i+1; until i>5; clrscr; writeln(' mnojestvo A: '); writeln; for x:='A' to 'z' do if x in A then write(x,' '); writeln; writeln(' mnojestvo B: '); writeln; for x:='A' to 'z' do if x in B then write(x,' '); procedure obyedinenie(c:chat):simvol; begin C:=A+B; writeln(C); end; procedure perese4enie(c:chat):simvol; begin C:=A*B; writeln(C); end; procedure raznosty(c:chat):simvol; C:=A-B; writeln(C); repeat clrscr; writeln('==========================='); writeln('1: obyedinenie'); writeln('2: perese4enie'); writeln('3: simmetr. raznosty'); writeln('4: raznosty'); writeln('o: vyhod'); key:=readkey; clrscr; case key of '1': obyedinenie(); '2': perese4enie(); '3': simmetr(); '4': raznosty(); until key='0'; end. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2009, 12:14:34 |
|
||
|
множество [pascal]
|
|||
|---|---|---|---|
|
#18+
Что-то я не помню в паскале типа CHAT Процедуры создаешь с параметрами, а вызываешь по-сишному, без параметров, но с () Судя по всему, данная программа полностью так ни разу и не запускалась ;) Запускай по частям и отлаживай. Отдельно логику, отдельно интерфейс. А чтоб не вводить каждый раз множества руками, задай их пока константами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2009, 12:32:18 |
|
||
|
множество [pascal]
|
|||
|---|---|---|---|
|
#18+
П.С. и вообще, с каких пор процедуры стали возвращать значение?:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2009, 12:33:46 |
|
||
|
множество [pascal]
|
|||
|---|---|---|---|
|
#18+
При вызове функции '1': obyedinenie('C',third_set); vyvod('C',C);end; пишет несоответствие типа. Подскажите как исправить. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2009, 15:57:20 |
|
||
|
множество [pascal]
|
|||
|---|---|---|---|
|
#18+
процедура объявлена след. образом procedure obyedinenie(first_set,second_set:simvol; var tird_set:simvol); Как правильно записать вызов процедуры obyedinenie ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2009, 19:00:21 |
|
||
|
множество [pascal]
|
|||
|---|---|---|---|
|
#18+
Вот моя версия проги: Program Night;Uses crt; Const n=5; Type Simvol =Set of 'A'..'Z'; Var A,B,C:Simvol; y,i,key:Integer; x:Char; Procedure vvod(name_set:Char; Var num_elem:Integer; Var one_set:Simvol); Begin Writeln('Vvedite ',num_elem,' element mnojestva ',name_set); Readln(x); x:=UpCase(x); If x in one_set Then Begin Writeln(x,' uje soderjitsya v mnojestve',name_set); num_elem:=num_elem-1; End Else Begin Writeln(x,' pomeschon v mnojestvo',name_set); one_set:=one_set+[x]; End; End; Procedure vyvod(name_set:Char; one_set:simvol); Begin Write(name_set,'=['); for x:='A' to 'Z' do If x in one_set Then Write(x,','); Writeln('];'); end; Procedure obyedinenie(Var third_set:simvol); Begin third_set:=A+B; End; Procedure perese4enie(Var third_set:simvol); Begin third_set:=A*B; End; Procedure raznost1(Var third_set:simvol); Begin third_set:=A-B; End; Procedure raznost2(Var third_set:simvol); Begin third_set:=B-A; End; Begin For i:=1 to n do vvod('A',i,A); For i:=1 to n do vvod('B',i,B); Clrscr; Repeat Writeln('Ishodnoe mnozhestvo'); vyvod('A',A); vyvod('B',B); Writeln('==========================='); Writeln('1: obyedinenie'); Writeln('2: perese4enie'); Writeln('(3: simmetr. raznosty)'); Writeln('4: raznosty(A-B)'); Writeln('5: raznosty(B-A)'); Writeln('0: vyhod'); Write('->'); Readln(key); Case key of 1: obyedinenie(C); 2: perese4enie(C); {3:Я не понял, что значит симметрия разности...} 4: raznost1(C); 5: raznost2(C); End; Clrscr; vyvod('C',C); Writeln('==========================='); Until Key=0; End. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.06.2009, 04:21:19 |
|
||
|
|

start [/forum/search_topic.php?author=GuestAsp.net&author_mode=last_posts&do_search=1]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
53ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
25ms |
get tp. blocked users: |
1ms |
| others: | 609ms |
| total: | 742ms |

| 0 / 0 |
