Задача на строки |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
Задача на строки |
Liba |
Сообщение
#1
|
Гость |
Помогите пожалуйста решить задачку нам ее на контрольной дали,но ничего не получилось написать...............хотьь я и списала у одногрупника( и не я одна) он сказал вот вы у него списали я вам не засчитаю.....помогите плиз :molitva:
Задача такая:Задана строка,состоящая из слов латинского алфавита,разделенное одним или несколькими пробелами и знаками препинаниями(запетая,двоеточние,тире,точк, и т.д.) Требуется: 1)выделить слоа из строки и сформулировать массив слов(максимальное количество строк n,а максимальное длина слов m;n=5.m=15). 2)Объединить в новую строку и в ней требуется найти подстроку неповторяющихся символов максимальной длины. 3)Найти набор символов, которые входят в каждые из нечетных слов,но е входят в состав найденый в предыдущем пункте подстроки. Заранее вам огромное спасибо!!!!!!!!! Решите пожалуйста очень надо в понедельник сдать ;) |
volvo |
Сообщение
#2
|
Гость |
Liba
Цитата ПРАВИЛА РАЗДЕЛА!!! 4. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! Здесь - последний пост |
Liba |
Сообщение
#3
|
Гость |
Я уже помоему весь форум прочитала аж глазки болят((((( :p2:
но я не вижу как это решать.........одно дело там написано друге дело это у меня должно быть както в программе |
volvo |
Сообщение
#4
|
Гость |
Ну и для кого делается ФАК? По ссылке лежит функция, которая разбивает строку на слова и заносит слова в массив. Что же, теперь для каждого задания переписывать эту функцию заново?
|
Liba |
Сообщение
#5
|
Гость |
Не учто вся функция решает всю программу????
|
volvo |
Сообщение
#6
|
Гость |
:no: Только первый пункт... Но если не будет первого, не будет и второго...
|
Liba |
Сообщение
#7
|
Гость |
Я тебя прошу ты же знаешь как писать эту прогу.....
что тебе стоит скопировать эту функцию и дописать оставшиеся 2 пункта........я знаю они маленткие.....но как делать не знаю....... темболее мне не разобраться с этим.....а если т мне расскажешь как попроще это делать я вообще буду на седьмом небе.. :p2: :flowers: |
volvo |
Сообщение
#8
|
Гость |
Цитата 2)Объединить в новую строку и в ней требуется найти подстроку неповторяющихся символов максимальной длины. то есть записать все слова слитно, без пробелов ? |
Liba |
Сообщение
#9
|
Гость |
знаешь он нам этого не сказал...я переписала дословно условие и даже представить не могу как надо(((((
|
volvo |
Сообщение
#10
|
Гость |
Liba
Сама просила... (одно замечание - эта программа работает только со строчными буквами. Если нужна работа и с заглавными - говори, я исправлю) Код Type TWords = Array[1 .. 5] Of String[15]; Function GetWords(s: String; Var mas: TWords): Byte; Var i, j, p: Byte; Const Other = [',', '.', '-', ':', ';']; Begin For i := 1 To Length(s) Do If s[i] In Other Then s[i] := ' '; Repeat p := Pos(' ', s); If p > 0 Then Delete(s, p, 1) Until p = 0; If s[1] = ' ' Then Delete(s, 1, 1); If s[Length(s)] = ' ' Then Delete(s, Length(s), 1); i := 0; Repeat p := Pos(' ', s); Inc(i); If p > 0 Then Begin mas[i] := Copy(s, 1, Pred(p)); Delete(s, 1, p) End Else mas[i] := s Until p = 0; GetWords := i End; Const s: String = 'this is just a test'; Var s2: String; i, Count: Byte; arr: TWords; Var Ch: Char; InWord, InAll, Exists: Set Of Char; j, start, cnt, max_cnt: Byte; Begin { Part 1 } Count := GetWords(s, arr); { Part 2 } s2 := ''; For i := 1 to Count Do s2 := s2 + arr[i]; max_cnt := 0; For i := 1 To Length(s2) - 1 Do Begin Exists := []; j := i; cnt := 0; While (j <= Length(s2)) and (not (s2[j] In Exists)) Do Begin Exists := Exists + [s2[j]]; Inc(j); Inc(cnt) End; If max_cnt < cnt Then Begin max_cnt := cnt; start := i; End; End; { Part 3 } Exists := []; For i := 0 to Pred(max_cnt) Do Exists := Exists + [s2[start + i]]; {**** Добавлено для работы с заглавными буквами *****} InAll := ['a' .. 'z', 'A' .. 'Z']; i := 1; While i <= Count Do Begin InWord := []; For j := 1 To Length(arr[i]) Do InWord := InWord + [arr[i][j]]; InAll := InAll * InWord; Inc(i, 2) End; Exists := Exists - InAll; For Ch := 'a' To 'z' Do If Ch In Exists Then Write(Ch, ' '); WriteLn; End. Liba, теперь программа должна работать и с заглавными тоже... Сообщение отредактировано: volvo - |
Liba |
Сообщение
#11
|
Гость |
Спасибочки!!!!!!!!!! :flowers:
Но все равно исправь чтобы было для всего.....)))) |
Liba |
Сообщение
#12
|
Гость |
А еще не мог бы ты условно поставить где 1,где 2,где 3.... :p2:
|
volvo |
Сообщение
#13
|
Гость |
Liba
Там же стоит - Part 1, Part 2, Part 3 ... |
Liba |
Сообщение
#14
|
Гость |
ААА я просто не заметила!!!!!!!!!!огромное тебе спасибо!!!!!!!!!!!!ты просто бог :molitva: :rose:
А у тебя есть ICQ??? |
volvo |
Сообщение
#15
|
Гость |
Liba
Зарегистрируйся на форуме, и получишь доступ к моему профилю... Там есть номер. |
Liba |
Сообщение
#16
|
Гость |
Ок...псибки
|
Liba |
Сообщение
#17
|
Новичок Группа: Пользователи Сообщений: 17 Пол: Женский Репутация: 0 |
Скажи пожалуйста как избавится здесь от ошибки про которую я тебе говорила???
Я через делфи запускаю... :p2: |
volvo |
Сообщение
#18
|
Гость |
Liba
Я только что прогнал программу в Дельфи: Код program Project3; {$APPTYPE CONSOLE} uses SysUtils; Type TWords = Array[1 .. 5] Of String[15]; Function GetWords(s: String; Var mas: TWords): Byte; Var i, j, p: Byte; Const Other = [',', '.', '-', ':', ';']; Begin For i := 1 To Length(s) Do If s[i] In Other Then s[i] := ' '; Repeat p := Pos(' ', s); If p > 0 Then Delete(s, p, 1) Until p = 0; If s[1] = ' ' Then Delete(s, 1, 1); If s[Length(s)] = ' ' Then Delete(s, Length(s), 1); i := 0; Repeat p := Pos(' ', s); Inc(i); If p > 0 Then Begin mas[i] := Copy(s, 1, Pred(p)); Delete(s, 1, p) End Else mas[i] := s Until p = 0; GetWords := i End; Const s: String = 'this is just a test'; Var s2: String; i, Count: Byte; arr: TWords; Var Ch: Char; InWord, InAll, Exists: Set Of Char; j, start, cnt, max_cnt: Byte; { TODO -oUser -cConsole Main : Insert code here } Begin { Part 1 } Count := GetWords(s, arr); { Part 2 } s2 := ''; For i := 1 to Count Do s2 := s2 + arr[i]; max_cnt := 0; For i := 1 To Length(s2) - 1 Do Begin Exists := []; j := i; cnt := 0; While (j <= Length(s2)) and (not (s2[j] In Exists)) Do Begin Exists := Exists + [s2[j]]; Inc(j); Inc(cnt) End; If max_cnt < cnt Then Begin max_cnt := cnt; start := i; End; End; { Part 3 } Exists := []; For i := 0 to Pred(max_cnt) Do Exists := Exists + [s2[start + i]]; InAll := ['a' .. 'z', 'A' .. 'Z']; i := 1; While i <= Count Do Begin InWord := []; For j := 1 To Length(arr[i]) Do InWord := InWord + [arr[i][j]]; InAll := InAll * InWord; Inc(i, 2) End; Exists := Exists - InAll; For Ch := 'a' To 'z' Do If Ch In Exists Then Write(Ch, ' '); WriteLn; Readln end. Никаких ошибок... |
Liba |
Сообщение
#19
|
Новичок Группа: Пользователи Сообщений: 17 Пол: Женский Репутация: 0 |
теперь нету спасибо)))) :flowers:
|
Текстовая версия | 11.01.2025 21:55 |