IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Задача на строки
сообщение
Сообщение #1


Гость






Помогите пожалуйста решить задачку нам ее на контрольной дали,но ничего не получилось написать...............хотьь я и списала у одногрупника( и не я одна) он сказал вот вы у него списали я вам не засчитаю.....помогите плиз :molitva:
Задача такая:Задана строка,состоящая из слов латинского алфавита,разделенное одним или несколькими пробелами и знаками препинаниями(запетая,двоеточние,тире,точк, и т.д.)
Требуется:
1)выделить слоа из строки и сформулировать массив слов(максимальное количество строк n,а максимальное длина слов m;n=5.m=15).
2)Объединить в новую строку и в ней требуется найти подстроку неповторяющихся символов максимальной длины.
3)Найти набор символов, которые входят в каждые из нечетных слов,но е входят в состав найденый в предыдущем пункте подстроки.

Заранее вам огромное спасибо!!!!!!!!!
Решите пожалуйста очень надо в понедельник сдать ;)
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






Liba
Цитата
ПРАВИЛА РАЗДЕЛА!!!
4. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!


Здесь - последний пост
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Гость






Я уже помоему весь форум прочитала аж глазки болят((((( :p2:
но я не вижу как это решать.........одно дело там написано друге дело это у меня должно быть както в программе sad.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Ну и для кого делается ФАК? По ссылке лежит функция, которая разбивает строку на слова и заносит слова в массив. Что же, теперь для каждого задания переписывать эту функцию заново?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






Не учто вся функция решает всю программу????
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






:no: Только первый пункт... Но если не будет первого, не будет и второго...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Я тебя прошу ты же знаешь как писать эту прогу.....
что тебе стоит скопировать эту функцию и дописать оставшиеся 2 пункта........я знаю они маленткие.....но как делать не знаю.......
темболее мне не разобраться с этим.....а если т мне расскажешь как попроще это делать я вообще буду на седьмом небе.. :p2: :flowers:
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Цитата
2)Объединить в новую строку и в ней требуется найти подстроку неповторяющихся символов максимальной длины.

то есть записать все слова слитно, без пробелов ?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






знаешь он нам этого не сказал...я переписала дословно условие и даже представить не могу как надо(((((
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Гость






Спасибочки!!!!!!!!!! :flowers:
Но все равно исправь чтобы было для всего.....))))
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Гость






А еще не мог бы ты условно поставить где 1,где 2,где 3.... :p2:
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Гость






Liba
Там же стоит - Part 1, Part 2, Part 3 ... rolleyes.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Гость






ААА я просто не заметила!!!!!!!!!!огромное тебе спасибо!!!!!!!!!!!!ты просто бог :molitva: :rose:
А у тебя есть ICQ???
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Гость






Liba
Зарегистрируйся на форуме, и получишь доступ к моему профилю... Там есть номер.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Гость






Ок...псибки
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Женский

Репутация: -  0  +


Скажи пожалуйста как избавится здесь от ошибки про которую я тебе говорила???
Я через делфи запускаю... :p2:
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.

Никаких ошибок...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Новичок
*

Группа: Пользователи
Сообщений: 17
Пол: Женский

Репутация: -  0  +


теперь нету спасибо)))) :flowers:
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 11.01.2025 21:55
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name