Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Профильтровать нижний регистр букв, Паскаль 
:(
    Опции темы
Krista
Дата 7.3.2006, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 30.1.2006

Репутация: нет
Всего: нет



Программа звучит так: выпишите все английские буквы нижнего регистра, которые не входят в строку, введённую пользователем.

Вот мой вариант решения, где-то ошибка. Пожалуйста, помогите найти!

Код

Uses CRT; 

type 
letters = set of 'A'..'z'; 
var 
text:string; 
stroka:letters; 
i: byte; 
begin 
clrscr; 
stroka:=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 
'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; 
writeln('vvedite predlogenie'); 
readln (text); 
for i:=1 to length(text) do begin 
if not(text[i] in stroka) then 
writeln(text[i]); end; 
readln; 
end.

Модератор: пользуйся кнопкой "код"

Это сообщение отредактировал(а) Fixin - 7.3.2006, 20:33
PM MAIL   Вверх
SoWa
Дата 7.3.2006, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 3
Всего: 74



not убери. Поэтому если он нашел нижний регистр, он его не напишет.


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
Krista
Дата 8.3.2006, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 30.1.2006

Репутация: нет
Всего: нет



знаешь, это не помогло....
PM MAIL   Вверх
SoWa
Дата 8.3.2006, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Харекришна
****


Профиль
Группа: Комодератор
Сообщений: 2422
Регистрация: 18.10.2004

Репутация: 3
Всего: 74



Это почему?


--------------------
Всем добра smile
PM MAIL ICQ   Вверх
Krista
Дата 8.3.2006, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 30.1.2006

Репутация: нет
Всего: нет



ну ты сам посмотри...выводит те буквы, что использованы в строке
PM MAIL   Вверх
Fixin
Дата 8.3.2006, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

Репутация: 5
Всего: 18



Может вместо
Код
letters = set of 'A'..'z';
сделать
Код
letters = set of 'a'..'z';

PM MAIL ICQ   Вверх
Dov
Дата 8.3.2006, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 50
Всего: 88



Цитата(Krista @ 7.3.2006, 18:03 Найти цитируемый пост)
writeln(text[i])

Тебе нужно выводить элементы stroka, а ты выводишь элементы text.
Добавлено @ 22:19
Паскаль не знаю, но что-нибудь такое
Код

for i:='a'  to 'z'  do begin    
if not(i in text) then    
writeln(i); end;

Короче, нужно как-то этот set of сделать из text, ну или что-нибудь похожее.


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
darkart
Дата 9.3.2006, 01:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 9.11.2005

Репутация: 26
Всего: 31



Код

program SetsStr;
var
  ch:char;{вспомогательная переменная}
  i:integer;{i - счетчик}
  Symbols:set of char;{множество}
  str:string;{вводимая строка}
begin
  Symbols:=['a'..'z'];{инициализация множества}
  writeln('Please enter a string:');
  readln(str);{чтение строки}
  for i:=1 to length(str) do{для каждого символа}
    Symbols:=Symbols-[str[i]];{вычитаем символ из мн-ва}
  writeln('Result:');  
  for ch:='a' to 'z' do
    if ch in Symbols then writeln(ch);{если символ остался в мн-ве, то печатаем его}
  readln;
end.

PM MAIL WWW ICQ Skype GTalk   Вверх
sergejzr
Дата 9.3.2006, 01:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 11
Всего: 360



Модератор: Название темы должно отражать ее суть!


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Dov
Дата 9.3.2006, 03:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 50
Всего: 88



darkart, всё правильно, но в этом месте
Код
for i:=1 to length(str) do{для каждого символа}    
  Symbols:=Symbols-[str[i]];{вычитаем символ из мн-ва}

я бы сделал так
Код
for i:=1 to length(str) do{для каждого символа}
  if str[i] in Symbols then     
    Symbols:=Symbols-[str[i]];{вычитаем символ из мн-ва}

или это не обязательно, просвети.

Это сообщение отредактировал(а) Dov - 9.3.2006, 04:11


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
darkart
Дата 9.3.2006, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 9.11.2005

Репутация: 26
Всего: 31



Цитата(Dov @ 9.3.2006, 03:48 Найти цитируемый пост)

darkart, всё правильно, но в этом месте
Код
for i:=1 to length(str) do{для каждого символа}   
  Symbols:=Symbols-[str[i]];{вычитаем символ из мн-ва}


я бы сделал так
Код
for i:=1 to length(str) do{для каждого символа}
  if str[i] in Symbols then   
    Symbols:=Symbols-[str[i]];{вычитаем символ из мн-ва}


или это не обязательно, просвети.

Dov,
это работает, так что видимо проверка не обязательна (есть яблоко и груша, что будет если из всего этого многообразия убрать банан?)
Или ты про скорость выполнения?


PM MAIL WWW ICQ Skype GTalk   Вверх
Dov
Дата 9.3.2006, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 50
Всего: 88



Цитата(darkart @ 9.3.2006, 12:35 Найти цитируемый пост)
Dov,
это работает, так что видимо проверка не обязательна (есть яблоко и груша, что будет если из всего этого многообразия убрать банан?)

Понял, спасибо. У меня ПАСКАЛЯ нет, поэтому потестировать не могу.

Цитата(darkart @ 9.3.2006, 12:35 Найти цитируемый пост)
Или ты про скорость выполнения?

Нет, darkart, об этом даже не думал. Просто интересно было узнать, что же получится в результате выполнения, к примеру, такой команды (упрощённо) ['a', 'b', 'c'] - ['W'].

Вобще, эти множества - занятная штука, в С/С++ такого нет. Сейчас даже немного почитал про это дело и хочу попробовать нацарапать что-нибудь похожее на твой пример, но немного по другому.



--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
Dov
Дата 9.3.2006, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 50
Всего: 88



Код

program SetsStr;    
var    
  ch     : char;                            {вспомогательная переменная}    
  i      : integer;                         {i - счетчик}    
  Symbols: set of char;                     {множество}    
  str    : string;                          {вводимая строка}    
begin    
  Symbols:= [];                             {пустое множество}    
  writeln('Please enter a string:');    
  readln(str);                              {чтение строки}    
  for i:=1 to length(str) do                {для каждого символа}    
    Include(Symbols, str[i]);               {добавляем символ в мн-во}    
  writeln('Result:');    
  for ch:='a' to 'z' do    
    if not (ch in Symbols) then writeln(ch);{если символ не в мн-ве, то печатаем его}    
  readln;    
end.


По-моему так, жаль проверить не на чем.


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
darkart
Дата 10.3.2006, 07:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 379
Регистрация: 9.11.2005

Репутация: 26
Всего: 31



Цитата(Dov @ 9.3.2006, 23:05 Найти цитируемый пост)
Нет, darkart, об этом даже не думал. Просто интересно было узнать, что же получится в результате выполнения, к примеру, такой команды (упрощённо) ['a', 'b', 'c'] - ['W'].


['a', 'b', 'c'] - ['W'] = ['a','b','c']

Цитата(Dov @ 9.3.2006, 23:36 Найти цитируемый пост)
program SetsStr;   
var   
  ch    : char;                            {вспомогательная переменная}   
  i      : integer;                        {i - счетчик}   
  Symbols: set of char;                    {множество}   
  str    : string;                          {вводимая строка}   
begin   
  Symbols:= [];                            {пустое множество}   
  writeln('Please enter a string:');   
  readln(str);                              {чтение строки}   
  for i:=1 to length(str) do                {для каждого символа}   
    Include(Symbols, str[i]);              {добавляем символ в мн-во}   
  writeln('Result:');   
  for ch:='a' to 'z' do   
    if not (ch in Symbols) then writeln(ch);{если символ не в мн-ве, то печатаем его}   
  readln;   
end.
По-моему так, жаль проверить не на чем.

Проверяй


Присоединённый файл ( Кол-во скачиваний: 1 )
Присоединённый файл  Dov.zip 23,01 Kb
PM MAIL WWW ICQ Skype GTalk   Вверх
Dov
Дата 10.3.2006, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


аСинизатор
***


Профиль
Группа: Завсегдатай
Сообщений: 1721
Регистрация: 10.5.2003
Где: Эрец-Исраэль

Репутация: 50
Всего: 88



Вах, ты смотри, работает. Спасибо, darkart.
Моя первая прога на ПАСКАЛЕ. smile smile


--------------------
Тут вечности запах томительный,
И свежие фрукты дешевые, 
А климат у нас – изумительный, 
И только соседи – #уевые. 
                           Игорь Губерман.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0676 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.