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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2006, 19:37   #1
El_Bint0
 
Регистрация: 10.12.2006
Сообщений: 9
По умолчанию Решение достаточно сложной задачи...

Уважаемые коллеги, решите пожалуйста задачю:
Даны две строки. Строка1 содержит ваше имя, строка2 — фамилию. Вывести все символы, которые содержатся как в строке1, так и в строке2. Подсчитать количество согласных букв в вашем имени и количество согласных — в фамилии. Выяснить, какие символы алфавита не встретились в фамилии и имени не разу.
El_Bint0 вне форума Ответить с цитированием
Старый 14.12.2006, 21:12   #2
AVer
Андрей
Форумчанин
 
Аватар для AVer
 
Регистрация: 21.11.2006
Сообщений: 457
По умолчанию

Слушай, а ты сам пытался над этим думать? Задача достаточно легкая и решается как с помощью множеств, та и с помощью строк (немногим сложнее). А раз ты просто хочешь вот так вот "вывалить" задачу и получить решение сообщай бюджет...
ICQ: 5311314
[SIGPIC][/SIGPIC]
AVer вне форума Ответить с цитированием
Старый 14.12.2006, 21:17   #3
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

Начнем с того, что:
Код:
const
 glasn = ['а','е','ё','и','о','у','ы','э','ю','я'];
var
 Name, Surname: string;
 i,c:byte;
 Buf: set of char;
 alphabet :set of char = ('а','б','в','г','д','е','ё','ж','з','и','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ь','ы','ъ','э','ю','я');
Мне честно лень открывать паскаль и проверять, но должно быть правильно, тем более, если коллеги - разберешься
Код:
for i:=1 to length(Name) do
 for c:=1 to length(Surname) do
  if (Name[i]=Surname[i]) and (not(Name[i] in buf)) then Buf:=Buf+Name[i];
writeln(Buf);
Buf:='';
c:=0;
For i:=1 to Length(Name) do
 if not Name[i] in glasn then inc(c);
writeln(c);
c:=0;
For i:=1 to Length(SurName) do
 if SurName[i] in glasn then inc(c);
writeln(c);
for i:=1 to length(Name) do
 if not Name[i] in buf then Buf:=Buf+Name[i];
for i:=1 to length(SurName) do
 if not SurName[i] in buf then Buf:=Buf+SurName[i];
Buf:=Alphabet-Buf;
Writeln(Buf);
Краткий и неоптимизированный код твоей программы. Тебе прийдется самому его додумывать и тестить, плюс написать процедуру для понижения регистра символов.
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума Ответить с цитированием
Старый 14.12.2006, 21:41   #4
Drop
Пользователь Подтвердите свой е-майл
 
Аватар для Drop
 
Регистрация: 14.12.2006
Сообщений: 29
По умолчанию

Вриант:

Эта процедура вернет символы обеих строк и символы не входящие в них с учетом регистра:

procedure GetSymbols(Str1, Str2: string; Var SymbolsIn: String; Var SymbolsOut:
String);
var
s: string;
i: Word;
a: array [192..255] of boolean;
begin
s:=Str1+Str2;
//-------------------
//без этого куска у меня почему-то не работает
for i:=192 to 255 do
a[i]:=false;
//---------------------
for i:=1 to length(s) do
begin
if not a[ord(s[i])] then
begin
SymbolsIn:=SymbolsIn+s[i];
a[ord(s[i])]:=true;
end;
end;
for i:=192 to 255 do
if not a[i] then
SymbolsOut:=SymbolsOut+chr(i);
end;

Если учет регистра не нужен уменши интервалы до 223 и воспользуйся ф-ией UpCase
какой вопрос, такой ответ..
Drop вне форума Ответить с цитированием
Старый 15.12.2006, 19:05   #5
El_Bint0
 
Регистрация: 10.12.2006
Сообщений: 9
По умолчанию

Aver я только 1 месяц изучаю паскаль и для меня это достаточно сложная программа.SuperVisor и Drop спасибо за помощь!
El_Bint0 вне форума Ответить с цитированием
Старый 11.02.2015, 09:02   #6
zloydocer
Новичок
Джуниор
 
Регистрация: 11.02.2015
Сообщений: 2
По умолчанию

Вриант:

Эта процедура вернет символы обеих строк и символы не входящие в них с учетом регистра:

procedure GetSymbols(Str1, Str2: string; Var SymbolsIn: String; Var SymbolsOut:
String);
var
s: string;
i: Word;
a: array [192..255] of boolean;
begin
s:=Str1+Str2;
//-------------------
//без этого куска у меня почему-то не работает
for i:=192 to 255 do
a[i]:=false;
//---------------------
for i:=1 to length(s) do
begin
if not a[ord(s[i])] then
begin
SymbolsIn:=SymbolsIn+s[i];
a[ord(s[i])]:=true;
end;
end;
for i:=192 to 255 do
if not a[i] then
SymbolsOut:=SymbolsOut+chr(i);
end;

Если учет регистра не нужен уменши интервалы до 223 и воспользуйся ф-ией UpCase
zloydocer вне форума Ответить с цитированием
Старый 11.02.2015, 09:15   #7
WinCoder
Заблокирован
 
Регистрация: 24.11.2014
Сообщений: 721
По умолчанию

zloydocer Интересно, ты на даты вообще смотрел?
WinCoder вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачи на решение Pascal abc Tecka Фриланс 9 18.12.2012 22:20
Решение задачи на c++ JOFRIF Помощь студентам 2 21.04.2008 00:35
Решение задачи на Си kisha Общие вопросы C/C++ 9 19.11.2007 23:31
Решение задачи на Pascal Progs Помощь студентам 2 22.10.2007 13:22
решение задачи TuNeR Microsoft Office Excel 2 15.10.2007 09:31