Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 07.05.2015
Сообщений: 4
1

Сделать так, чтобы каждое слово генерировалось по одному разу, но в разброс

11.05.2015, 16:01. Показов 1219. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
дана программа, в которой генерируется рандомное слово при нажатии на кнопку. как сделать так, чтобы каждое слово генерировалось по одному разу, но в разброс?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
procedure TForm6.Button2Click(Sender: TObject);
var h:integer;
begin
h:=0;
if (b='Journey') and (form6.Edit1.text='путешествие') then h:=h+1 else
if (b='Commute') and (form6.Edit1.text='заменять') then h:=h+1;
Form6.Label2.caption:=inttostr(h);
end;
 
 
procedure TForm6.Button1Click(Sender: TObject);
 
begin
a:= random(29+1);
if a=1 then b:='Journey';
if a=2 then b:='Commute';
if a=3 then b:='Peaceful';
if a=4 then b:='Magical';
if a=5 then b:='Trip';
if a=6 then b:='Stopover';
if a=7 then b:='Flea market';
if a=8 then b:='Jovial';
if a=9 then b:='Voyage';
if a=10 then b:='Marvel (at)';
if a=11 then b:='Crowded';
if a=12 then b:='Chairlift';
if a=13 then b:='Cruise';
if a=14 then b:='Marvelous';
if a=15 then b:='Pricey';
if a=16 then b:='Funicular train';
if a=17 then b:='Ride';
if a=18 then b:='Fascinating';
if a=19 then b:='Legendary';
if a=20 then b:='Muddy';
if a=21 then b:='Excursion';
if a=22 then b:='Immense';
if a=23 then b:='Remarkable';
if a=24 then b:='Expedition';
if a=25 then b:='Picturesque';
if a=26 then b:='Protected';
if a=27 then b:='Backpacking';
if a=28 then b:='Vibrant';
if a=29 then b:='Awesome';
label3.Caption:=(b);
end;
begin
randomize;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.05.2015, 16:01
Ответы с готовыми решениями:

Сделать так, чтобы при нажатии на button генерировалось случайное слово на английском
как сделать так, чтобы при нажатии на button генерировалось случайное слово на английском и в edit...

AutoLISP; как сделать так, чтобы функции princ , prin1 и print печатали аргумент ПО ОДНОМУ РАЗУ
Друзья! Работаю в VisualLISP, AutoCAD Неужели ничего умного не придумали на этот счёт? Вывожу...

Пройдите в квадрате от клеточки 1 к клеточке 2 так, чтобы посетить все клеточки по одному разу
Всем привет. Есть такая задача: Пройдите в квадрате от клеточки 1 к клеточке 2 так, чтобы посетить...

Пройдите в квадрате от клеточки 1 к клеточке 2 так, чтобы посетить все клеточки по одному разу
Пожалуйста прокомментируйте что делает каждая строчка этой программы! Пройдите в квадрате от...

4
243 / 193 / 94
Регистрация: 01.05.2015
Сообщений: 732
11.05.2015, 16:27 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
var
  SWords: array of string; // <-- глобальная переменная
 
const
  Words: array[0..28] of string = ('Journey'
  ,'Commute', 'Peaceful', 'Magical'
  ,'Trip', 'Stopover', 'Flea market'
  ,'Jovial', 'Voyage', 'Marvel (at)'
  ,'Crowded', 'Chairlift', 'Cruise'
  ,'Marvelous', 'Pricey', 'Funicular train'
  ,'Ride', 'Fascinating', 'Legendary'
  ,'Muddy', 'Excursion', 'Immense'
  ,'Remarkable', 'Expedition','Picturesque'
  ,'Protected', 'Backpacking', 'Vibrant', 'Awesome');
 
procedure TForm1.Button1Click(Sender: TObject);
var i,n: integer; s: string; f: boolean;
begin
if Length(SWords)=Length(Words) then exit;
Randomize;
repeat
n := random(Length(Words));
s := Words[n];
f := true;
 for i:=0 to High(SWords) do
  if SWOrds[i] = s then f:=false;
until f;
SetLength(SWords, Length(Swords)+1);
SWords[High(SWords)] := s;
 form1.caption := s;
end;
0
3540 / 1020 / 87
Регистрация: 21.04.2013
Сообщений: 7,367
11.05.2015, 16:33 3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Как вариант использовать двумерный массив.

Пример.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Var
  Words: array[1..30,0..1] of string; // 0 - само слово, 1 - выпадало или нет (1 или 0)
 
procedure TForm1.FormCreate(Sender: TObject);
begin
...
// Заполняем массив словами
  Words[1, 0] := 'Journey';
  Words[2, 0] := 'Commute';
...
 
// Всем словам выставляем статус "не выпадали"
for i := 1 to 30 do
  Words[i, 1] := '0';
end;
 
 
procedure TForm6.Button1Click(Sender: TObject);
begin
 
randomize;
 
a:= random(29+1);
 
if Words[a, 1] = '0' then begin
  b := Words[a, 0];
  Words[a, 1] := '1';
end
else Button1.Click;
 
end;
Кстати, randomize должен стоять до вызова random().
0
5 / 5 / 3
Регистрация: 10.06.2011
Сообщений: 242
11.05.2015, 17:32 4
Цитата Сообщение от Storm Screamer Посмотреть сообщение
Кстати, randomize должен стоять до вызова random().
И ты считаешь что вариант работы с двухмерным массиивом ему подойдет?
Миниатюры
Сделать так, чтобы каждое слово генерировалось по одному разу, но в разброс  
0
3540 / 1020 / 87
Регистрация: 21.04.2013
Сообщений: 7,367
11.05.2015, 17:41 5
Цитата Сообщение от Maxsis Посмотреть сообщение
И ты считаешь что вариант работы с двухмерным массиивом ему подойдет?
Не знаю, написал тот вариант решения, который первым появился в голове
0
11.05.2015, 17:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.05.2015, 17:41
Помогаю со студенческими работами здесь

Преобразовать строку так, чтобы каждое слово начиналось с заглавной буквы
Дана строка-предложение на русском языке. Преобразовать строку так, чтобы каждое слово начиналось с...

Преобразовать строку так, чтобы каждое слово начиналось с заглавной буквы
Есть два TextBox и понажатию button, надо что бы во второй строки слова начинались с заглавной буквы

Преобразовать строку так, чтобы каждое слово начиналось с заглавной буквы
Дана строка- предложение из символов латинского алфавита. Преобразовать строку так чтобы каждое...

Преобразовать каждое слово так, чтобы оно заканчивалось заглавной буквой
Дана строка слов, разделенных произвольным количеством пробелов, после последнего слова точка....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru