![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() ![]() |
![]() |
garry_m |
![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 37 Пол: Мужской Репутация: ![]() ![]() ![]() |
Народ! Пожалуйста помогите решить задачу!
Дана непустая последовательность слов, составленных из цифр и латинских букв, разделенных произвольным числом пробелов. Написать процедуру, которая считывает слово из заданной последовательности и определяет, является ли оно синтаксически корретным идентификатором Паскаля. |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
garry_m, выделить из строки очередное слово сможешь? В FAQ-е есть несколько примеров разбиения стронки на слова, в "Задачах" есть прикрепленная тема...
Теперь дальше: что является правильным идентификатором Паскаля? Слово должно начинаться на букву или символ подчеркивания, содержать ТОЛЬКО буквы, символы подчеркивания и цифры, и его длина не может превышать 63 символа (в принципе, может, но 2 идентификатора с одинаковыми 64 символами распознаются системой как одинаковые...) Что именно из этого вызывает затруднения? |
garry_m |
![]()
Сообщение
#3
|
Новичок ![]() Группа: Пользователи Сообщений: 37 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ну я пересмотрел все... Мне не совсем ясно что такое символы подчеркивания. И надо ли мне в этой задаче использовать массив? Тогда для картина хоть как-то прояснится.
Сообщение отредактировано: garry_m - |
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Символы подчеркивания - это "_" (под минусом)...
Для решения этой задачи Нужно в самом крайнем случае 4 переменных типа Integer... И все, никаких массивов... Хотя, ты можешь делать так, как тебе удобно... С массивами тоже можно... |
garry_m |
![]()
Сообщение
#5
|
Новичок ![]() Группа: Пользователи Сообщений: 37 Пол: Мужской Репутация: ![]() ![]() ![]() |
Поставленная задача: Дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 символов; между соседними словами - произвольное число пробелов, за последним словом точка. Напечатать эту же последовательность, удалив из всех слов цифры и символы подчеркивания.
Вот мое решение: uses crt; volvo, посмотри pls, правильно ли я ее решил? А то мне кажется, что опять накосячил... |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
garry_m, программа совершенно не по заданию... При чем тут самое длинное слово?
|
garry_m |
![]()
Сообщение
#7
|
Новичок ![]() Группа: Пользователи Сообщений: 37 Пол: Мужской Репутация: ![]() ![]() ![]() |
До меня доперло!
Сообщение отредактировано: garry_m - |
garry_m |
![]()
Сообщение
#8
|
Новичок ![]() Группа: Пользователи Сообщений: 37 Пол: Мужской Репутация: ![]() ![]() ![]() |
Блин! Я стормозил! Я просто делал по аналогии, а то что требуют в конце - посмотрел не туда...
Сообщение отредактировано: garry_m - |
garry_m |
![]()
Сообщение
#9
|
Новичок ![]() Группа: Пользователи Сообщений: 37 Пол: Мужской Репутация: ![]() ![]() ![]() |
ОК! Значит для этой задачи (из всех слов удалить цифры и символы подчеркивания) начало будет таким...
Код: Код uses crt; var txt:string; mat:array [1..31] of string; isc:string; sch,i,n:integer; begin clrscr; {Naznachenije nachalnih parametrov} for i:=1 to 31 do mat[i]:=''; i:=1;n:=0;mat[31]:='0'; repeat writeln ('Naberite posledovatelnost iz slov,'); writeln('ne previschajuschih 8-m simvolov, i ne bolee 50 slov.'); writeln ('Ili nazhmite Enter dlja vvoda posledovatelnosti po umolchaniju'); writeln ('(Sjesch eche etih mjagkih francuzkih bulok, da vipej chaju.)'); readln(txt); {Proverka na pustotu vvodimogo texta u okonchanije na tochku} if txt='' then txt:='Sjesch eche etih mjagkih francuzkih bulok, da vipej chaju.'; if pos('.',txt)=0 then writeln('Vi zabili postavit tochku.'); until pos('.',txt)<>0; sch:=1; {Udalenije lishnih probelov} repeat if (txt[sch]=' ') and (txt[sch+1]=' ') then begin delete(txt,sch,1);{Udalenije lishnego probela} end else sch:=sch+1; until txt[sch]='.'; sch:=1; {Rasstanovka slov v massiv} repeat {Poisk okonchanija slova} repeat if txt[sch]<>' ' then sch:=sch+1; until (txt[sch]=' ') or (txt[sch]='.'); {Zanesenije najdennogo slova v massiv} mat[i]:=copy(txt,n+1,sch-n-1); i:=i+1;{Nomer slova} n:=sch;{Nachalnoje polozhenije} sch:=sch+1; until (txt[sch]='.') or (i=30); {Vivod posledovatelnosti} writeln('Nabrannaja vami posledovatelnost:'); writeln (txt); {Vivod posledovatelnosti s odinochnimi probelami mezhdu slovami} writeln(''); n:=31; for sch:=2 to i-1 do if length(mat[sch])>10 then isc:=isc+mat[sch]+' '{Iskluchenije slov dlina kotorih bolee 8-mi simvolov} else {Udalenije cifr i simvolov podcherkivanija} * * *** * **** * * * * * * **** *** * **** * * * * * * * *** *** * write('Dlja prodolzhenija nazhmite ENTER...'); readln; end. Как должна выглядеть процедура, которая удаляет цифры и символы подчеркивания? |
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
garry_m, я вот только одного не понял, если ты сразу после ввода строки пройдешь по ней с таким циклом:
i := 1; твое задание не будет считаться выполненным? Что, обязательно все усложнять и разбивать строку на слова? Я вижу, что в задании написано: Цитата Дана последовательность, содержащая от 2 до 30 слов, в каждом из которых от 2 до 10 символов; между соседними словами - произвольное число пробелов, за последним словом точка. Напечатать эту же последовательность, удалив из всех слов цифры и символы подчеркивания. , а ты зачем-то пробелы удаляешь... |
garry_m |
![]()
Сообщение
#11
|
Новичок ![]() Группа: Пользователи Сообщений: 37 Пол: Мужской Репутация: ![]() ![]() ![]() |
А когда я удалю пробелы он ведь мне напечатает эту же последовательность?
|
volvo |
![]()
Сообщение
#12
|
Гость ![]() |
А у тебя в задании где-нибудь сказано, что надо удалять пробелы? Нет... Зачем удаляешь...
А даже если и нужно, это можно сделать в том же цикле, который я тебе написал... Зачем же весь тот код, который ты привел раньше? |
garry_m |
![]()
Сообщение
#13
|
Новичок ![]() Группа: Пользователи Сообщений: 37 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ну раз пробелы не затрагиваем, то задача упрощается...
Код uses crt; var txt:string; mat:array [1..31] of string; isc:string; sch,i,n:integer; begin clrscr; {Naznachenije nachalnih parametrov} for i:=1 to 31 do mat[i]:=''; i:=1;n:=0;mat[31]:='0'; repeat writeln ('Naberite posledovatelnost iz slov,'); writeln('ne previschajuschih 8-m simvolov, i ne bolee 50 slov.'); writeln ('Ili nazhmite Enter dlja vvoda posledovatelnosti po umolchaniju'); writeln ('(Sjesch eche etih mjagkih francuzkih bulok, da vipej chaju.)'); readln(txt); {Proverka na pustotu vvodimogo texta u okonchanije na tochku} if txt='' then txt:='Sjesch eche etih mjagkih francuzkih bulok, da vipej chaju.'; if pos('.',txt)=0 then writeln('Vi zabili postavit tochku.'); until pos('.',txt)<>0; Значит сначала мы вводим текст... так? Сообщение отредактировано: garry_m - |
garry_m |
![]()
Сообщение
#14
|
Новичок ![]() Группа: Пользователи Сообщений: 37 Пол: Мужской Репутация: ![]() ![]() ![]() |
Код корректно написан?
|
volvo |
![]()
Сообщение
#15
|
Гость ![]() |
Корректно? Что ты подразумеваешь под этим словом? Будет ли работать? Возможно. Оптимален ли он? Нет.
|
garry_m |
![]()
Сообщение
#16
|
Новичок ![]() Группа: Пользователи Сообщений: 37 Пол: Мужской Репутация: ![]() ![]() ![]() |
Ну это первая часть программы...
А что должно идти дальше? Код uses crt; var txt:string; mat:array [1..31] of string; isc:string; sch,i,n:integer; begin clrscr; {Naznachenije nachalnih parametrov} for i:=1 to 31 do mat[i]:=''; i:=1;n:=0;mat[31]:='0'; repeat writeln ('Naberite posledovatelnost iz slov,'); writeln('ne previschajuschih 8-m simvolov, i ne bolee 50 slov.'); writeln ('Ili nazhmite Enter dlja vvoda posledovatelnosti po umolchaniju'); writeln ('(Sjesch eche etih mjagkih francuzkih bulok, da vipej chaju.)'); readln(txt); {Proverka na pustotu vvodimogo texta u okonchanije na tochku} if txt='' then txt:='Sjesch eche etih mjagkih francuzkih bulok, da vipej chaju.'; if pos('.',txt)=0 then writeln('Vi zabili postavit tochku.'); until pos('.',txt)<>0; {Udalenije cifr i simvolov podcherkivanija} ??? write('Dlja prodolzhenija nazhmite ENTER...'); readln; end. Или некорретно? Я просто не понимаю. Я же не спец в программировании. Сообщение отредактировано: APAL - |
volvo |
![]()
Сообщение
#17
|
Гость ![]() |
Цитата Я же не спец в программировании. В чтении по-русски тоже? Я же тебе в 10-м посте привел практически готовую программу !!! |
garry_m |
![]()
Сообщение
#18
|
Новичок ![]() Группа: Пользователи Сообщений: 37 Пол: Мужской Репутация: ![]() ![]() ![]() |
volvo, я вставил ту процедуру, которую ты привел в 10-м посте, но похоже я ее не туда вставил. Да и кстати я упростил программу, причем все стало проще во много раз.
Код: uses crt; |
volvo |
![]()
Сообщение
#19
|
Гость ![]() |
А если так:
uses crt; ? |
garry_m |
![]()
Сообщение
#20
|
Новичок ![]() Группа: Пользователи Сообщений: 37 Пол: Мужской Репутация: ![]() ![]() ![]() |
volvo, не знаю даже как тебя благодарить! Пасиб! Все работает!
Сейчас попробую решить самую первую задачу в этом топике! |
![]() ![]() |
![]() |
Текстовая версия | 9.09.2025 7:31 |