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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.11.2019, 17:33   #1
ProMKQ
Пользователь
 
Регистрация: 10.11.2019
Сообщений: 13
По умолчанию Не могу понять почему програма игнорирует условия

Код:
program project1;
 uses
 SysUtils, Crt;
 var
   st: string;
   i: integer;
begin
  Writeln('Write your expression');
  Readln(st);
 for i:= 1 to length(st) do
  if st[i] = 'б' then st[i]:= 'b' else st[i]:= 'l';
 Writeln(st);
end.
Вот обычная програмка на паскале, которая по задумке должна превращать все "б" в строке на "b", а всё остальное на "l". Почему то в любом случае строка превращаеться в что то типо "lllll" даже если там есть б. Подскажите что не так
ProMKQ вне форума Ответить с цитированием
Старый 13.11.2019, 17:46   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от ProMKQ Посмотреть сообщение
Вот обычная програмка на паскале, которая по задумке должна превращать все "б" в строке на "b", а всё остальное на "l".
во-первых, какой у Вас Паскаль?

во-вторых, на 99.9% проблема в кодировке.
см. например,
Джоэл Спольски. Что нужно знать о Юникод
Обязательный минимум который должен знать каждый разработчик ПО о Юникод и о Таблицах Символов. Joel Spolsky.


в-третьих, запустите у себя такой код:
Код:
program project1;
 uses
 SysUtils, Crt;
 var
   st: string;
   i: integer;
begin
  Writeln('Write your expression');
  Readln(st);
  for i:= 1 to length(st) do WriteLn(st[i],' code =',ord(st[i]))
end.
и расскажите, что получилось на экране.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.11.2019, 17:47   #3
ProMKQ
Пользователь
 
Регистрация: 10.11.2019
Сообщений: 13
По умолчанию

Object pascal
ProMKQ вне форума Ответить с цитированием
Старый 13.11.2019, 17:50   #4
ProMKQ
Пользователь
 
Регистрация: 10.11.2019
Сообщений: 13
По умолчанию

Тогда это просто потеряет смысл. Мне нужен транслитератор как часть программы
ProMKQ вне форума Ответить с цитированием
Старый 13.11.2019, 17:52   #5
ProMKQ
Пользователь
 
Регистрация: 10.11.2019
Сообщений: 13
По умолчанию

В конце строки вышло б, code = 161
ProMKQ вне форума Ответить с цитированием
Старый 13.11.2019, 17:58   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от ProMKQ Посмотреть сообщение
Object pascal
Delphi? Какая версия среды разработки?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.11.2019, 17:58   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от ProMKQ Посмотреть сообщение
Мне нужен транслитератор как часть программы
что такое "транслитератор"?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 13.11.2019, 18:01   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Проблема в том, что вы варнинги не читаете. Вам же на st[i] = 'б' написали: условие всегда ложно, т.к. сравниваются строки разной длины.
p51x вне форума Ответить с цитированием
Старый 13.11.2019, 18:03   #9
ProMKQ
Пользователь
 
Регистрация: 10.11.2019
Сообщений: 13
По умолчанию

Транслитератор это програмка, которая превращает руские буквы на английские. Например если ввести "привет" то транслитератор выведет "privet". Не совсем понимаю, что такое версия среды разработки, могу лишь сказать что работаю я в лазарусе
ProMKQ вне форума Ответить с цитированием
Старый 13.11.2019, 18:04   #10
ProMKQ
Пользователь
 
Регистрация: 10.11.2019
Сообщений: 13
По умолчанию

Почему разные? б это же 1 символ
ProMKQ вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите как задать условия перенесение элементов массива Х в массив Y функцией. Все сделал только это не могу понять. Kogard Помощь студентам 3 01.03.2019 11:39
Не могу понять почему не дорисовывает.. victor5133 Общие вопросы C/C++ 0 24.02.2012 12:55
Не могу понять часть условия задачи stupid_ Помощь студентам 1 01.11.2011 09:23
Не могу понять в почему ошибка Donim Паскаль, Turbo Pascal, PascalABC.NET 5 08.06.2011 23:07
Почему не работает...хм....понять не могу! Артур Иваныч Microsoft Office Excel 9 01.12.2009 17:58