Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.02.2011, 16:56   #1
gazik7362
Новичок
Джуниор
 
Регистрация: 07.02.2011
Сообщений: 2
По умолчанию String,Строковые данные

Помогите решить задачу!
Нужно найти букву,которая определяет часто встречается в заданном тексте!
gazik7362 вне форума Ответить с цитированием
Старый 07.02.2011, 17:23   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Хм... Легко
Код:
var c:array['A'..'z'] of integer;i:integer;s:string;m,cc:char;
begin
s:='hello world';
for i:=1 to length(s) do inc(c[s[i]]);
m:='A';
for cc:='A' to 'z'  do if c[m]<c[cc] then m:=cc;
write(m);readln;
end.
А теперь выведи на єкран m, и получишь символ чаще всего встречающийся в тексте
I'm learning to live...

Последний раз редактировалось Stilet; 07.02.2011 в 21:10.
Stilet вне форума Ответить с цитированием
Старый 07.02.2011, 17:54   #3
gazik7362
Новичок
Джуниор
 
Регистрация: 07.02.2011
Сообщений: 2
По умолчанию

Что-то не пашит пишет(Pascal ABC):
Ошибка: ' ' - выход за границы диапазона изменения индекса 'A'..'z'

Насчет вот этой команды inc(c[s[i]]);

Последний раз редактировалось Stilet; 07.02.2011 в 21:08.
gazik7362 вне форума Ответить с цитированием
Старый 07.02.2011, 21:11   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я слегка код поправил, там помарки были, у себя проверил в классическом паскале - работает.
Цитата:
Насчет вот этой команды inc(c[s[i]]);
Ну замени
Код:
 c[s[i]]:=c[s[i]]+1;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.02.2011, 22:16   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Stilet, угу, я не удивлюсь, если следующим вопросом будет - "а почему для русских букв не работает"...

в случае использования однобайтных символов (TurboPascal, Pascal ABC) я бы предложил заменить
массив на
var c:array[0..255] of integer;
ну и соответственно программа:

Код:
  for i:=0 to 255 do c[i]:=0;
  for i:=1 to length(s) do inc(c[ord(s[i])]);
  maxI := 1;
  for i:=0 to 255 do 
    if c[i]>c[maxI] then MaxI := i;

  if c[MaxI] = 0 then Writeln('Ваще ни одного символа в строке не найдено!')
  else WriteLn('Символ с кодом ',MaxI, ' = ', chr(MaxI), 
            ' встретился ',c[MaixI],' раз.');
  readln;
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
строковые данные на си Saferon Помощь студентам 2 17.01.2011 11:33
паскаль. строковые данные Narim Помощь студентам 1 14.11.2010 17:21
Строковые данные и текстовые файлы Solnyshek Паскаль, Turbo Pascal, PascalABC.NET 0 24.04.2010 12:11
Си Строковые данные dampirik Помощь студентам 22 12.07.2009 15:46
считать данные из переменной типа String 1o1man Помощь студентам 13 17.04.2009 22:34