Мне нужно создать программу, чтобы
Код: Выделить всё
var s,s2: string;
begin
s:='QwERtY';
s2:='qwerty';
....
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
Код: Выделить всё
var s,s2: string;
begin
s:='QwERtY';
s2:='qwerty';
....
В паскале действительно нет функции обратной UpCase. Если уж нужно сравнивать строки с разным регистром, то UpCase вполне подойдет. Ведь вовсе не обязательно сравнивать строки в нижнем регистре, можно и в верхнем. На крайняк можно и через Ord решить этот вопрос" писал(а):То есть, создать программу, где нет разницы между прописными и заглавными буквами
Код: Выделить всё
unit dstr;
interface
var i: integer;
procedure discase(s,s2: string);
implementation
procedure discase(s,s2: string);
begin
for i:= 1 to length(s) do if s[i]<>s2[i] then begin
s2[i]:=chr(ord(s2[i])-32);
if s[i]<>s2[i] then s2[i]:=chr(ord(s2[i])+64);
end;
end;
end.
Код: Выделить всё
uses dstr,crt;
var
s,s2:string;
i: integer;
begin
clrscr;
readln(s);
readln(s2);
discase(s,s2);
if s=s2 then write('Строки равны.') else write('Строки не равны');
readkey;
end.
Так делать не надо. Всегда используй Case-Sensitive сравнение. Нучуствительность к регистру - дурное наследие ДОС'а.Колядин Максим писал(а):То есть, создать программу, где нет разницы между прописными и заглавными буквами.
Сообщение от Dr_Grizzly
Попробуй LowerCase
Сообщение от
сегда используй Case-Sensitive сравнение
В заголовке два параметра, которые можно менять, но они все равно потеряются, т.к. передаются по значению. Это значит, что при входе в процедуру параметры копируются на стек полностью. Меняя их значения они меняются лишь локально. Надо передавать их по ссылке, тогда они не копируются, на стек попадает лишь указатель на строку по которой код внутри процедуры и меняет значения самих переменных (т.е. уже не копию, а оригинал)" писал(а):procedure discase(s,s2: string);
Код: Выделить всё
procedure discase(s:String; var s2: string);
Код: Выделить всё
function LowCase(s:String):String;