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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.10.2011, 22:49   #1
мурчик
Новичок
Джуниор
 
Регистрация: 25.10.2011
Сообщений: 3
Вопрос Переменной ЕстъТезки присвоить значение true

tур:фамилия=(Бетелин, Войскунский, Коннов,Мальковский, Пильщиков, Школьный);
имя=(Василий, Владимир, Игорь, Михаил, Олег, Юрий);
var MM511:array [фамилия] оf имя;
ЕстьТезкн : bоо1еаn;
Переменной ЕстъТезки присвоить значение true, если в массиве ММ511 есть одинаковые имена, и значение false иначе.
мурчик вне форума Ответить с цитированием
Старый 27.10.2011, 02:45   #2
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Я подумал, что вряд ли кто-то, кроме меня, захочет возиться с такой мурой , и решил, что надо все же написать. Эта задача - классический пример того, как можно хорошую идею довести до полного абсурда и краха. Чтобы решить простейшую задачу, типа этой, приходится извращаться и постоянно следить за границами типов. То, что в обычном диапазоне целых (например) кодится без всякого напряга, тут требует максимальной концентрации внимания и т.д., и т.п. Я согласен, что в результате вероятность отсутствия ошибок повышается, но все же не гарантируется, и это слишком высокая цена за подобную "безопасность". Идея структурного программирования в Pascal все же не реализована на 100%, и это нужно принимать, как есть, а бороться этим - бессмысленно.

Конечно, можно было реализовать этот же код значительно быстрее и проще, использовав два цикла for и, соответственно, два break (либо и без них, но в ущерб эффективности), но это неправильно..

Короче, вот код, и вторично писать что-то подобное в течение как минимум ближайшего года я не намерен )). Да, еще: в виду своей лютой неприязни к латинице, я сделал кагбэ английскую версию , извиняюсь.
Код:
type
  tLastName= (Smith,Johnson,Jeckson);
  tFirstName= (John,Jeck,Mary);

var
  MM511: array[tLastName] of tFirstName;
  ThereAreNamesakes: boolean;
  i,j: tLastName;

begin
  {случайное заполнение массива}
  Randomize;
  for i:= Low(tLastName) to High(tLastName) do
    MM511[i]:= tFirstName(Random(Ord(High(tFirstName))+1));
  {вывод}
  for i:= Low(tLastName) to High(tLastName) do writeln(MM511[i],' ',i);
  writeln;

  ThereAreNamesakes:= false;
  i:= Low(tLastName);
  while (i<High(tLastName)) and not ThereAreNamesakes do begin
    j:= i;
    while (j<High(tLastName)) and not ThereAreNamesakes do begin
      ThereAreNamesakes:= MM511[i]=MM511[Succ(j)];
      Inc(j)
    end;
    Inc(i)
  end;
  writeln(ThereAreNamesakes);
  readln
end.
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ак переменной а присвоить значение текста amator_roma Общие вопросы C/C++ 5 14.06.2011 19:33
Можно ли присвоить значение переменной из get_object_vars( ) slips PHP 0 09.03.2011 16:38
Присвоить переменной значение текущей строки sergantikus Microsoft Office Excel 2 11.02.2011 08:46
присвоить значение формы переменной bicdibus Общие вопросы Delphi 4 19.03.2010 17:22
Как переменной присвоить значение ColCount из StringGrid? ernie C++ Builder 1 15.11.2009 11:34