Страница 2 из 4

Добавлено: 13 ноя 2005, 20:06
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;


в результате
потом можно writeln(rus('клёвая функция'))

вот...


а теперь вопрос...
никак не могу понять просчто в этой функции написано...кто нить знает???

Добавлено: 13 ноя 2005, 21:38
Siquell
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;
Вроде всё...

Добавлено: 13 ноя 2005, 23:57
Recorder=)
эт наверно потомучто я орд и мес не знаю что такое)

Добавлено: 13 ноя 2005, 23:59
Siquell
Recorder=) писал(а):эт наверно потомучто я орд и мес не знаю что такое)
да я вот тоже вспоминал =))

Добавлено: 14 ноя 2005, 00:01
Recorder=)
када объясняли, яникак не мог понять зачем они нужны...

вот оказываеца пригодились....


а тада аски так устроена, что еси отнять 64 то получица нормальная буква чтоли?

Добавлено: 14 ноя 2005, 00:02
Siquell
Recorder=) писал(а):када объясняли, яникак не мог понять зачем они нужны...
вот оказываеца пригодились....
а тада аски так устроена, что еси отнять 64 то получица нормальная буква чтоли?
ну найди таблицу да глянь.. и почему.. это в зависимости от того что введешь!

Добавлено: 14 ноя 2005, 00:04
Recorder=)
Siquell писал(а):
Recorder=) писал(а):када объясняли, яникак не мог понять зачем они нужны...
вот оказываеца пригодились....
а тада аски так устроена, что еси отнять 64 то получица нормальная буква чтоли?
ну найди таблицу да глянь.. и почему.. это в зависимости от того что введешь!

я понял 64 или 16....

Добавлено: 14 ноя 2005, 00:05
Siquell
Recorder=) писал(а):я понял 64 или 16....
не понял твоего вопроса.. или ты это сам себе?

Добавлено: 14 ноя 2005, 00:09
Recorder=)
Siquell писал(а):
Recorder=) писал(а):я понял 64 или 16....
не понял твоего вопроса.. или ты это сам себе?
ясам по себе....


слушай а скольки битную таблицу над брать....32?

или яне так понял?

Добавлено: 14 ноя 2005, 00:44
Игорь
Или прога-транслит. Из прописных в строчные. Там (кажется) как раз интревал 64 символа.

Или простенький шифратор - на выходе result выглядит белибердой, а обратная прога в нормальную фразу перегоняет.

Или из кодировки в кодировку (DOS-Koi8)

Если честно - лень таблицу искать, сравнивать. А вобще-то интересно стало.

Добавлено: 14 ноя 2005, 01:17
Siquell
Игорь писал(а):Или из кодировки в кодировку (DOS-Koi8)
Если честно - лень таблицу искать, сравнивать. А вобще-то интересно стало.
вот один раз я так попался на этих кодировках.. у мя там задание какое то было.. уже не помню... с русским алфавитом.. и там вот косяки всё время всплывали.. скока я не пытался.. так и не вышло перешифровать.. столько в инете искал.. там есть исходники.. а не катит ))

Добавлено: 17 ноя 2005, 01:20
Recorder=)
я замучался...
тема такая...
Сгенерировать массив А размером 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
.

Добавлено: 17 ноя 2005, 10:37
Абориген
совет на будущее: пиши код, чтобы было понятно, где у тебя какие логические блоки (например, циклы с помощью табуляции, да и пустые строчки между блоками операций не помешают).
А то написал все в кучу, даже смотреть не приятно.

Добавлено: 17 ноя 2005, 14:13
Siquell
Recorder=) писал(а):кому не лень, проверьте, мож ошибки какие???
у тя дельфя то есть? вот и тренься.. ))

Добавлено: 17 ноя 2005, 16:43
Quos
Ну представь себе среднее число по главной диагонале...допустим 6.55 и возвели его в 10 степень получаем 145349318,52847813494150390625.

Да нормуль получаеться =)