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

> Правила раздела!

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

> Почему моя прога виснет?
Skrip
сообщение 16.11.2004 17:24
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 33
Пол: Мужской

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


У меня прога виснет если n> 2500 (примерно), при этом диспетчер задач не говорит, что она повисла. Почему?

Код
type sm_type=array [0..10000] of char;
var sm: sm_type;
st:string;
i,n,is,si: integer;

begin

n:=1;
While n<>0 do begin
  Write('>');
  readln(n);
case n of
0: exit end;

for i:=1 to n do begin
str(i, st);
 for is:=1 to length(st) do begin si:=si+1;
 sm[si]:=st[is] end;

end;
Writeln('Number ',n,'= ',sm[n]);
Writeln;
end;
end.


Сообщение отредактировано: Skrip - 16.11.2004 17:28
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 16.11.2004 19:55
Сообщение #2


Гость






Oleg_Z

А Debugger зачем? (Кстати, программа-таки дает неверные ответы... :yes:)

Хотя, может условие было другим.... rolleyes.gif
Ждем автора...

А если я все-таки прав насчет условия, то эта задача решается без массивов по 10000 элементов и безо всяких задержек, т.е. практически мгновенно:
Код

Function Power(a, x: LongInt): LongInt;
 Begin
   Power := Trunc( Exp(x * Ln(a)) )
 End;

Const
 n: Integer = {110}  (* result = 6 *)
              {18}   (* result = 1 *)
              19   (* result = 4 *)
              {1992} (* result = 0 *)
              {100}  (* result = 5 *)
              {201}  (* result = 3 *)
              {215}  (* result = 6 *)
              {621}  (* result = 3 *)
              {154}  (* result = 8 *)
            ;
Var
 TPower, nPrev: Integer;
 i, nCount, nPosIn: Integer;
 Decr: Integer;
 s: String;
Begin
 TPower := 0; nPrev := n;
 Repeat
   Inc(TPower);
   Decr := 9 * TPower * Power(10, Pred(TPower));
   n := n - Decr;
 Until n < 0;
 n := n + Decr;

 nCount := (n div TPower) + (n mod TPower);
 Dec(TPower);
 For i := 1 To TPower do
   Inc( nCount, 9 * Power(10, Pred(i)) );
 nPosIn := Succ(TPower) - (n mod Succ(TPower));

 Str(nCount, s);
 WriteLn('Digit #', nPrev, ' = ', s[nPosIn])
End.


Сообщение отредактировано: volvo - 17.11.2004 0:23
 К началу страницы 
+ Ответить 

Сообщений в этой теме
Skrip   Почему моя прога виснет?   16.11.2004 17:24
Altair   Процессор долго вычисляет. Это не зависание, ждите...   16.11.2004 17:54
APAL   А еще si не инициализирована в самом начале... А м...   16.11.2004 17:56
Altair   Сомневаюсь, я думаю, что просто время вычисления, ...   16.11.2004 18:05
volvo   Skrip Можно вопрос ? Задание звучит так ? ...   16.11.2004 19:38
Altair   volvo чародей :) Откуда узнал? может прога вообще ...   16.11.2004 19:46
volvo   Oleg_Z А Debugger зачем? (Кстати, программа-таки...   16.11.2004 19:55
Skrip   Задание было такое. Вводим n. По данному числу n (...   17.11.2004 7:02
Ozzя   Cray - это суперкомпьютеры http://cs.mipt.ru/docs...   17.11.2004 7:06
Altair   ТОгдапросто алгоритм неверен. Ьред какой-то, если...   17.11.2004 7:11
volvo   Skrip А сколько цифр содержится в последовательно...   17.11.2004 8:51
Skrip   Сдесь я точно затупил. Стыд-то какой... :unsure:...   17.11.2004 10:26
volvo   Skrip Я же привел пример рабочей программы. Или о...   17.11.2004 10:49
Skrip   volvo, прога то подходит, но я должен сделать ее с...   17.11.2004 13:59
Romtek   прога то подходит, но я должен сделать ее сам Уваж...   17.11.2004 18:00
Altair   И я! Это замечательно!   17.11.2004 19:19


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

 



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