![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
REFER |
![]()
Сообщение
#1
|
Гость ![]() |
Кто-нибудь подскажите что в этой программе значат эти строки
Код for i:=k to length(st3) do if st3[i]=' ' then begin d1:=i; break end; for i:=k downto 1 do if st3[i]=' ' then begin d2:=i; break end; d:=d1-d2; slovo:=copy(st3,d2+1,d) и переменные в них. Программа: Код uses crt; var st1,st2,st3,slovo: string; i,p,k,d1,d2,d: integer; b: char; begin clrscr; write('Vvedite stroku1: ',st1); readln(st1); write('Vvedite stroku2: ',st2); readln(st2); if length(st1)>length(st2) then for i:=1 to length(st1) do begin if st1[i]<>st2[i] then begin b:=st1[i]; p:=2; k:=i; break; end else st3:=st2; end else for i:=1 to length(st2) do if st2[i]<>st1[i] then begin b:=st2[i]; p:=1; k:=i; break; end else st3:=st1; for i:=k to length(st3) do if st3[i]=' ' then begin d1:=i; break end; for i:=k downto 1 do if st3[i]=' ' then begin d2:=i; break end; d:=d1-d2; slovo:=copy(st3,d2+1,d); writeln ('Bukva "',b,'" propushena v stroke "',p,'" v slove " ',slovo,'"'); repeat until readkey=#27; end. Если можете, можно расписать всю программу по шагам (так даже лучше), буду очень признателен!!! Спасибо... |
![]() ![]() |
Digitalator |
![]()
Сообщение
#2
|
Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 247 Пол: Мужской Репутация: ![]() ![]() ![]() |
use f7 / f8
как я понял прога ищет первое расхождение в строках и выводит соотв. символ, для чего находится строка подлиннее (которая считается верной) и смотрятся все символы поочереди, пока не встиречается первое расхождение, для которого запоминаются номер символа, номер короткой строки (первая или вторая) не понятна следуящая строка Код end else st3:=st2; эту операцию можно перед самым началом цикла сверки. вот это Код for i:=k to length(st3) do if st3[i]=' ' then begin d1:=i; break end; for i:=k downto 1 do if st3[i]=' ' then begin d2:=i; break end; d:=d1-d2; slovo:=copy(st3,d2+1,d); судя по всему выделяет слово по известному индексу одной буквы этого слова - а именно находит индексы первого левого и первого правого пробела и вырезает по ним. Алгоритм неэффективный и содержит кучу багов <_< PS: 1. читай правила - весь код в теги! 2. вряд ли кто-то захочет объяснять по шагам столь глючную прогу - ее код можно сократить примерно в три раза. 3. Мой тебе совет - купи хорошую книжку (советы по книгам найдешь на форуме) и изучай програмирование, чтоб не задавть подобных вопросов, и самому писать программы А мой тебе совет, не строй из себя супер кодера... если код можно сократить, сократи его! administrator. Сообщение отредактировано: Oleg_Z - 30.10.2004 6:08 -------------------- |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 16:29 |