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

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

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

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


Пионер
**

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

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


Помогите пожалуйста написать програмку.
А то шас в голову ничего не лезит.

Дан текст (массив строк) сформировать текст в котором все одинаковые символы стоят рядом.

для одной строки я придумал короткий способ
Код

for i:=2 to l-1 do
     for j:=i+1 to l do
        if s[i-1]=s[j] then
           begin
             tmp:=s[i];
             s[i]:=s[j];
             s[j]:=tmp;
           end;


А для текста только большой тупой вариант в голове крутится.
Его даже писать не хочется.

:p2:

И еще может покритикуете ввод текста
Код

function readtx(var str:tx):byte;
 var i:byte;
     len: word;
     key:char;
 begin
   len:=0;i:=0;

    writeln('Please enter some text');
    writeln(' > pressing Esc will clear line');
    writeln(' > pressing Esc at the begining');
    writeln('   of new line will end the entering.');
    repeat

       i:=i+1;
       readln(str[i]);
      key:=readkey;
   until key=#27;
   readtx:=i;
 end;


--------------------
collect the infotrons and find Exit
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Гость






murphy
"Это" даже не надо было придумывать. То, что ты записал известно под названием сортировки пузырьком. А вот для массива строк могу предложить следующий алгоритм:
1. Описываешь массив из Char, в который поместятся все символы текста
2. Записываешь содержимое всех строк в этот массив и
3. Сортируешь его любым известным способом
4. Выводишь результат сортировки...

Это САМЫЙ простой вариант... :yes:
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Пионер
**

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

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


Цитата
То, что ты записал известно под названием сортировки пузырьком.


почти пузырьком

За алгоритм бальшое спасибо. smile.gif


--------------------
collect the infotrons and find Exit
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Пионер
**

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

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


volvo
Я показал это учителю

Код

  k:=0;
  for i:=1 to n do
   for j:=1 to length(s[i]) do
     begin
       k:=k+1;
       res[k]:=s[i][j];
     end;
     for j:=1 to l do
     for i:=1 to l-1 do
       if res[i]>res[i+1] then
           begin
             tmp:=res[i];
             res[i]:=res[i+1];
             res[i+1]:=tmp;
           end;


   writeln('Длина текста: ', l);
   writeln;
   writeln('Pезультиующий текст:');
   for i:=1 to k do
     write(res[i]);




по вашему алгоритму

так она на меня чуть не накричала angry.gif и сказала что это почти самый сложный способ
Цитата
Это САМЫЙ простой вариант

Хотя я прикинул и думаю что это простой способ. :yes:
Я не пойму что она от меня хочет blink.gif

Помогите пожалуйста :molitva: если я вас не сильно достал :p2: :p2:

З.Ы. По моему денег хочет.


--------------------
collect the infotrons and find Exit
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






murphy
Хочешь еще один алгоритм?

Код

var
 cnt: array[char] of integer;
 s: string;
 i: integer;
 ch: char;
begin
 s := 'sdj;alskjdf;laskjdf;laksjd;lkjf;lsdk;gjlskd;jgskgf';
 for i := 1 to length(s) do
   inc(cnt[s[i]]);
 for ch := #32 to #255 do
   for i := 1 to cnt[ch] do write(ch);
end.

Я думаю, переделать его для массива строк не составит труда :D
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Пионер
**

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

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


volvo
smile.gif
Хороший алгоритм.
Мне понравился.
Я его понял.

У меня вопрос :p2:
можно ли это
Цитата
cnt: array[char] of integer;

заменить
Код
cnt: array[#0..#255] of integer;


Переделать легко :yes:

Спасибо?


--------------------
collect the infotrons and find Exit
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






murphy

Код
var
 cnt: array[char] of integer;
 {Аналогично}
 cnt: array[#0..#255] of integer;

Так что меняй... :yes: А чем Char не нравится?

Сообщение отредактировано: volvo -
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Пионер
**

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

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


volvo


Цитата
А чем Char не нравится?

Нравиться просто хотел убедиться что я все правильно понял :D
Спасибо


--------------------
collect the infotrons and find Exit
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гость






Цитата
Я думаю, переделать его для массива строк не составит труда

А для меня составило :p2:
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Цитата
А для меня составило
Что именно? Добавить еще один внешний цикл?
 К началу страницы 
+ Ответить 

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

 





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