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

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

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

> Помогите исправить программу!, Turbo Pascal 7.0
SergSIS
сообщение 26.05.2006 9:51
Сообщение #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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 26.05.2006 10:31
Сообщение #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
сообщение 26.05.2006 11:08
Сообщение #3


Новичок
*

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

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


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

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


Новичок
*

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

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


Цитата(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 нет? Одна под Видос другая под Дос.
Ни чё не понимаю!?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



- Текстовая версия 20.07.2025 22:09
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"