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


Новичок
*

Группа: Пользователи
Сообщений: 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 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






SergSIS, ну что, тебе тоже скриншот привести? Сколько запрашиваешь - столько и генерируется. А ты не учел, кстати, что если будут 3 единицы, например - то ты получишь на 2 меньше, чем запрашивал. Это ж СЛУЧАЙНЫЕ числа !!! А в множестве одно число хранится в одном экземпляре...

Цитата
При повторных запусках выскакивают одни и те же числа (ваще неисправилось).
Randomize первой строкой программы добавь... (я это и не исправлял, кстати. Help не просто так в Паскале существует)

Цитата
Почему в PascalABC работает, а в Turbo Pascal7.0 нет? Одна под Видос другая под Дос.
Всего-то разницы smile.gif А то, что синтаксис другой - тебе наплевать, правда? А вот TP - НЕТ.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Профи
****

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

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


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

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

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

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

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


Новичок
*

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

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


Извиняюсь, господа модераторы, мозги просто уже горят (время поджимает) вот и леплю ошибки.
Буду пробовать, спасибо за помощь.
А кудаж нам бедным ещё обращатся за помощью, как не на любимый форум?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






помогите сделать пограммы :определить максимальное целое n удовлетворяющее условию 3n2(в кв)-730n<5
#2:сформировать два массива целых чисел определенной длиныюВывести на печать числа,встречающиеся в каждом массиве. ПОМОГИТЕ ПОЖАЛУЙСТА НАДО СРОЧНО!!!!

 ! 
Не надо задавать свои вопросы в чужих темах, тем более в таких древних. Прежде чем создать свою тему, настоятельно рекомендую прочитать правила форума



Сообщение отредактировано: klem4 -
 К началу страницы 
+ Ответить 

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

 





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