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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 04.10.2013, 23:39   #1
novicepro
Пользователь
 
Регистрация: 01.05.2011
Сообщений: 38
По умолчанию Перемешивание алфавита

Доброго времени суток! заранее извиняюсь, возможно данный вопрос ранее уже был. как перемешать одномерный массив чисел понятно, но у меня такой: как перемешать массив, заполненный английским алфавитом?
novicepro вне форума
Старый 04.10.2013, 23:42   #2
novicepro
Пользователь
 
Регистрация: 01.05.2011
Сообщений: 38
По умолчанию

или русским алфавитом
novicepro вне форума
Старый 05.10.2013, 00:02   #3
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Любой символ имеет свой числовой код, а следовательно для задачи перемешивания ничем не отличается от числа.
northener вне форума
Старый 05.10.2013, 00:03   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

А что Вас смущает, как числа перемешиваете, так и буквы перемешайте.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме
Старый 05.10.2013, 00:05   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

так же как и массив чисел. От того что массив не числовой а буквенный, не меняется тот факт, что позиции элементов массивов все так же числа.

А шуфель будет как-то так:
Код:
var
  mass:array['a'..'z'] of char;
  i,j,n,k:Integer;

procedure Swap(a,b:Char);
var
 c:char;
begin
 c:=a;
 b:=a;
 a:=c;
end;

begin
  n:=Length(mass); //Узнаем длинну массива
  for k:=1 to n do //Цикл по всем элементам. К.О. здесь
  begin
  Randomize;
  i:=RandomRange(1,n); //Выбираем случайный элемент А
  repeat
    Randomize;
    j:=RandomRange(1,n); //Выбираем случайный элемент Б
  until (j <> i);  //Проверяем, что эл. Б != эл. А
  Swap(mass[i],mass[j]);  //Меняем А и Б местами. 
  end;
end;
Человек_Борща вне форума
Старый 05.10.2013, 15:51   #6
novicepro
Пользователь
 
Регистрация: 01.05.2011
Сообщений: 38
По умолчанию

меня смущает тот факт, что делфи выдает ошибку о несовпадении типов char и integer при попытке поменять местами элементы массива.
не зависимо от того, использую ли процедуры или нет.
Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Код:
  Swap(mass[i],mass[j]);  //Меняем А и Б местами.
[Error] Unit1.pas(79): Incompatible types: 'Char' and 'Integer'
novicepro вне форума
Старый 05.10.2013, 16:14   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
var
  mass:array of char;
  i,j:Integer;
  c:char;
...
  SetLength(mass,Ord('z')-Ord('a')+1);
  for i:=0 to High(mass) do mass[i]:=Chr(Ord('a')+i);
  Randomize;
  for i:=0 to High(mass) do begin
    repeat
      j:=Random(High(mass)+1);
    until (j <> i);
    c:=mass[i];
    mass[i]:=mass[j];
    mass[j]:=c;
  end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума
Старый 05.10.2013, 18:06   #8
novicepro
Пользователь
 
Регистрация: 01.05.2011
Сообщений: 38
По умолчанию

Спасибо огромное! заработало
novicepro вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определите сколько слов заданного текста составлено из букв русского алфавита, а сколько из букв латинского алфавита. Слова, в кот potemos Паскаль, Turbo Pascal, PascalABC.NET 2 18.04.2012 13:14
Случайное перемешивание Opex911 Помощь студентам 21 26.09.2011 01:15
Перемешивание массива revaldo666 Общие вопросы C/C++ 6 19.01.2011 15:04
Перемешивание строк gamer123 Общие вопросы Delphi 17 25.08.2010 20:10
Перемешивание строк Черничный БД в Delphi 3 15.07.2008 14:11