Страница 2 из 2
Re: Помогите плиз до понедельника 29 декабря надо написа
Добавлено: 29.12.2009 14:18:36
Astralis
Но все-таки считаю, что проеобразование в юникод является более универсальное решение, нежели разбор выражения по действующему стандарту UTF-8 (до 128 это 1 байт, до 224 это два итд). Если ваша программа опирается лишь на знания, что UTF-8 - это плавающий формат, а UCS-2 - это фиксированный, то программа будет гораздо более универсальной, и будет легче адаптироваться к изменениям формата. Если предварительные и окончательные преобразования не носят критический характер, то лучше именно так и поступать.
Re: Помогите плиз до понедельника 29 декабря надо написа
Добавлено: 29.12.2009 15:59:06
Climber
Putnick писал(а):Возьму на себя смелость утверждать, что, как правило, преподаватель требует решения не "как лучше", а "как положено", т.е. в рамках прочитанных этим преподавателем лекций.
...
В рамках же упомянутых ранее лекций, наш друг rraassttaa, скорее всего, понятия не имеет о TStringList
А я возьму на себя смелость утверждать, что из поста автора непонятно, что именно они проходили и знает ли он что-либо о StringList.
Кстати, вчера показал эту задачку жене, она написала решение на питоне. И использовала для этого структуру, аналогичную StringList и предназначенную в том числе и для таких задач. Тоесть не только в паскале есть аналогичные структуры для решения аналогичных задач. Что дает мне повод надеятся, что преподаватель учит не самым отсталым технологиям.
P. S.
1) В моем решении отсутствует рассмотрение проблемы юникода - если задать строку русскими буквами, то получится ерунда полная (кроме неюникодных версий Delphi).
2) Можно ускорить мой способ, используя кастинг, - тогда вообще не придятся тратить время на преобразование типов. И метод будет работать так же быстро, как и с массивами. Если их и этому учат - тогда ваще супер.
Добавлено спустя 8 минут 18 секунд:Re: Помогите плиз до понедельника 29 декабря надо написатьP. P. S. Кстати, многие преподаватели очень положитльно относятся к тому, что студенты решают задачи способми, которые в курсе лекций отсутствовали.
Re: Помогите плиз до понедельника 29 декабря надо написа
Добавлено: 29.12.2009 20:54:41
Putnick
Уважаемый, Climber.
Позволю себе заметить, что из поста автора даже суть задачи лишь угадывается

.
С тем, что
многие преподаватели очень положитльно относятся к тому, что студенты решают задачи способми, которые в курсе лекций отсутствовали.
, я готов согласиться с условием, однако, что студент способен объяснить свой способ. Хотя всё-таки мне думается, что оригинальные решения лучше приберечь для курсовых и дипломов, а для всяких лабораторок есть учебный план. И если сказано "через for...to...do", то будьте любезны — "через for...to...do", даже если это "через жо...". А уж после этого — хоть 1000 и 1 нестандартный метод.
Впрочем, довольно злословия!
Не могли бы Вы, специально для меня развернуть
2) Можно ускорить мой способ, используя кастинг, - тогда вообще не придятся тратить время на преобразование типов. И метод будет работать так же быстро, как и с массивами.
или посоветовать, что почитать на эту тему. К своему стыду, должен признать что совершенно "не в теме" по данному вопросу (то ли учился "самым отсталым технологиям", то ли ТАК учился (последнее более вероятно

) ).
Заранее благодарен, с уважением, Алексей.
Re: Помогите плиз до понедельника 29 декабря надо написа
Добавлено: 29.12.2009 23:41:09
Climber
Putnick писал(а): я готов согласиться с условием, однако, что студент способен объяснить свой способ.
Как говорится, "проблемы индейцев шерифа не волнуют". Хочет узнать, как работает - пусть спросит, отвечу.
Putnick писал(а):И если сказано "через for...to...do", то будьте любезны — "через for...to...do"
У меня в коде есть "for...to...do", так что не надо грязи
Putnick писал(а):Не могли бы Вы, специально для меня развернуть
2) Можно ускорить мой способ, используя кастинг, - тогда вообще не придятся тратить время на преобразование типов. И метод будет работать так же быстро, как и с массивами.
или посоветовать, что почитать на эту тему.
Ну я, к своему стыду, первые лет 5-6, пока программирование было хобби, тоже не очень упорствовал в изучении. И что такое кастинг тоже узнал совсем недавно. Почитать могу порекомендовать Марко Канту (или Кэнту) - лучшая книга по Delphi. Это независимо ни от чего. Кто его книгу не читал, обязательно найдет что-нибудь интересное.
Конкретно про кастинг. Это явное преобразование типов. Выглядит так:
Этот код как бы говорит: обе переменные - одного размера. Давайте представим, что значение переменной "с" - это как бы целое число. Таким образом, в переменную i будет помещен код буквы Z, т. е. 90.
Правда, есть одно "но": сам я так делать не пробовал. Попробовал только что - получается какая-то ерунда. Интуиция подсказывает, что можно в StringList записать 4 нулевых байта после знака равенства, потом взять эти 4 байта, сделать вид, что это longint, прибавить 1, сделать вид, что это опять string... Но тут сказываются уже пробелы в моих знаниях...
Но мне уже самому интересно стало, сейчас попробую что-нибудь избразить.
Ну и по скорости это конечно будет немного проигрывать решениям с массивами, т. к. при работе со StringList постоянно приходится искать разделитель в строке, который и так всегда на одном и том же месте....
Re: Помогите плиз до понедельника 29 декабря надо написа
Добавлено: 30.12.2009 09:04:25
Putnick
Благодарю, Climber!
Осознал, "будем поискать"

