Delphi для начинающих )))
- Recorder=)
- Профессионал
- Сообщения: 2381
- Зарегистрирован: 22 сен 2004, 20:54
- Откуда: 92925
- Контактная информация:
Все знают что в консольных приложениях в делфи на русском писать нельзя...
но тут янаткунулся вот на што...
function Rus(mes: String): String;
var i: Integer;
begin
for i:=1 to Length(mes) do
case mes of
'А'..'п': mes:=Chr(Ord(mes)-64);
'р'..'я': mes:=Chr(Ord(mes)-16);
end;
Result:=mes;
end;
в результате
потом можно writeln(rus('клёвая функция'))
вот...
а теперь вопрос...
никак не могу понять просчто в этой функции написано...кто нить знает???
но тут янаткунулся вот на што...
function Rus(mes: String): String;
var i: Integer;
begin
for i:=1 to Length(mes) do
case mes of
'А'..'п': mes:=Chr(Ord(mes)-64);
'р'..'я': mes:=Chr(Ord(mes)-16);
end;
Result:=mes;
end;
в результате
потом можно writeln(rus('клёвая функция'))
вот...
а теперь вопрос...
никак не могу понять просчто в этой функции написано...кто нить знает???

- Siquell
- Мастер
- Сообщения: 1634
- Зарегистрирован: 17 окт 2004, 11:27
- Откуда: Селятино
- Контактная информация:
Recorder=) писал(а): function Rus(mes: String): String;
var i: Integer;
begin
for i:=1 to Length(mes) do
case mes of
'А'..'п': mes:=Chr(Ord(mes)-64);
'р'..'я': mes:=Chr(Ord(mes)-16);
end;
Result:=mes;
end;
карочь у тя есть строка... функция делает вот что:
берет каждую букву.. и по ascii таблице отнимает от её номера 64 если это в пределах от 'А'..'п' и отнимает 16 если 'р'..'я'... после этого каждую новую цифру аский таблици вновь заменяет на символ!
В результате получается массив из букв равный Result;
Вроде всё...
- Recorder=)
- Профессионал
- Сообщения: 2381
- Зарегистрирован: 22 сен 2004, 20:54
- Откуда: 92925
- Контактная информация:
- Siquell
- Мастер
- Сообщения: 1634
- Зарегистрирован: 17 окт 2004, 11:27
- Откуда: Селятино
- Контактная информация:
- Recorder=)
- Профессионал
- Сообщения: 2381
- Зарегистрирован: 22 сен 2004, 20:54
- Откуда: 92925
- Контактная информация:
- Siquell
- Мастер
- Сообщения: 1634
- Зарегистрирован: 17 окт 2004, 11:27
- Откуда: Селятино
- Контактная информация:
- Recorder=)
- Профессионал
- Сообщения: 2381
- Зарегистрирован: 22 сен 2004, 20:54
- Откуда: 92925
- Контактная информация:
Siquell писал(а):ну найди таблицу да глянь.. и почему.. это в зависимости от того что введешь!Recorder=) писал(а):када объясняли, яникак не мог понять зачем они нужны...
вот оказываеца пригодились....
а тада аски так устроена, что еси отнять 64 то получица нормальная буква чтоли?
я понял 64 или 16....

