IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Как можно улучшить эффективность и качество ПП?
1147
сообщение 29.01.2009 14:15
Сообщение #1


Бывалый
***

Группа: Пользователи
Сообщений: 205
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


Такое задание по курсу технологии программирования:
дан текст программы (Pascal). Программа создает динамический список неповторяющихся целых чисел в диапазоне от -50 до 50, обеспечивает прямой и обратный вывод элементов списка, должна посчитать сумму 1+n, 2+n-1,...i+n-1+1,...n/2+n/2+1
Необходимо улучшить эффективность и качество данной программы, что увеличит скорость ее выполнения, устранит возможные недостатки и возможно улучшит другие характеристики...
Если кто заметит в ней какие-либо недостатки или фрагменты которые можно улучшить (например операцию умножения заменить на смещение и т.д.), огромная просьба пояснить мне в чем заключается улучшение, как его реализовать и какой фрагмент кода можно преобразовать, возможно есть чтото лишнее в коде...

{построение динамического списка }
Program din;
uses crt;
type tpo=^tn; tn=record x:real; p1,p2:tpo; end;
var s,b:tpo; f,k:pointer;
i,n,x,dd:integer; z:real;

begin
clrscr; n:=6; dd:=9;
{создание списка }
new(s); randomize; z:=random(100)-50; s^.x:=z; f:=s; s^.p2:=nil;
for i:=1 to n-1 do begin new(b); z:=random(100)-50; b^.x:=z;
s^.p1:=b; b^.p2:=s; s:=b; end;
s^.p1:=nil; k:=s;

textcolor(13);
Write(' прямой вывод: ');
s:=f; x:=18;
while s<>nil do
begin gotoxy(x,wherey); write(s^.x:1:1); s:=s^.p1; x:=x+dd;
end;
writeln;
x:=20;
for i:=1 to N do begin gotoxy(x,wherey); write('+'); x:=x+dd;
end;
writeln;

Write('обратный ввод: ');
b:=k; x:=18;
while b<>nil do
begin gotoxy(x,wherey); write(b^.x:1:1); b:=b^.p2; x:=x+dd;
end;
x:=wherex;
writeln; textcolor(11);
for i:=1 to x do begin gotoxy(i,wherey); write('_'); end;
writeln;
writeln;
Write(' результат: ');
s:=f; b:=k; x:=18;
while s<>nil do
begin z:=s^.x+ b^.x; gotoxy(x,wherey); write(z:1:1);
s:=s^.p1; b:=b^.p2; x:=x+dd; end;
readkey;
end.
;
end.


Тегами пользоваться не забывай

Сообщение отредактировано: volvo - 29.01.2009 14:35
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
1147
сообщение 1.02.2009 14:00
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 205
Пол: Мужской
Реальное имя: Евгений

Репутация: -  0  +


{$N+}

procedure ReadTSC(Var counter : Comp); far; external;
{$L tsc.obj}

Var a1, a2, a3 : Comp;
begin
ReadTSC(a1);
Writeln('Working : )');
ReadTSC(a2);
Writeln(a1:20:0, ', ', a2:20:0, ', ', (a2-a1):20:0)
end.


получилось следующим образом: процедура, дальше идет текст основной программы. Но программа не запускается.
Как вызвать эту процедуру и где?

Сообщение отредактировано: volvo - 1.02.2009 14:06
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
1147   Как можно улучшить эффективность и качество ПП?   29.01.2009 14:15
volvo   Во-первых, в твоем коде я не увидел проверку на по...   29.01.2009 14:33
1147   Получается что программа содержит эти 2 недочета, ...   29.01.2009 14:48
volvo   Для начале надо создать корректно (а не кое-как) р...   29.01.2009 15:05
1147   Большое спасибо за полезные советы Volvo, с осталь...   29.01.2009 15:10
1147   Если мы список заменим на массив, как это поможет ...   31.01.2009 6:15
volvo   Если мы список заменим на массив - это поможет зна...   31.01.2009 13:29
1147   type подойдет для того чтобы избавиться от gotoxy?...   31.01.2009 13:39
volvo   Смотри внимательно, что изменилось в программе: Pr...   31.01.2009 14:23
1147   :good: Огромное спасибо volvo, этого разумеется хв...   31.01.2009 14:43
1147   Последний вопрос у меня, но не столько по самой пр...   1.02.2009 11:27
volvo   Твоя программа выполняется слишком быстро, чтобы з...   1.02.2009 11:50
1147   {$N+} procedure ReadTSC(Var counter : Comp);...   1.02.2009 14:00
volvo   Нет-нет... У тебя здесь - основная программа. Проц...   1.02.2009 14:09
1147   Получается таким образом {$N+} procedure Read...   1.02.2009 14:46
1147   Так, ну с этим вопросом я разобрался, вот только т...   1.02.2009 16:22
volvo   Значит, что-то сделал не так... У меня ничего не с...   1.02.2009 16:51
1147   а почему значение времени выполнения программы каж...   1.02.2009 17:47
volvo   Потому что такты - вещь 1) очень чувствительная; 2...   1.02.2009 17:55
1147   да, у меня windows. Но тогда получается что в резу...   1.02.2009 17:59
volvo   Делай среднее арифметическое. Способ с GetTime, кс...   1.02.2009 18:13
1147   Еще раз хочу поблагодарить тебя volvo, твоя помощь...   2.02.2009 9:44


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 19.07.2025 3:55
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"