Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.149.26.176] |
|
Сообщ.
#1
,
|
|
|
помогите, пожалуйста, составить программу
В каждом из 3-х вузов может изучаться множество языков программирования: basic, pascal, prolog, clipper, cu, logo. Ввести с клавиатуры множество языков, изучаемых в каждом из вузов. Построить множество В, содержащее названия языков, изучаемых только в одном из 3-х вузов. |
Сообщ.
#2
,
|
|
|
Цитата Ввести с клавиатуры множество языков, изучаемых в каждом из вузов. Можно так попробовать: type language=(basic, pascal, prolog, clipper, c, logo); var a,b,d:set of language; s:string; begin a:=[]; readln(s); if s='pascal' then include(a,pascal); end. |
Сообщ.
#3
,
|
|
|
Цитата Булат Шакиров @ Цитата Ввести с клавиатуры множество языков, изучаемых в каждом из вузов. Можно так попробовать: type language=(basic, pascal, prolog, clipper, c, logo); var a,b,d:set of language; s:string; begin a:=[]; readln(s); if s='pascal' then include(a,pascal); end. [attach=#0][/attach]что то мне не понятно то, что вы написали. я вот начал писать программу, но не знаю как закончить, там нужно условие написать, чтобы строилось множество языков изучаемых только в одном из 3-х вузов. может подскажите как? вот прога: |
Сообщ.
#4
,
|
|
|
А что именно непонятно?
|
Сообщ.
#5
,
|
|
|
Цитата Булат Шакиров @ include(a,pascal) ну это же не вся программа, как я понимаю? и что делает вот эта команда: include(a,pascal) ? |
Сообщ.
#6
,
|
|
|
Цитата Построить множество В, содержащее названия языков, изучаемых только в одном из 3-х вузов. А как вы его строите? Добавлено Нет, конечно, только пример. Include включает элемент во множество |
Сообщ.
#7
,
|
|
|
Цитата Булат Шакиров @ А как вы его строите? я вот так начал программу Прикреплённый файл____________________3.jpg (62,79 Кбайт, скачиваний: 358) а вот как построить это множество как раз таки и не знаю... |
Сообщ.
#8
,
|
|
|
Например так
type language=(basic, pascal, prolog, clipper, c, logo); var a,b,d:set of language; begin a:=[]; d:=[]; include(a,pascal); d:=a+[logo]; if a>=d then b:=a-d else b:=d-a; end. В 1-м вузе изучают basic, pascal, во втором изучают тоже самое + logo В b будет только logo Прикреплённый файл____________________.png (78,03 Кбайт, скачиваний: 506) |
Сообщ.
#9
,
|
|
|
Цитата Булат Шакиров @ спасибо, попробую сделать |
Сообщ.
#10
,
|
|
|
Попробуйте еще такой вариант:
b:=exclude(a+d,a*d); Пусть a - множество из basic, logo; d - basic, logo,c; Тогда обьединение множеств (+) даст basic,logo,c; а пересечение (*) basic, logo; Исключение из обьединения множеств его пересечения даст элемент c Добавлено Не проверял, могу ошибаться. |
Сообщ.
#11
,
|
|
|
Цитата Булат Шакиров @ Пусть a - множество из basic, logo; d - basic, logo,c; Тогда обьединение множеств (+) даст basic,logo,c; а пересечение (*) basic, logo; Исключение из обьединения множеств его пересечения даст элемент c это все применимо в том варианте, который я начал писать? или надо с начала программу по новому писать? |
Сообщ.
#12
,
|
|
|
А проверьте на своем варианте;
b:=exclude(t[1]+t[2]+t[3],t[1]*t[2]*t[3]); Добавлено Не t конечно, a m Добавлено И не b, а g например. |
Сообщ.
#13
,
|
|
|
Цитата Булат Шакиров @ А проверьте на своем варианте; b:=exclude(t[1]+t[2]+t[3],t[1]*t[2]*t[3]); неправильно выводит результат |
Сообщ.
#14
,
|
|
|
В смысле? Паскаль не умеет выводить элементы множества.
|
Сообщ.
#15
,
|
|
|
Цитата Булат Шакиров @ В смысле? Паскаль не умеет выводить элементы множества. ну он должен вывести на экран те языки, которые изучаются только в одном вузе. а он выводит их неверно. |
Сообщ.
#16
,
|
|
|
Хорошо, сейчас проверю.
|
Сообщ.
#17
,
|
|
|
Цитата Булат Шакиров @ пишет, что ошибка в выражении. курсор мигает на начале слова exclude |
Сообщ.
#18
,
|
|
|
Все правильно. И должно мигать. Exclude исключает один элемент из множества. Косяк мой.
вот так работает type language=(basic, pascal, prolog, clipper, c, logo); var a,b,d:set of language; begin a:=[]; d:=[]; include(a,pascal); a:=a+[basic]; d:=a+[logo]; b:=(a+d)-a*d; end. Добавлено То есть нужно найти объединение множеств, затем из него вычесть пересечение. проверяйте на своих данных |
Сообщ.
#19
,
|
|
|
Цитата Булат Шакиров @ То есть нужно найти объединение множеств, затем из него вычесть пересечение. проверяйте на своих данных пробую пока что то не выходит |
Сообщ.
#20
,
|
|
|
Бросьте сюда код
|
Сообщ.
#21
,
|
|
|
Цитата Булат Шакиров @ Бросьте сюда код program gr; uses crt; type s=(basik, paskal, prolog, cu, logo); x=set of s; yaz=array[1..5] of x; var i:s; m:yaz; g,t,t1,t2,t3,t4:x; k,j:integer; begin clrscr; writeln('1 basic'); writeln('2 paskal'); writeln('3 prolog'); writeln('4 cu'); writeln('5 logo'); for j:=1 to 3 do begin t:=[]; write('‚введите номера для',j,'-го вуза '); repeat read(k); case k of 1:i:=basik; 2:i:=paskal; 3:i:=prolog; 4:i:=cu; 5:i:=logo; end; t:=t+[i]; until eoln; m[j]:=t; end; ну вот то, что я изначально начал писать вы про этот код? |
Сообщ.
#22
,
|
|
|
Да. Поковыряюсь. Проверяйте
Добавлено program gr; uses crt; type s=(basik, paskal, prolog, cu, logo); x=set of s; yaz=array[1..5] of x; var i:s; m:yaz; g,t,t1,t2,t3,t4:x; k,j:integer; b:byte; begin clrscr; writeln('1 basic'); writeln('2 paskal'); writeln('3 prolog'); writeln('4 cu'); writeln('5 logo'); writeln('любая клавиша следущий вуз'); for j:=1 to 3 do begin t:=[]; write('введите номера для ',j,'-го вуза '); repeat read(k); case k of 1:t:=t+[basik]; 2:t:=t+[paskal]; 3:include(t,prolog); 4:t:=t+[cu]; 5:t:=t+[logo] else break; end; until false; b:=sizeof(t); m[j]:=t; t4:=(m[1]+m[2]+m[3])-(m[1]*m[2]*m[3]); end; end. |
Сообщ.
#23
,
|
|
|
Цитата Булат Шакиров @ не работает((( ошибку выдает Проверяйте program gr; uses crt; type s=(basik, paskal, prolog, cu, logo); x=set of s; yaz=array[1..5] of x; var i:s; m:yaz; g,t,t1,t2,t3,t4:x; k,j:integer; b:byte; begin clrscr; writeln('1 basic'); writeln('2 paskal'); writeln('3 prolog'); writeln('4 cu'); writeln('5 logo'); writeln('любая клавиша следущий вуз'); for j:=1 to 3 do begin t:=[]; write('введите номера для ',j,'-го вуза '); repeat read(k); case k of 1:t:=t+[basik]; <------- здесь выдает ошибку, несоответствие типа. 2:t:=t+[paskal]; 3:include(t,prolog); 4:t:=t+[cu]; 5:t:=t+[logo] else break; end; until false; b:=sizeof(t); m[j]:=t; t4:=(m[1]+m[2]+m[3])-(m[1]*m[2]*m[3]); end; end. |
Сообщ.
#24
,
|
|
|
Какую ошибку? Чего пишет? У меня в fpc отработал нормально.
|
Сообщ.
#25
,
|
|
|
Цитата Булат Шакиров @ Какую ошибку? Чего пишет? У меня в fpc отработал нормально. смотрите в пред сообщении, я в программе пометил где ошибка Добавлено Цитата Булат Шакиров @ Какую ошибку? Чего пишет? У меня в fpc отработал нормально. 1:t:=t+[basik]; <------- здесь выдает ошибку, несоответствие типа. |
Сообщ.
#26
,
|
|
|
Попробуйте
Include(t, basik); Добавлено Что за паскаль у вас? Какой-то странный. По виду вроде турбо, но с русским меню. Скачайте современный компилятор. |
Сообщ.
#27
,
|
|
|
Цитата Булат Шакиров @ Попробуйте Include(t, basik); так запускается, но результат то на экран она не выводит а нужно, чтобы вывелся результат, какие языки изучается только в одном вузе Добавлено Цитата Булат Шакиров @ Что за паскаль у вас? Какой-то странный. По виду вроде турбо, но с русским меню. Скачайте современный компилятор. Dos Box: турбо паскаль. у меня на винде 8 вроде только он работает просто |
Сообщ.
#28
,
|
|
|
Элементы множества нельзя выводить на экран. Исхитриться можно так:
http://comp-science.narod.ru/Progr/mn.htm Посмотрите процедуру print Современые компилятор паскаля - freepascal.org |
Сообщ.
#29
,
|
|
|
Цитата Булат Шакиров @ Элементы множества нельзя выводить на экран. ну по заданию надо вывести преподаватель же должен как то проверить мы на паре просто рассматривали похожую задачу, там выводился результат на экран Добавлено Цитата Булат Шакиров @ Посмотрите процедуру print хорошо. щас посмотрю Добавлено Цитата Булат Шакиров @ Элементы множества нельзя выводить на экран. Исхитриться можно так: http://comp-science.narod.ru/Progr/mn.htm Посмотрите процедуру print что то все равно не получается( |
Сообщ.
#30
,
|
|
|
Счас поковыряюсь
Добавлено program gr; uses crt; type s=(basik, paskal, prolog, cu, logo); names=array [s] of string[20]; x=set of s; yaz=array[1..5] of x; const NamesStr : Names =('basik', 'paskal', 'prolog', 'cu', 'logo'); var i:s; m:yaz; g,t,t1,t2,t3,t4:x; k,j:integer; begin clrscr; writeln('1 basic'); writeln('2 paskal'); writeln('3 prolog'); writeln('4 cu'); writeln('5 logo'); writeln('любая клавиша следущий вуз'); for j:=1 to 3 do begin t:=[]; write('введите номера для ',j,'-го вуза '); repeat read(k); case k of 1:include(t,basik); 2:include(t,paskal); 3:include(t,prolog); 4:include(t,cu); 5:include(t,logo) else break; end; until false; m[j]:=t; t4:=(m[1]+m[2]+m[3])-(m[1]*m[2]*m[3]); end; for i:=basik to logo do if i in t4 then writeln(NamesStr[(i)]); end. |
Сообщ.
#31
,
|
|
|
Цитата Булат Шакиров @ Счас поковыряюсь Добавлено 27 минут назад program gr; uses crt; type s=(basik, paskal, prolog, cu, logo); names=array [s] of string[20]; x=set of s; yaz=array[1..5] of x; const NamesStr : Names =('basik', 'paskal', 'prolog', 'cu', 'logo'); var i:s; m:yaz; g,t,t1,t2,t3,t4:x; k,j:integer; begin clrscr; writeln('1 basic'); writeln('2 paskal'); writeln('3 prolog'); writeln('4 cu'); writeln('5 logo'); writeln('любая клавиша следущий вуз'); for j:=1 to 3 do begin t:=[]; write('введите номера для ',j,'-го вуза '); repeat read(k); case k of 1:include(t,basik); 2:include(t,paskal); 3:include(t,prolog); 4:include(t,cu); 5:include(t,logo) else break; end; until false; m[j]:=t; опять выводит неверный результат, либо его вообще не выводит.. не понимаю почему( |
Сообщ.
#32
,
|
|
|
Напишите, какие данные вы вводили.
|
Сообщ.
#33
,
|
|
|
Цитата Булат Шакиров @ Напишите, какие данные вы вводили. ну просто ввожу номера языков для каждого вуза, к примеру: 123 234 514 пробовал как слитно писать, так и через пробел |
Сообщ.
#34
,
|
|
|
Число ентер, число ентер, выход другой символ кроме 1..5
Вот так у меня отработало Прикреплённый файл____________________.png (61,22 Кбайт, скачиваний: 383) |
Сообщ.
#35
,
|
|
|
Цитата Булат Шакиров @ Число ентер, число ентер, выход другой символ кроме 1..5 Вот так у меня отработало ну вроде так работает) спасибо большое) |