Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.01.2013, 20:10
Ivanidius Ivanidius вне форума
Прохожий
 
Регистрация: 14.01.2013
Сообщения: 1
Репутация: 10
Восклицание Последняя буква одного слова совпадает с началом другого. Сортировка

Оч. нужна помощь. Сессия через неделю, а застрял наглухо.

Задача: Дан набор слов, отсортировать так, чтобы конец предыдущего совпадал с началом следующего. тычет меня носом в те строчки, что красным, а я пытаюсь добыть первый и последний символы.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var a,b:array[1..5] of string;
    i,j:integer;
    nach,kon:char;
begin
for i:=1 to 5 do begin
a[i]:=StringGrid1.Cells[i-1,0];
end;
b[1]:=a[1];

for i:=1 to 4 do begin
  for j:=2 to 5 do begin

    nach:=b[i][1];
    kon:=a[j][Length(a[j])];

    if nach=kon then
      begin
        b[i+1]:=a[j];
      end;
  end;
end;

for i:=1 to 5 do begin
StringGrid2.Cells[i-1,0]:=b[i];
end;

end;

end.
Админ: Пользуемся тегами для оформления кода!

Последний раз редактировалось Ivanidius, 14.01.2013 в 22:22.
Ответить с цитированием
  #2  
Старый 15.01.2013, 17:22
caHek-2x caHek-2x вне форума
Прохожий
 
Регистрация: 14.12.2010
Сообщения: 31
Репутация: 11
По умолчанию

как то так тебе надо ?


Код:
procedure TForm4.Button1Click(Sender: TObject);
var
  a, b: array [1 .. 5] of string;
  i, j: integer;
  nach, kon: char;
begin

  StringGrid1.Cells[0, 0] := 'вася';
  StringGrid1.Cells[0, 1] := 'нитро';
  StringGrid1.Cells[0, 2] := 'ясен';
  StringGrid1.Cells[0, 3] := 'опасно';
  StringGrid1.Cells[0, 4] := 'огонь';

  for i := 1 to 5 do
    a[i] := StringGrid1.Cells[0, i - 1];

  b[1] := a[1];
  a[1] := '';

  for i := 1 to 4 do
  begin
    kon := b[i][length(b[i])];
    for j := 1 to 5 do
    begin
      if length(a[j]) > 0 then
      begin
        nach := a[j][1];
        if nach = kon then
        begin
          b[i + 1] := a[j];
          a[j] := '';
          break;
        end;
      end;
    end;
  end;

  for i := 1 to 5 do
    StringGrid1.Cells[1, i - 1] := b[i];

end;

но тебе еще надо учесть что если не найдется слово подходящее для продолжения и тд ...
и еще надо учесть буквы 'А' и 'а' программа воспримет как разные ...
и ты в своем коде перепутал начало с концом ... ты брал nach:=b[i][1]; хотя как я понял в б будет уже готовое идти ... тоесть надо брать последнюю букву. .. и тд ... короче я код накидал смотри .. если че спрашивай ...


а да и ошибку он тебе выдавал на строках
nach:=b[i][1];
kon:=a[j][Length(a[j])];

потому что у тебя походу переменные были пустые ... и получалось a[j][Length(a[j])] если a[j] пустая то выходило a[j][0] ... поэтому и ошибка ..

Последний раз редактировалось caHek-2x, 15.01.2013 в 17:29.
Ответить с цитированием
Этот пользователь сказал Спасибо caHek-2x за это полезное сообщение:
Ivanidius (15.01.2013)
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 18:21.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter