Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2009, 14:09   #1
SArtem
 
Регистрация: 06.05.2009
Сообщений: 4
По умолчанию Помогите, пожалуйста, написать программу в Паскаль по теме "Множества"

Ввести числа N1, N2: 0<N1<N2< 200. Организовать ввод чисел в произвольном порядке с проверкой на попадание в диапазон N1…N2 и с запрещением ввода дубликатов. По окончании ввода (ввод нуля) напечатать введенные значения в порядке убывания.

Заранее спасибо!
SArtem вне форума Ответить с цитированием
Старый 06.05.2009, 14:12   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Сам как решать предполагаешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.05.2009, 14:24   #3
SArtem
 
Регистрация: 06.05.2009
Сообщений: 4
По умолчанию

Я что-то эту тему плохо понимаю А понять хочется! Незнаю даже толком с чего начать
Может быть как-то так?
Код:
Program ex;
uses crt;
type
A=set of byte;
var b:array [1..200] of A;
N1, N2:real;
begin
write('vvedite N1');
write('vvedite N2');
...а дальше что сделать не понимаю

Последний раз редактировалось Stilet; 06.05.2009 в 14:33.
SArtem вне форума Ответить с цитированием
Старый 06.05.2009, 14:42   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
begin
 for i:=1 to 200 do begin
  readln(n1,n2);
  if (N1 in [0..200]) and (n1<n2) then Тут чет делаем
 end;
end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.05.2009, 19:57   #5
SArtem
 
Регистрация: 06.05.2009
Сообщений: 4
По умолчанию

А как можно здесь осуществить запрет ввода дубликатов?
SArtem вне форума Ответить с цитированием
Старый 12.05.2009, 14:29   #6
Anatole
Форумчанин
 
Аватар для Anatole
 
Регистрация: 07.04.2009
Сообщений: 245
По умолчанию

Вод дубликатов не запретиш, но если введённые данные хранить во множестве, то повторяющихся не будет.
Stilet ввод данных в Этом случае сделать так:
Код:
Program ex;
var
A=set of byte;
 b: byte;
N1, N2:byte;
begin
write('vvedite N1');
readln(n1);
write('vvedite N2');
readln(n2);
a:=[];
if n2<n1 then begin b := n2; n2 :=n1: n1 := b; end;
Repeat
write('vvedite b   0-for exit');
Readln (b);
if (b>=n1) and (b<=n2) then a := a +[b];
until b=0;
Writeln;
for b:= n2 downto n1 do if b in a then write(b:4);
End.
Всякое безобразие должно быть единообразным. Тогда это называется порядком.

Последний раз редактировалось Anatole; 12.05.2009 в 15:29.
Anatole вне форума Ответить с цитированием
Старый 12.05.2009, 14:39   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Вод дубликатов не запретиш
Чего ж нет? Вполне да...:
Код:
var a:array[0..200] of integer;
begin
 for i:=1 to 200 do begin
  readln(n1,n2);
  if (N1 in [0..200]) and (n1<n2) then a[n1]:=n1;
 end;
 for i:=1 to 200 do begin
  if a[i]<>0 then write(a[i]:5);
 end;
end.
т.е. просто пишем в массив значение по его же индексу. Массив можно инициализировать заранее числами отрицательными, ато вдруг пользователь захочет 0 ввести и тогда проверять if a[i]>0
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.05.2009, 15:06   #8
Anatole
Форумчанин
 
Аватар для Anatole
 
Регистрация: 07.04.2009
Сообщений: 245
По умолчанию

Говоря
Цитата:
Вод дубликатов не запретиш
я имел ввиду, что человеку никто не может запретить набрать два одинаковых числа. Другое дело програма. Она может проанализировать введённые значения и не включать во множество введённых значений уже введённое повторное значение. Ведь ввод числа происходит после нажатия Enter, а считывать нажатые клавиши - это не для начинающих
И по условию задачи
Цитата:
о окончании ввода (ввод нуля) напечатать введенные значения в порядке убывания.
Поэтому 0 ввести можно если n1 =0 но это должно прекратить ввод чисел. поэтому ввод по for нужно дополнить проверкой условия окончания ввода.
Всякое безобразие должно быть единообразным. Тогда это называется порядком.

Последний раз редактировалось Anatole; 12.05.2009 в 15:19.
Anatole вне форума Ответить с цитированием
Старый 12.05.2009, 16:01   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Anatole
Логично. Вот пусть автор и займется этим полезным делом )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.05.2009, 15:32   #10
SArtem
 
Регистрация: 06.05.2009
Сообщений: 4
По умолчанию

Stilet и Anatole спасибо огромное Вам за помощь!)
SArtem вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как написать программу "часы" JESSIE1000005 Помощь студентам 3 03.11.2011 14:59
Помогите написать программу по расчёту налога для кур.раб.по теме:"Налоги в модели Неймана" tanushkaroganova Помощь студентам 0 05.05.2009 11:52
запрос (выйти(завершить программу)) "Y";"N". SKS Паскаль, Turbo Pascal, PascalABC.NET 7 15.01.2009 16:32