IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Помогите исправить программу!, Turbo Pascal 7.0
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Мужской

Репутация: -  0  +


Написал программу по созданию множества из случайных чисел по заданному числу членов и выделению из него двух множеств делящихся на 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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #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.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 13
Пол: Мужской

Репутация: -  0  +


Рано поблагодарил.
Ваши изменения проблему не устранили:
1.Сейчас выдается на 1 член больше чем запрашиваеш.
2.При повторных запусках выскакивают одни и те же числа (ваще неисправилось).
Ни чё не понимаю!

Сообщение отредактировано: SergSIS -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Профи
****

Группа: Пользователи
Сообщений: 705
Пол: Мужской

Репутация: -  20  +


Цитата(SergSIS @ 26.05.2006 12:08) *

Рано поблагодарил.
Ваши изменения проблему не устранили:
1.Сейчас выдается на 1 член больше чем запрашиваеш.

Поставь i:=1; в начале программы
Цитата

2.При повторных запусках выскакивают одни и те же числа (ваще неисправилось).
Ни чё не понимаю!

Поставь Randomize; тоже в начале.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.03.2024 19:04
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name