![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
SergSIS |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 13 Пол: Мужской Репутация: ![]() ![]() ![]() |
Написал программу по созданию множества из случайных чисел по заданному числу членов и выделению из него двух множеств делящихся на 3 и на 2.
в PascalABC программа работает, а в Turbo Pascal 7.0 выдает на 1 члена меньше и почемуто одни и те же числа. Помогите найти ошибку. Заранее благодарен. Код program Lab8_2; const m=200; var h,h1,h2:set of 1..m; i,p,n,k,r:integer; x:1..200; procedure wri (h:set of 1..m); var x:1..200; begin for x:=1 to 200 do if x in h then writeln(x); end; begin writeln('Введите количество членов!'); readln(n); while i<n do begin p:=Random(200); h:=h+[p]; i:=i+1; end; writeln('Сформированное множество:'); wri(h); k:=2; while k<=200 do begin if k in h then h1:=h1+[k]; k:=k+2; end; writeln('в том числе кратные 2:'); wri(h1); r:=3; while r<=200 do begin if r in h then h2:=h2+[r]; r:=r+3; end; writeln('в том числе кратные 3:'); wri(h2); end. |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
SergSIS,
Твой код вообще в TP 7.0 не компилируется. Ибо тип не может определяться внутри заголовка процедуры... Код program Lab8_2; const m=200; type myset = set of 1 .. m; var h, h1, h2: myset; { <--- Изменение } i, p, n, k, r: integer; x: 1 .. 200; procedure wri (h: myset); { <--- Изменение } var x:1..200; begin for x:=1 to 200 do if x in h then writeln(x); end; begin writeln('Введите количество членов!'); readln(n); i := 1; while i<=n do { <--- Вот печему получал меньше на 1 элемент } begin p:=Random(200) + 1; { <--- Иначе можешь получить 0, а это некорректно} h:=h+[p]; i:=i+1; end; writeln('Сформированное множество:'); wri(h); k:=2; while k<=200 do begin if k in h then h1:=h1+[k]; k:=k+2; end; writeln('в том числе кратные 2:'); wri(h1); r:=3; while r<=200 do begin if r in h then h2:=h2+[r]; r:=r+3; end; writeln('в том числе кратные 3:'); wri(h2); end. |
SergSIS |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 13 Пол: Мужской Репутация: ![]() ![]() ![]() |
Рано поблагодарил.
Ваши изменения проблему не устранили: 1.Сейчас выдается на 1 член больше чем запрашиваеш. 2.При повторных запусках выскакивают одни и те же числа (ваще неисправилось). Ни чё не понимаю! Сообщение отредактировано: SergSIS - 26.05.2006 11:55 |
SergSIS |
![]()
Сообщение
#4
|
Новичок ![]() Группа: Пользователи Сообщений: 13 Пол: Мужской Репутация: ![]() ![]() ![]() |
Рано поблагодарил. Ваши изменения проблему не устранили: 1.Сейчас выдается на 1 член больше чем запрашиваеш. 2.При повторных запусках выскакивают одни и те же числа (ваще неисправилось). Ни чё не понимаю! Почему в PascalABC работает, а в Turbo Pascal7.0 нет? Одна под Видос другая под Дос. Ни чё не понимаю!? Рано поблагодарил. Ваши изменения проблему не устранили: 1.Сейчас выдается на 1 член больше чем запрашиваеш. 2.При повторных запусках выскакивают одни и те же числа (ваще неисправилось). Ни чё не понимаю! Почему в PascalABC работает, а в Turbo Pascal7.0 нет? Одна под Видос другая под Дос. Ни чё не понимаю!? |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 22:09 |