Помогите плиз до понедельника 29 декабря надо написать
Модератор: Модераторы
- Astralis
- новенький
- Сообщения: 45
- Зарегистрирован: 06.06.2007 20:33:05
- Откуда: Tvercity-Annet
- Контактная информация:
Но все-таки считаю, что проеобразование в юникод является более универсальное решение, нежели разбор выражения по действующему стандарту UTF-8 (до 128 это 1 байт, до 224 это два итд). Если ваша программа опирается лишь на знания, что UTF-8 - это плавающий формат, а UCS-2 - это фиксированный, то программа будет гораздо более универсальной, и будет легче адаптироваться к изменениям формата. Если предварительные и окончательные преобразования не носят критический характер, то лучше именно так и поступать.
Putnick писал(а):Возьму на себя смелость утверждать, что, как правило, преподаватель требует решения не "как лучше", а "как положено", т.е. в рамках прочитанных этим преподавателем лекций.
...
В рамках же упомянутых ранее лекций, наш друг rraassttaa, скорее всего, понятия не имеет о TStringList
А я возьму на себя смелость утверждать, что из поста автора непонятно, что именно они проходили и знает ли он что-либо о StringList.
Кстати, вчера показал эту задачку жене, она написала решение на питоне. И использовала для этого структуру, аналогичную StringList и предназначенную в том числе и для таких задач. Тоесть не только в паскале есть аналогичные структуры для решения аналогичных задач. Что дает мне повод надеятся, что преподаватель учит не самым отсталым технологиям.
P. S.
1) В моем решении отсутствует рассмотрение проблемы юникода - если задать строку русскими буквами, то получится ерунда полная (кроме неюникодных версий Delphi).
2) Можно ускорить мой способ, используя кастинг, - тогда вообще не придятся тратить время на преобразование типов. И метод будет работать так же быстро, как и с массивами. Если их и этому учат - тогда ваще супер.
Добавлено спустя 8 минут 18 секунд:
Re: Помогите плиз до понедельника 29 декабря надо написать
P. P. S. Кстати, многие преподаватели очень положитльно относятся к тому, что студенты решают задачи способми, которые в курсе лекций отсутствовали.
Уважаемый, Climber.
Позволю себе заметить, что из поста автора даже суть задачи лишь угадывается
.
С тем, что
Впрочем, довольно злословия!
Не могли бы Вы, специально для меня развернуть
) ).
Заранее благодарен, с уважением, Алексей.
Позволю себе заметить, что из поста автора даже суть задачи лишь угадывается
С тем, что
, я готов согласиться с условием, однако, что студент способен объяснить свой способ. Хотя всё-таки мне думается, что оригинальные решения лучше приберечь для курсовых и дипломов, а для всяких лабораторок есть учебный план. И если сказано "через for...to...do", то будьте любезны — "через for...to...do", даже если это "через жо...". А уж после этого — хоть 1000 и 1 нестандартный метод.многие преподаватели очень положитльно относятся к тому, что студенты решают задачи способми, которые в курсе лекций отсутствовали.
Впрочем, довольно злословия!
Не могли бы Вы, специально для меня развернуть
или посоветовать, что почитать на эту тему. К своему стыду, должен признать что совершенно "не в теме" по данному вопросу (то ли учился "самым отсталым технологиям", то ли ТАК учился (последнее более вероятно2) Можно ускорить мой способ, используя кастинг, - тогда вообще не придятся тратить время на преобразование типов. И метод будет работать так же быстро, как и с массивами.
Заранее благодарен, с уважением, Алексей.
Putnick писал(а): я готов согласиться с условием, однако, что студент способен объяснить свой способ.
Как говорится, "проблемы индейцев шерифа не волнуют". Хочет узнать, как работает - пусть спросит, отвечу.
У меня в коде есть "for...to...do", так что не надо грязиPutnick писал(а):И если сказано "через for...to...do", то будьте любезны — "через for...to...do"
Ну я, к своему стыду, первые лет 5-6, пока программирование было хобби, тоже не очень упорствовал в изучении. И что такое кастинг тоже узнал совсем недавно. Почитать могу порекомендовать Марко Канту (или Кэнту) - лучшая книга по Delphi. Это независимо ни от чего. Кто его книгу не читал, обязательно найдет что-нибудь интересное.Putnick писал(а):Не могли бы Вы, специально для меня развернутьили посоветовать, что почитать на эту тему.2) Можно ускорить мой способ, используя кастинг, - тогда вообще не придятся тратить время на преобразование типов. И метод будет работать так же быстро, как и с массивами.
Конкретно про кастинг. Это явное преобразование типов. Выглядит так:
Код: Выделить всё
var
i: byte;
c: char;
begin
c:='Z';
i:=Byte(c);
Правда, есть одно "но": сам я так делать не пробовал. Попробовал только что - получается какая-то ерунда. Интуиция подсказывает, что можно в StringList записать 4 нулевых байта после знака равенства, потом взять эти 4 байта, сделать вид, что это longint, прибавить 1, сделать вид, что это опять string... Но тут сказываются уже пробелы в моих знаниях...
Но мне уже самому интересно стало, сейчас попробую что-нибудь избразить.
Ну и по скорости это конечно будет немного проигрывать решениям с массивами, т. к. при работе со StringList постоянно приходится искать разделитель в строке, который и так всегда на одном и том же месте....
Последний раз редактировалось Climber 30.12.2009 09:48:21, всего редактировалось 1 раз.
Благодарю, Climber!
Осознал, "будем поискать"
Осознал, "будем поискать"
А нельзя что либо подобное:
Код: Выделить всё
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;
fwp
Поддерживаю. Правда с кириллицей в юникоде не прокатит, но по приведенному условию и не надо:
Поддерживаю. Правда с кириллицей в юникоде не прокатит, но по приведенному условию и не надо:
rraassttaa писал(а):В одном текстовом поле написано:
weter weter ti mogu4
помогите разобраться с программой.Нужно вычислить число по формуле "e=1+x+x^2/2!+x^3/3!+....+x^n/n!".
Если брать за X число 1,то прога готова,как сделать факториал разобрался. Но препод попросил сделать для любого X. Проблема,что не могу написать возведение в степень. Подскажите как именно для этой программы. В школе изучал turbo,там со степенями все легко.а как возвести в степень во free не могу понять.
Если брать за X число 1,то прога готова,как сделать факториал разобрался. Но препод попросил сделать для любого X. Проблема,что не могу написать возведение в степень. Подскажите как именно для этой программы. В школе изучал turbo,там со степенями все легко.а как возвести в степень во free не могу понять.
-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
Абсолютно точно также, как и в TP7.
Уважемый Nord,
Как уже сказал Падре, задача решается также как и в ТП7. Скажу больше, решение очень похоже на вычисление факториала (n!=1*2*3*...*n, a n^m=n*n*n*...*n). Другое дело, что я бы эти два пунктика объединил и вычислял бы факториал и степень параллельно:
Ну а, вообще, возведение в степень положительного числа (a) можно делать так
C уважением, Алексей.
Как уже сказал Падре, задача решается также как и в ТП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) можно делать так
Код: Выделить всё
a_v_stepeni_b:=exp(b*ln(a))C уважением, Алексей.
а что нужно писать в начале программы,чтобы exp работало???
-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
ничего не нужно.
мне почему то пишет "error 26:type mismatch".если строку с Exp заменяю например на обычное сложение,то все работает.
-
Padre_Mortius
- энтузиаст
- Сообщения: 1265
- Зарегистрирован: 29.05.2007 17:38:07
- Откуда: Спб
Понятно. Ваш результат должен быть не целым числом, а вещественным, тогда будет все хорошо
