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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2009, 16:16   #1
Astyr
Новичок
Джуниор
 
Регистрация: 14.02.2009
Сообщений: 1
По умолчанию Задача "Спорт лото: 6 из 49"

Спорт лото: 6 из 49. Составьте программу в которой загадываются иначе говоря создаются 6 разных чисел, значения которых ни как не связаны друг с другом.
Величина лежит в интервале 1 до 49.

Program sport_lato;
var
a,t: integer;
begin
t:=1;
randomize;
repeat
a:=random(49)+1;
writeln('Chislo',t,'=',a);
t:=t+1;
until t=6;
readln;
end.

не получается написать ЦЫКЛ который будет слидить за тем что бы не было одинаковых чисел.
Astyr вне форума Ответить с цитированием
Старый 14.02.2009, 16:50   #2
pomoshnic
Форумчанин
 
Аватар для pomoshnic
 
Регистрация: 16.11.2008
Сообщений: 192
По умолчанию

Код:
Program sport_loto;
var t: byte;
     a:1..49;
     e:set of 1..49;
begin
  t:=1;
  e:=[];
  randomize;
  repeat
    a:=random(48)+1;
    if a in e then else
    begin
      writeln('Chislo ',t,'=',a);
      inc(t);
      e:=e+[a];
    end;
  until t>6;
  readln;
end.
pomoshnic вне форума Ответить с цитированием
Старый 14.02.2009, 17:01   #3
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Странная конструкция:
Цитата:
if a in e then else
Может, if not (a in e) then ?
mihali4 вне форума Ответить с цитированием
Старый 14.02.2009, 20:25   #4
bura
Пользователь
 
Регистрация: 07.01.2009
Сообщений: 15
По умолчанию

Вот так можно попробовать:
Код:
program sportloto;
var
 e: array[1..6] of byte;
 a, t, i: byte;
 f: boolean;
begin
  t:=0;
  randomize;
  writeln('Posledovatelnost chisel: ');
  repeat
    a:=random(49)+1;
    f:=true;
    for i:=1 to t do
     if a=e[i] then
      begin
       f:=false;
       break;
      end;
    if f then
     begin
      inc(t);
      e[t]:=a;
      write(e[t]:3);
     end;
  until t=6;
  writeln;
  readln;
end.
bura вне форума Ответить с цитированием
Старый 14.02.2009, 20:27   #5
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Код:
e:=[];
  randomize;
  repeat
    a:=random(48)+1;
    if not(a in e) then 
    begin
      e:=e+[a]; //или include(e,a);
      writeln('Chislo ',t,'=',a);
    end;
Иначе множество все время пустое и все числа, в том числе и одинаковые будут выводиться.
puporev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Под прикрытием "кризиса" наши доблестные "управители" хотят утопить нас в радиоактивных отходах mihali4 Свободное общение 1 17.01.2009 01:43
если пользователь наберет какой-то другой символ не "y" или "n" и нажмет enter, программа проигнорирует skobets Общие вопросы C/C++ 2 03.06.2008 06:51
Excel файл открывается не "до конца" (странички "не показываются" только серое поле) Dorvir Microsoft Office Excel 2 28.03.2008 10:03
"Транспортная задача", "Поиск решения" Perroman Microsoft Office Excel 3 12.12.2007 17:12
Создаю диаграмму "Bar". Подскажите как убрать растояние между "столбами" MAcK Компоненты Delphi 11 24.10.2007 10:49