![]() |
1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!
![]() |
Skrip |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 33 Пол: Мужской Репутация: ![]() ![]() ![]() |
У меня прога виснет если 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 |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Oleg_Z
А Debugger зачем? (Кстати, программа-таки дает неверные ответы... :yes:) Хотя, может условие было другим.... ![]() Ждем автора... А если я все-таки прав насчет условия, то эта задача решается без массивов по 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 |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 19:16 |