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

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

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

> Почему моя прога виснет?
сообщение
Сообщение #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 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #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 -
 К началу страницы 
+ Ответить 

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


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

 





- Текстовая версия 10.09.2025 4:48
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name