Автор: SergSIS 26.05.2006 13:51
Написал программу по созданию множества из случайных чисел по заданному числу членов и выделению из него двух множеств делящихся на 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 26.05.2006 14:31
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 26.05.2006 15:08
Рано поблагодарил.
Ваши изменения проблему не устранили:
1.Сейчас выдается на 1 член больше чем запрашиваеш.
2.При повторных запусках выскакивают одни и те же числа (ваще неисправилось).
Ни чё не понимаю!
Автор: SergSIS 26.05.2006 16:21
Цитата(SergSIS @ 26.05.2006 13:08)
Рано поблагодарил.
Ваши изменения проблему не устранили:
1.Сейчас выдается на 1 член больше чем запрашиваеш.
2.При повторных запусках выскакивают одни и те же числа (ваще неисправилось).
Ни чё не понимаю!
Почему в PascalABC работает, а в Turbo Pascal7.0 нет? Одна под Видос другая под Дос.
Ни чё не понимаю!?
Цитата(SergSIS @ 26.05.2006 13:08)
Рано поблагодарил.
Ваши изменения проблему не устранили:
1.Сейчас выдается на 1 член больше чем запрашиваеш.
2.При повторных запусках выскакивают одни и те же числа (ваще неисправилось).
Ни чё не понимаю!
Почему в PascalABC работает, а в Turbo Pascal7.0 нет? Одна под Видос другая под Дос.
Ни чё не понимаю!?
Автор: volvo 26.05.2006 17:28
SergSIS, ну что, тебе тоже скриншот привести? Сколько запрашиваешь - столько и генерируется. А ты не учел, кстати, что если будут 3 единицы, например - то ты получишь на 2 меньше, чем запрашивал. Это ж СЛУЧАЙНЫЕ числа !!! А в множестве одно число хранится в одном экземпляре...
Цитата
При повторных запусках выскакивают одни и те же числа (ваще неисправилось).
Randomize первой строкой
программы добавь... (я это и не исправлял, кстати. Help не просто так в Паскале существует)
Цитата
Почему в PascalABC работает, а в Turbo Pascal7.0 нет? Одна под Видос другая под Дос.
Всего-то разницы
А то, что синтаксис другой - тебе наплевать, правда? А вот TP - НЕТ.
Автор: Malice 26.05.2006 17:31
Цитата(SergSIS @ 26.05.2006 12:08)
Рано поблагодарил.
Ваши изменения проблему не устранили:
1.Сейчас выдается на 1 член больше чем запрашиваеш.
Поставь
i:=1; в начале программы
Цитата
2.При повторных запусках выскакивают одни и те же числа (ваще неисправилось).
Ни чё не понимаю!
Поставь
Randomize; тоже в начале.
Автор: SergSIS 26.05.2006 21:13
Извиняюсь, господа модераторы, мозги просто уже горят (время поджимает) вот и леплю ошибки.
Буду пробовать, спасибо за помощь.
А кудаж нам бедным ещё обращатся за помощью, как не на любимый форум?
Автор: -Alexan- 29.04.2007 17:50
помогите сделать пограммы :определить максимальное целое n удовлетворяющее условию 3n2(в кв)-730n<5
#2:сформировать два массива целых чисел определенной длиныюВывести на печать числа,встречающиеся в каждом массиве. ПОМОГИТЕ ПОЖАЛУЙСТА НАДО СРОЧНО!!!!
! |
|
Не надо задавать свои вопросы в чужих темах, тем более в таких древних. Прежде чем создать свою тему, настоятельно рекомендую прочитать правила форума
|