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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2012, 10:32   #1
Татьяна9871
Новичок
Джуниор
 
Регистрация: 01.02.2012
Сообщений: 3
Лампочка Паскаль. Две задачки на строковый тип данных.

1. Задан текст, содержащий не более 255 символов. Определить, сколько раз в тексте встречаются различные буквы латинского алфавита.

2. Составить программу, зашифровывающую заданный текст с использованием 5 перемешанных алфавитов. В качестве исходных данных заданы: исходный алфавит, m1, m2, m3, m4, m5 - количество букв, на которые сдвигается каждый алфавит относительно исходного.

Заранее спасибо.
Татьяна9871 вне форума Ответить с цитированием
Старый 01.02.2012, 11:02   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
сколько раз в тексте встречаются различные буквы латинского алфавита.
Т.е. не учитывать повторения?
Код:
var s:string; a:array['a'..'Z'] of integer;i,q:byte;
begin
 s:='Hello World';
 for i:=1 to length(s) do inc(a[s[i]]); q:=0;
 for i:=1 to length(s) do if a[s[i]]=1 then inc(q);
 write('Ответ = ',q);readln;
end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.02.2012, 11:16   #3
Татьяна9871
Новичок
Джуниор
 
Регистрация: 01.02.2012
Сообщений: 3
По умолчанию

Спасибо большое за ответ!

В Вашей программе почему-то считает только те буквы, которые в строке единственные.
Например я ввожу строку "a b c d e f gg h lll m n oo p"
выводится 10, хотя всего различных букв - 12.

Т.е выходит, что надо учитывать повторения.

Последний раз редактировалось Stilet; 01.02.2012 в 13:49.
Татьяна9871 вне форума Ответить с цитированием
Старый 01.02.2012, 11:34   #4
ByAlex
Форумчанин
 
Аватар для ByAlex
 
Регистрация: 15.03.2011
Сообщений: 465
По умолчанию

Цитата:
Сообщение от Татьяна9871 Посмотреть сообщение
Спасибо большое за ответ!

В Вашей программе почему-то считает только те буквы, которые в строке единственные.
Например я ввожу строку "a b c d e f gg h lll m n oo p"
выводится 10, хотя всего различных букв - 12.
Вообще то различных букв здесь 13.
Помог - жми на весы!
ByAlex89@mail.ru
ByAlex вне форума Ответить с цитированием
Старый 01.02.2012, 11:39   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Например я ввожу строку "a b c d e f gg h lll m n oo p"
выводится 10, хотя всего различных букв - 12.
ну, вообще-то здесь 13 различных букв

попробуйте такой пример (на основании идеи Stilet
Код:
 
var
  s:string;
  a:array[0..255] of integer;
  i,q:byte;
begin
 s:='a b c d e f gg h lll m n oo p';

 {занулим массив счётчиков}
 for i:=0 to 255 do a[i] := 0;

 {соберём все латинские буквы, находящиеся  в строке в выходное множество}
 for i:=1 to length(s) do
   {если буква латинская, то}
   if s[i] in ['a'..'z','A'..'Z'] then
        {нарастим счётчик этой буквы на единичку}
        inc(a[ord(s[i])]);

 q:=0;
 for i:=0 to 255 do
   if a[i]>0 then inc(q);
 write('Ответ = ',q);
 readln;
end.

а вот так будет выглядеть решение через использование типа "Множество"
Код:
var
  s:string;
  LatBykv : set of char;
  i,q : byte;
  ch : char;
begin
 s:='a b c d e f gg h lll m n oo p';


 LatBykv := []; {сначала нет найденных латинских букв}

 {посчитаем количественный состав латинских букв в строке}
 for i:=1 to length(s) do
   {если буква латинская, то включим её в наше множество}
   if s[i] in ['a'..'z','A'..'Z'] then Include(LatBykv, s[i]);

 {подсчитаем, сколько же букв накопилось в нашем множесте}
 q:=0;
 for ch:=#0 to #255 do
   if ch in LatBykv then inc(q);
 write('Ответ = ',q);
 readln;
end.

Последний раз редактировалось Serge_Bliznykov; 01.02.2012 в 11:44.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 01.02.2012, 11:52   #6
Татьяна9871
Новичок
Джуниор
 
Регистрация: 01.02.2012
Сообщений: 3
По умолчанию

При использовании первой программы выводит 0...
Татьяна9871 вне форума Ответить с цитированием
Старый 01.02.2012, 14:12   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
При использовании первой программы выводит 0...
не потверждаю.
у меня всё работает.

Вы какой компилятор Пакскаля использовали?!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строковый тип данных kuy Паскаль, Turbo Pascal, PascalABC.NET 1 30.10.2011 15:01
Строковый тип данных. (Паскаль) Pavel_4a-4anax Помощь студентам 6 06.04.2011 15:47
Строковый тип данных(Паскаль) Лилля Помощь студентам 4 25.11.2010 21:08
Строковый тип данных Skip72rus Паскаль, Turbo Pascal, PascalABC.NET 0 28.04.2010 12:48