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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.12.2010, 19:47   #1
Яська
Пользователь
 
Регистрация: 09.01.2009
Сообщений: 50
По умолчанию Delphi задача

На сельской улице в собственных домах живут только Ивановы и Петровы. Они решили переселиться так, чтобы все Ивановы жили в начале улицы, а все Петровы – в конце. Известно N– обще количество домов на улице, а в таблице А [1:N] указаны фамилии жильцов Иванов или Петров. Составить программу, которая определяет число переселений при условии, что каждая семья должна переезжать не более одного раза и в каждом обмене должны участвовать только две семьи.

натолкните на мысль.
так полагаю,что здесь используется комбинаторика.
размещение по (N-все Ивановы) из 5 умножить на размещение по (N- все петровы)???
Яська вне форума Ответить с цитированием
Старый 15.12.2010, 19:53   #2
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию

какая комбинаторика?
Цитата:
пока не встретились!
идем сначала ищем петрова нашли
идем с конца ищем иванова нашли
поменяли
пошли дальше
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Старый 15.12.2010, 20:01   #3
Яська
Пользователь
 
Регистрация: 09.01.2009
Сообщений: 50
По умолчанию

спасибо за идею)


а как реализовать программно "пока не встретились"?

Последний раз редактировалось Яська; 15.12.2010 в 23:23.
Яська вне форума Ответить с цитированием
Старый 15.12.2010, 23:39   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
а как реализовать программно "пока не встретились"?
когда вы будете искать с начала массива Петрова
и с конца массива Иванова - вы будете найденные индексы (номера элементов массива) сохранять в переменные?
пусть iPertov - найденный номер первого Петрова в массиве
и пусть iIvanov - найденный номер первого (от конца массива) Иванова

тогда примерно так:
Код:
iPertov := 0;
iIvanov := n;
 while iPertov<iIvanov do begin
   iPertov := FindPetrov(A, iPertov );
   iIvanov := FindIvanov(A, iIvanov );
   if iPertov<iIvanov then Change(iPertov,iIvanov);
 end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.12.2010, 23:48   #5
Яська
Пользователь
 
Регистрация: 09.01.2009
Сообщений: 50
По умолчанию

Change- зарезервированное слово? или придётся "вручную" менять местами?
Яська вне форума Ответить с цитированием
Старый 16.12.2010, 09:45   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Яська
Change- зарезервированное слово? или придётся "вручную" менять местами?
точно.
то, что я написал - это не программа - это псевдокод...
поэтому любые совпадения с настоящими или выдуманными ключевыми словами - случайны и непреднамерены

впрочем, никто не мешает написать примерно так:
Код:
procedure ChangeArray(var A : TArr, i1, i2 : integer);
var One : string;
begin
  if (i1<i2) and (i1>=1) and (i1<=n) 
         and (i2>=1) and (i2<=n) then begin
     One := A[i1];
     A[i1] := A[i2];
     A[i2] := One
  end;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.12.2010, 11:06   #7
Яська
Пользователь
 
Регистрация: 09.01.2009
Сообщений: 50
По умолчанию

подскажите, пожалуйста,весь код программы...(не могу никак въехать,а курсовую скоро сдавать(

вот всё,что я намудрила.

Код:
procedure TForm1.Button2Click(Sender: TObject);
var i,j , n, k, c, sum:integer;
fam: string;
begin
n:=StrToInt(Edit1.Text);
For i:=1 to n do begin
 if SG1.Cells[1,i]='Петров' then
  begin
  k:=i;;
  For j:=n downto  k do
  if   SG1.Cells[1,i]='Иванов' then
  c:=i;
  end;
While c<k do
 begin
 fam:=SG1.Cells[1,k];
 SG1.Cells[1,k]:= SG1.Cells[1,c];
 SG1.Cells[1,c]:=fam;
 end;

Последний раз редактировалось Stilet; 16.12.2010 в 13:34.
Яська вне форума Ответить с цитированием
Старый 16.12.2010, 20:21   #8
Mad_Cat
Made In USSR!
Старожил
 
Аватар для Mad_Cat
 
Регистрация: 01.09.2010
Сообщений: 3,657
По умолчанию )

Цитата:
подскажите, пожалуйста,весь код программы...
так устроит
Вложения
Тип файла: rar Ивановы_Петровы.rar (4.6 Кб, 13 просмотров)
"...В жизни я встречал друзей и врагов.В жизни много всего перевидал.Солнце тело мое жгло, ветер волосы трепал,но я смысла жизни так и не узнал..."
(c) Юрий Клинских aka "Хой"
Mad_Cat вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на Delphi REztor Помощь студентам 9 30.07.2010 14:29
for (задача на Delphi) drikusik# Помощь студентам 2 06.12.2009 20:51
Задача на Delphi 7 Broadway Помощь студентам 6 04.04.2009 19:40
Задача в Delphi Milashka Помощь студентам 1 28.12.2008 23:22