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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2013, 14:50   #1
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию помогите пожалуйста дописать задачу в Pascal

Сама задача:
Напечатать в алфавитном порядке все маленькие русские буквы, которые входят в даный текст из 200 букв. (препод сказала в задаче мы работаем с символами (char)
я так думаю. этот код просто догадка:
Код:
var 
i:integer;
ch:char
stroka:string;
 type
      ch=('а', 'б', 'в' ) // и так далее до последней буквы алфавита.
begin
Writeln('VVedi elementi ');
Readln(stoka)
For i:=1 to 200 do
If stroka(i) in ch then
writeln(stroka(i))
...
это только догадка. помогите плиз
mishammm вне форума Ответить с цитированием
Старый 17.11.2013, 14:56   #2
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Не забудьте, что в алфавитном порядке. И ошибки нужно исправить.
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 17.11.2013, 15:14   #3
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию

подскажите плиз какие, сейчас попробую методом пузырька еще

Код:
const 
m=200;
var 
   stroka:array[1..m] of char;
k,j,i:integer;
ch:char
type
ch=('а', 'б', 'в' ) // и так далее до последней буквы алфавита.
begin
Writeln('VVedi elementi ');
Readln(stroka[i])
If stroka[i] > = 'a' and stroka[i] <= 'z' then 
write(stroka[i]);
For i:=1 to m-1 do
For j:=1 to m-i do
If stroka[j] > strokap[j+1] then begin
k:=stroka[j];
stroka[j]:=stroka[j+1];
stroka[j+1]:=k;
end;
вот как исправляю. я на правильному пути?

Последний раз редактировалось Stilet; 17.11.2013 в 16:17.
mishammm вне форума Ответить с цитированием
Старый 17.11.2013, 16:11   #4
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
подскажите плиз какие, сейчас попробую методом пузырька еще
Не нужен тут пузырек..
Цитата:
Код:
type
      ch=('а', 'б', 'в' ) // и так далее до последней буквы алфавита.
begin
Writeln('VVedi elementi ');
Readln(stoka)
For i:=1 to 200 do
If stroka(i) in ch then
writeln(stroka(i))
А Вы знаете о существовании справки?
1) Type описывается перед var
2) in используется для множеств..
3) А если длина строки = 1? Вы выйдете за пределы.. А если 250? Тогда Вы не обработаете всю строку..

Цитата:
вот как исправляю. я на правильному пути?
Неа...


Код:
begin
    ReadLn (s);
    for ch := 'a' to 'z' do 
          if (Pos (ch, s) <> 0) or (Pos (UpCase(ch), s) <> 0)  then WriteLn (ch)
end.
Или так :
Код:
for i := 'a' to 'z' do
    for j := 1 to Length(s) do
           if (i = s[i]) or (UpCase (i) = s[i]) then begin
                       WriteLn (i); Break 
           end;
Код:
Или так :
a : array ['A'..'Z'] of Integer;

for i ;= 1 to Length(s) do
      Inc (UpCase(a[i]));

for ch := 'A' to 'Z' do
      if a[ch] > 0 then
            WriteLn (ch)
Не забываем инициализировать..
Poma][a вне форума Ответить с цитированием
Старый 17.11.2013, 18:03   #5
mishammm
Форумчанин
 
Регистрация: 21.09.2013
Сообщений: 232
По умолчанию

вот так вишло:
var
i:integer;
ch:char;
stroka:string;
begin
Writeln('VVedi elementi ');
Readln(stroka);
For ch:= 'a' to 'я' do
If (Pos (ch,stroka) <> 0) or (pos(upcase(ch),stroka) <> 0) then
Writeln(ch);
end.
но в результате иероглифы (
mishammm вне форума Ответить с цитированием
Старый 17.11.2013, 18:21   #6
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Посмотрите результат выполнения. FPC
Как можно видеть, программа пропускает заглавные русские буквы.
стандартный upcase не работает для кириллицы
Вы работаете в Турбо Паскале? "Иероглифы" в нем выводятся.
Изображения
Тип файла: jpg Безымянный.jpg (15.3 Кб, 115 просмотров)

Последний раз редактировалось ZX Spectrum-128; 17.11.2013 в 18:26.
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 17.11.2013, 18:26   #7
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Посмотрите результат выполнения. FPC
Программа НЕ может выводить Л.. что-то странное..
Кстати, уже давно 2.6.2. есть..
Poma][a вне форума Ответить с цитированием
Старый 17.11.2013, 18:29   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
что-то странное..
Ниче странного:
Цитата:
or (pos(upcase(ch),stroka) <> 0)
Это нужно убрать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.11.2013, 18:32   #9
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Ниче странного:
Разговор не про это..
Идет строка "Лучшим доктором ..."
После этого идет 'Л'..
Хотя, оно НЕ МОЖЕТ там быть..


Цитата:
стандартный upcase не работает для кириллицы
Да.. мой косяк..
Poma][a вне форума Ответить с цитированием
Старый 17.11.2013, 18:32   #10
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Кстати, уже давно 2.6.2. есть..
О спасибо. Давно не заглядывал к ним. Сейчас качну. Lazarus тоже меняли? 1.0 у меня
ZX Spectrum-128 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пожалуйста помогите решить задачу на Pascal serafima_92 Помощь студентам 4 24.09.2009 10:13
помогите пожалуйста решить задачу в pascal volia.92 Помощь студентам 1 06.06.2009 05:42
помогите пожалуйста решить задачу на Pascal'e. roller Помощь студентам 8 13.03.2009 10:48
Задача в pascal?! помогите пожалуйста решить задачу. Absent Помощь студентам 6 09.04.2008 23:41