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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2008, 14:02   #1
stasig
Пользователь
 
Регистрация: 04.11.2008
Сообщений: 31
По умолчанию Помогите с задачей.(ПAскаль).

Дан массив строк. Определите строку, содержащую наибольшее количество разных букв.
stasig вне форума Ответить с цитированием
Старый 04.11.2008, 15:16   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Задача для новичка не самая простая, поэтому объясняю.
Поскольку в строке могуть быть не только буквы, создадим константу-множество все букв латинского и русского алфавитов. В русском алфавите символы строчных букв идут не по порядку, поэтому разрыв между п и р.
Далее создаем массив строк из произвольных символов, сколько не лень.
Потом в цикле просматриваем каждую строку. Если буква и еще не встречалась, считаем. В каком больше букв, то и надо.
Если разберешся в этой задаче, то похожие сам будешь решать.
Код:
uses crt;
const mn=['A'..'Z','a'..'z','А'..'Я','а'..'п','р'..'ё'];//множество букв
var s:array[1..20]of string;  //массив строк
    n,i,j,max,imax,k:integer;
    m:set of char; /множество для проверки одинаковых букв
begin
clrscr;
write('Количество строк=');
readln(n);
for i:=1 to n do
   begin
     write('str ',i,' :');
     readln(s[i]);
   end;
writeln;
max:=0;imax:=1;//начальные значения 
for i:=1 to n do
  begin
    m:=[];  //пустое множество
    k:=0;
    for j:=1 to length(s[i]) do
    if (s[i][j] in mn)and  not (s[i][j] in m) then //если буква и еще ее нет в нашем множестве, то
       begin
         m:=m+[s[i][j]];  //добавляем ее в множество
         k:=k+1;  //считаем
       end;
   if k>max then //если букв больше чем в предыдущих строках
      begin
       max:=k; //то это макс
       imax:=i; //запоминаем номер строки
      end;
  end;
writeln('Наибольшее количество разных букв в строке:');
write(s[imax],'=',max);  //выводим результат
readln
end.
puporev вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с задачей Noxil Паскаль, Turbo Pascal, PascalABC.NET 2 30.10.2008 19:20
Помогите с задачей drossel Общие вопросы C/C++ 9 01.06.2008 21:45
помогите с задачей на с++ JOFRIF Помощь студентам 7 23.04.2008 20:46
Помогите с задачей в С++ vovchara Помощь студентам 2 22.04.2008 22:49
Помогите с задачей Лёха Паскаль, Turbo Pascal, PascalABC.NET 7 08.02.2008 20:08