- Siquell
- Мастер
- Сообщения: 1634
- Зарегистрирован: 17 окт 2004, 11:27
- Откуда: Селятино
- Контактная информация:
- Recorder=)
- Профессионал
- Сообщения: 2381
- Зарегистрирован: 22 сен 2004, 20:54
- Откуда: 92925
- Контактная информация:
-
- Ветеран
- Сообщения: 2774
- Зарегистрирован: 18 сен 2004, 13:23
- Откуда: Россия
- Контактная информация:
Или прога-транслит. Из прописных в строчные. Там (кажется) как раз интревал 64 символа.
Или простенький шифратор - на выходе result выглядит белибердой, а обратная прога в нормальную фразу перегоняет.
Или из кодировки в кодировку (DOS-Koi8)
Если честно - лень таблицу искать, сравнивать. А вобще-то интересно стало.
Или простенький шифратор - на выходе result выглядит белибердой, а обратная прога в нормальную фразу перегоняет.
Или из кодировки в кодировку (DOS-Koi8)
Если честно - лень таблицу искать, сравнивать. А вобще-то интересно стало.
- Siquell
- Мастер
- Сообщения: 1634
- Зарегистрирован: 17 окт 2004, 11:27
- Откуда: Селятино
- Контактная информация:
вот один раз я так попался на этих кодировках.. у мя там задание какое то было.. уже не помню... с русским алфавитом.. и там вот косяки всё время всплывали.. скока я не пытался.. так и не вышло перешифровать.. столько в инете искал.. там есть исходники.. а не катит ))Игорь писал(а):Или из кодировки в кодировку (DOS-Koi8)
Если честно - лень таблицу искать, сравнивать. А вобще-то интересно стало.
- Recorder=)
- Профессионал
- Сообщения: 2381
- Зарегистрирован: 22 сен 2004, 20:54
- Откуда: 92925
- Контактная информация:
я замучался...
тема такая...
Сгенерировать массив А размером 10х10 из случайных дробных чисел в диапозоне от 0 до 9. Определить и вывести на экран массив В размером 10х10 равным А, но чтобывсе элементы главной диагонали, являлись произведением по соответствующим столбцам.(т.е.
а(1,1)=a(1,2)*a(1,3)*a(1,n) n от 0 до 9)
массив А я создал, числами заполнил, массив В создал, вроде как переназначил элементы.
два цикла для В, один для вывода на экран, другой для переназначения. эт штоб не запутаца.не смейтесь)))
так вот в результатом является вывод на экран массива А и элементов главной диагонали массива В, только вот они какие-то очень большие получаются...
кому не лень, проверьте, мож ошибки какие???
program lab3_1;
{$APPTYPE CONSOLE}
uses
SysUtils;
type MArray = array[0..9, 0..9] of real;
var a:MArray;
b:MArray;
i,g:integer;
k:real;
begin
{ TODO -oUser -cConsole Main : Insert code here }
writeln('massiv A');
for i:= 0 to 9 do
begin
for g:=0 to 9 do
begin
a[i,g]:=random(900)/100;
write (a[i,g]:3:2);
write(' ')
end;
writeln;
end;
b:=a;
writeln('massiv b');
k:=1;
for i:=0 to 9 do
begin
for g:=0 to 9 do
begin
if i<>g then begin
k:=b[i,g]*k; end;
end;
b[i,i]:=k;
end;
for i:= 0 to 9 do
begin
write (b[i,i]:3:2);
write(' ') ;
writeln;
end;
readln;
end.
тема такая...
Сгенерировать массив А размером 10х10 из случайных дробных чисел в диапозоне от 0 до 9. Определить и вывести на экран массив В размером 10х10 равным А, но чтобывсе элементы главной диагонали, являлись произведением по соответствующим столбцам.(т.е.
а(1,1)=a(1,2)*a(1,3)*a(1,n) n от 0 до 9)
массив А я создал, числами заполнил, массив В создал, вроде как переназначил элементы.
два цикла для В, один для вывода на экран, другой для переназначения. эт штоб не запутаца.не смейтесь)))
так вот в результатом является вывод на экран массива А и элементов главной диагонали массива В, только вот они какие-то очень большие получаются...
кому не лень, проверьте, мож ошибки какие???
program lab3_1;
{$APPTYPE CONSOLE}
uses
SysUtils;
type MArray = array[0..9, 0..9] of real;
var a:MArray;
b:MArray;
i,g:integer;
k:real;
begin
{ TODO -oUser -cConsole Main : Insert code here }
writeln('massiv A');
for i:= 0 to 9 do
begin
for g:=0 to 9 do
begin
a[i,g]:=random(900)/100;
write (a[i,g]:3:2);
write(' ')
end;
writeln;
end;
b:=a;
writeln('massiv b');
k:=1;
for i:=0 to 9 do
begin
for g:=0 to 9 do
begin
if i<>g then begin
k:=b[i,g]*k; end;
end;
b[i,i]:=k;
end;
for i:= 0 to 9 do
begin
write (b[i,i]:3:2);
write(' ') ;
writeln;
end;
readln;
end.

-
- Новичок
- Сообщения: 51
- Зарегистрирован: 30 дек 2004, 16:43
- Siquell
- Мастер
- Сообщения: 1634
- Зарегистрирован: 17 окт 2004, 11:27
- Откуда: Селятино
- Контактная информация:
- Quos
- Эксперт
- Сообщения: 924
- Зарегистрирован: 30 дек 2004, 21:29