Re: Помогите плиз до понедельника 29 декабря надо написа
Добавлено: 30.12.2009 17:33:12
fwp
А нельзя что либо подобное:
Код: Выделить всё
var
A : array[1..256] of integer;
...
S := Edit1.Text;
for i := 1 to Length(S) do begin
Inc(A[ord(S[i])]); // Считаем число входов
end;
S := '';
for i := 1 to 256 do begin
if (A[i] > 0) then begin
S := S + chr(i) + '-' + IntToStr(A[i]) + ',';
end;
end;
Re: Помогите плиз до понедельника 29 декабря надо написа
Добавлено: 31.12.2009 11:03:19
v-t-l
fwpПоддерживаю. Правда с кириллицей в юникоде не прокатит, но по приведенному условию и не надо:
rraassttaa писал(а):В одном текстовом поле написано:
weter weter ti mogu4
Re: Помогите плиз до понедельника 29 декабря надо написать
Добавлено: 09.01.2010 14:13:59
Nord
помогите разобраться с программой.Нужно вычислить число по формуле "e=1+x+x^2/2!+x^3/3!+....+x^n/n!".
Если брать за X число 1,то прога готова,как сделать факториал разобрался. Но препод попросил сделать для любого X. Проблема,что не могу написать возведение в степень. Подскажите как именно для этой программы. В школе изучал turbo,там со степенями все легко.а как возвести в степень во free не могу понять.
Re: Помогите плиз до понедельника 29 декабря надо написать
Добавлено: 09.01.2010 14:38:15
Padre_Mortius
Абсолютно точно также, как и в TP7.
Re: Помогите плиз до понедельника 29 декабря надо написать
Добавлено: 09.01.2010 15:47:44
Putnick
Уважемый Nord,
Как уже сказал Падре, задача решается также как и в ТП7. Скажу больше, решение очень похоже на вычисление факториала (n!=1*2*3*...*n, a n^m=n*n*n*...*n). Другое дело, что я бы эти два пунктика объединил и вычислял бы факториал и степень параллельно:
Код: Выделить всё
program p5;
var
fact, step:real;
Result, X:real;
MaxN, i:Integer;
begin
fact:=1;
step:=1;
Result:=1;
Write('X=');
ReadLn(X);
Write('Количество членов ряда ');
ReadLn(MaxN);
for i:=1 to MaxN do begin
Fact:=Fact*i;
Step:=Step*X;
Result:=Result+Step/Fact
end;
WriteLn('Result=',Result)
end.
Ну а, вообще, возведение в степень положительного числа (
a) можно делать так
C уважением, Алексей.
Re: Помогите плиз до понедельника 29 декабря надо написать
Добавлено: 09.01.2010 16:59:43
Nord
а что нужно писать в начале программы,чтобы exp работало???
Re: Помогите плиз до понедельника 29 декабря надо написать
Добавлено: 09.01.2010 18:10:51
Padre_Mortius
ничего не нужно.
Re: Помогите плиз до понедельника 29 декабря надо написать
Добавлено: 10.01.2010 07:45:43
Nord
мне почему то пишет "error 26:type mismatch".если строку с Exp заменяю например на обычное сложение,то все работает.
Re: Помогите плиз до понедельника 29 декабря надо написать
Добавлено: 10.01.2010 14:16:32
Padre_Mortius
Понятно. Ваш результат должен быть не целым числом, а вещественным, тогда будет все хорошо