|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Последняя буква одного слова совпадает с началом другого. Сортировка
Оч. нужна помощь. Сессия через неделю, а застрял наглухо.
Задача: Дан набор слов, отсортировать так, чтобы конец предыдущего совпадал с началом следующего. тычет меня носом в те строчки, что красным, а я пытаюсь добыть первый и последний символы. Код:
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
|
|||
|
|||
как то так тебе надо ?
Код:
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)
|