Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
os
0 / 0 / 0
Регистрация: 24.07.2011
Сообщений: 15
1

Как снять ограничение массива переменных ?

05.08.2011, 16:22. Показов 3055. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Массив рассчитан на 1000 переменных
Const
N=1000;
Как переписать листинг для снятия этого ограничения ?
А остановку работы программы - клавишей " Esc "
Листинг программы такой :

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
Program Progression;
 
Const
  N = 1000;
 
Type
  MyArray = Array [1..N] of Integer;
 
Var
  Save: MyArray;  // массив циклов (кол-во нулей)
  Val : MyArray;  // массив значений (ноль = 1, число = кол-во нулей до 1)
 
Function Check(count: Integer): Boolean;
Var
  i: Integer;
Begin
  Check:= True;
  For i:= 1 to count do
    If (Val[i] = 0) then Begin   //если хоть одна единица
      Check:= False;
      Exit;
    End;
End;
 
Procedure Step(count: Integer);  //процедура меняет значения переменных
Var
  i: Integer;
 
Begin
  For i:= 1 to count do Begin
    If (Val[i] = 0) then
      Val[i]:= Save[i]
    else
      Dec(Val[i]);
  End;
End;
 
Var
  F: text;
  d: Integer;     //последняя запись файла
  k, i: Integer;  //счетчики
  count: Integer; //кол-во активных переменных
 
Begin
  Assign(F, 'D:\f1.dat');
  Rewrite(F);
  Writeln(F, '3');
  Close(F);
 
  Val[1]:= 1; Save[1]:= 1;  //иначе говоря, а = 0
  Val[2]:= 0; Save[2]:= 2;  //              b = 1
 
  K:= 0;
  count:= 2;
 
  For i:= 1 to N do Begin
    If Check(count) then begin    // если проверка удачна, значит все нули
      Reset(F);
      Repeat
        Readln(F, d);      // доходим до конца файла
      Until EoF(F);
      Close(F);
      d:= d + k;           // число + счетчик шагов
 
      Append(F);
      Writeln(F, d);       // пишем в файл
      Close(f);
 
      Inc(count);          // берем еще одну переменную
      Save[count]:= d - 1; // отнимаем 1 (новое кол-во нулей)
      Val[count] := 0;
 
      k:= 0;
    End
    Else Begin
      Step(count);         //если проверка не прошла, то двигаем значения по циклу
      Inc(k);
    End;
  End;
End.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.08.2011, 16:22
Ответы с готовыми решениями:

Как снять ограничение на размер статического массива?
Мне нужно выполнить программу и чтобы ее выполнение превышало 0,2 секунды,но я не могу этого...

Как снять ограничение?
Как решить такую проблему. У меня в окошке с фигурами все отображается только в пределах 1,0. Как...

Как снять ограничение 60 FPS
После установки 10 винды, появились ограничения 60 фпс во всех играх. Как бороться не знаю. Xbox...

Как снять ограничение на пользователях с файлов
Доброе время суток. Такая ситуация: в домашних условиях был сервер с win_srv r2 2012 c A, к нему...

5
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
05.08.2011, 17:43 2
Цитата Сообщение от os Посмотреть сообщение
Как переписать листинг для снятия этого ограничения ?
Не врубаюсь о чем программа, но такое ощущение что создается некая последовательность и массив здесь вообще не нужен.
Цитата Сообщение от os Посмотреть сообщение
А остановку работы программы - клавишей " Esc "
Типа так
Pascal
1
2
3
4
5
6
7
uses crt;
var c:char;
.......................
repeat
//что-то делаем
c:=readkey;
until c=#27;
0
os
0 / 0 / 0
Регистрация: 24.07.2011
Сообщений: 15
05.08.2011, 18:38  [ТС] 3
насчет массива : дело в том,что число переменные в ходе программы непрерывно растет в числе, счет пойдет на МЛН-ы. Пока пробно для обкатки ограничили 1000. Может и тип переменных поменять ?
Integer на млн. не потянет ведь ?

А вот,что Вы предлагаете (насчет клавиши Esc) :

Pascal
1
2
3
4
5
6
7
uses crt;
var c:char;
.......................
repeat
//что-то делаем
c:=readkey;
until c=#27;
Куда мне это в листинг добавить ? Не смейтесь, пожалуйста, программист я-никакой.
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
05.08.2011, 18:42 4
Цитата Сообщение от os Посмотреть сообщение
Integer на млн. не потянет ведь ?
Потянет, maxint=2 147 483 647

Добавлено через 2 минуты
Цитата Сообщение от os Посмотреть сообщение
Куда мне это в листинг добавить ?
Понятия не имею, это же Ваша программа.
А я написал вроде понятно,
repeat перед тем как начинаем цикл
c:=readkey;//перед прекращением цикла.
until c=#27;
0
os
0 / 0 / 0
Регистрация: 24.07.2011
Сообщений: 15
05.08.2011, 18:44  [ТС] 5
Может использовать тип Longint ?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
05.08.2011, 18:46 6
А насчет массива, то раз создается файл, то массив наверное и не нужен, любую числовую последовательность можно создать без массива, если в ней есть закономерность.

Добавлено через 48 секунд
os, Если Вы пишете в Паскаль АВС, а это именно тот раздел, то в нем longint=integer;
0
05.08.2011, 18:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.08.2011, 18:46
Помогаю со студенческими работами здесь

Как снять ограничение на доступ к сайтам в IE.
На компьютере два браузера: IE и FireFox. FireFox работает без проблем, а IE снекоторых пор никуда...

Как снять ограничение на размер файла в 64 кб
Настройки программы сохраняются в ини-файле (стандартный класс TIniFile из модуля IniFiles). Так...

Как снять ограничение скорости в торрент?
В используемой мной сети стоит ограничение на скорость скачивания в любых приложениях, которые...

Как снять ограничение поиска в joomla 3
Доброе время суток. Никак не могу снять ограничения с поиска. Обрыл весь интернет, нашел только для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru