Помощь - Поиск - Пользователи - Календарь
Полная версия: Задача на строки
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
AlonZo
Задача такая: найти наиболее часто встречающуюся букву в конце слов и эти слова вывести на экран.
Не использовать процедуры и функции, буду благодарен за помощь.
мисс_граффити
1. Где у слова начинается конец? Или речь только про последнюю букву?
2. Что пробовал делать, что вызвало затруднения?
AlonZo
1. Речь идет о последней букве в каждом слове.
2. Сам не понял как делать, но мне кое-что написали, но в коде есть проблема:
Код
var
  delimiters : set of char = [' ', ',', '.']; {сдесь пишет мол точку с запятой нужно поставить}
  inputString : string;
  i, inStrLen : integer;
  symbols : array [0..255] of integer;

begin
  write('write text here : ');
  readln(inputString);
  for i:=0 to 255 do symbols[i]:=0;

  i:=2;
  inStrLen := Length(inputString);
  while i <= inStrLen do
  begin
    if inputString[i] in delimiters then
       if not (inputString[i-1] in delimiters) then
          inc(symbols[ORD(inputString[i-1])]);
    inc(i);
  end;

  if not (inputString[inStrLen] in delimiters) then
     inc(symbols[ORD(inputString[inStrLen])]);

  inStrLen := 0;
  for i:=0 to 255 do
    if symbols[inStrLen] < symbols[i] then
       inStrLen := i;

  if inStrLen > 0 then
     writeln('Symbol is "' + CHR(inStrLen) + '"')
  else writeln('Error. Input data invalid.');

  readln;

end.

А в целом код правильный?
Гость
Цитата
{сдесь пишет мол точку с запятой нужно поставить}
Чтоб не писал - поменяй Var на Const ...
AlonZo
Все, спасибо за помощь, теперь все работает.
alter
!help.gif Помогите пожалуйста решить такую задачу:

Из заданного предложения выбрать и вывести на экран только те символы, которые встречаются в нем только один раз( в том порядке, в котором они встречаются в тексте). Вывести на экран исходную символьную строку.

Заранее благодарен!
volvo
Так пойдет?

var
s: string;
were, all: string;
i: integer;

begin
s := 'this is a very simple test...';
were := ''; all := '';

for i := 1 to length(s) do begin
if pos(s[i], were) = 0 then begin
were := were + s[i];
all := all + s[i];
end
else delete(all, pos(s[i], all), 1);
end;

writeln('s = ', s, ' -> ', all);
end.

alter
Цитата(volvo @ 9.11.2007 16:36) *

Так пойдет?

var
s: string;
were, all: string;
i: integer;

begin
s := 'this is a very simple test...';
were := ''; all := '';

for i := 1 to length(s) do begin
if pos(s[i], were) = 0 then begin
were := were + s[i];
all := all + s[i];
end
else delete(all, pos(s[i], all), 1);
end;

writeln('s = ', s, ' -> ', all);
end.



Чтото не работает!
volvo
А я не принимаю ответ "что-то не работает". Потому что могу сказать: "а у меня - работает". Принимается только ОБОСНОВАННАЯ претензия - что ты думаешь, что должно вывестись, и что вывелось (и почему, ты думаешь, это неправильно)...
alter
Цитата(volvo @ 11.11.2007 12:26) *

А я не принимаю ответ "что-то не работает". Потому что могу сказать: "а у меня - работает". Принимается только ОБОСНОВАННАЯ претензия - что ты думаешь, что должно вывестись, и что вывелось (и почему, ты думаешь, это неправильно)...

Подожди пожалуйста! Через 5 минут дам точный ответ!
volvo
Ясно... 32-битные компиляторы по другому со строками работают... Опять сам же и попался на этом blink.gif

Вот так работает под Turbo Pascal:

var
s: string;
were, all: string;
i: integer;

begin
s := 'this is a very simple test...';
were := ''; all := '';

for i := 1 to length(s) do begin
if pos(s[i], were) = 0 then begin
were := were + s[i];
all := all + s[i];
end
else
if pos(s[i], all) > 0 then { <--- Вот это добавь !!! }
delete(all, pos(s[i], all), 1);
end;

writeln('s = ', s, ' -> ', all);
end.

alter
Цитата(volvo @ 11.11.2007 12:33) *

Ясно... 32-битные компиляторы по другому со строками работают... Опять сам же и попался на этом blink.gif

Вот так работает под Turbo Pascal:

var
s: string;
were, all: string;
i: integer;

begin
s := 'this is a very simple test...';
were := ''; all := '';

for i := 1 to length(s) do begin
if pos(s[i], were) = 0 then begin
were := were + s[i];
all := all + s[i];
end
else
if pos(s[i], all) > 0 then { <--- Вот это добавь !!! }
delete(all, pos(s[i], all), 1);
end;

writeln('s = ', s, ' -> ', all);
end.



СПС!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.