0 / 0 / 0
Регистрация: 03.12.2015
Сообщений: 2

Обнуление формальных переменных

03.12.2015, 01:02. Показов 624. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. У меня возникает непонятная для меня вещь: происходит обнуление массива и элементов, указанных в формальных переменных. Задание было следующим: nom1 - Найти строки без квадратных скобок, nom 2 - среди найденных строк найти ту строку, которая заканчивается на минимальное(не нулевое) количество цифр. Вот собственно сам код:
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
const nmax=20;
type mas = array[1..nmax] of string;
type ms = array[1..nmax] of byte;
procedure nom1(m,b:mas; z:ms; q, n:byte);
var
  i:byte;
begin
  for i:=1 to n do 
    if (pos('[',m[i])=0) and (pos(']',m[i])=0) then
      begin
        q:=q+1;
        b[q]:=m[i];
        z[q]:=i;
      end;
  if q=0 then writeln('Строк удовлетворяющих условию не найдено')
  else 
    begin
      writeln('Найдено ',q,' подобных строк');
      write('Они находятся в строках № ',z[1]);
      if q>1 then
        begin
          for i:=2 to q do write(', ',z[i]);
          writeln;
        end;
      writeln;
      writeln('А сами строки:');
      for i:=1 to q do writeln(b[i]);
      n:=q;
    end;
end;
procedure nom2(b:mas;n:byte);
var 
  i,c,min,w:byte;
begin
  min:=250; c:=0; 
  for i:=1 to n do
    begin
      while (ord(b[i][length(b[i])-c])>=ord('0'))and
        (ord(b[i][length(b[i])-c])<=ord('9')) do c:=c+1;
      writeln(c);
      if (c>0)and(c<min) then 
        begin
          min:=c;
          w:=i;
        end;
      c:=0;
      end;
  if w=0 then writeln('Такой строки не существует')
  else writeln('Это подстрока ',b[w]);
end;
var p,n,q:byte;
    m,b:mas;
    z:ms;
    j:real;
begin
  writeln('Введите длину массива');
  while (j<1)or(j>nmax)or(j<>round(j)) do
    readln(j);
  n:=round(j);
  writeln('Введите строки');
  for p:=1 to n do readln(m[p]);
  nom1(m,b,z,q,n);
  {nom2(b,n);}
end.
Для понимания - массив b - это массив, который должен содержать строки, после выполненного задания, z - номера строк, q - количество строк в массиве b (q после выполнения первой процедуры тоже обнулялось, поэтому пришлось прибегнуть к "n:=q;"). Главная суть сего сообщения, почему обнуляются массивы b и z, да и целочисленная q в придачу. Пробовал менять названия формальных и глобальных переменных - не помогло.
P.S. формальные переменные - это переменные расположенные в скобках в разделе описания процедуры или функции: название_процедуры(формальные_переменные );
P.S.S. Программа рабочая по фрагментам точно. Может немного кривая, но фрагменты рабочие, надеюсьна ваше понимание.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.12.2015, 01:02
Ответы с готовыми решениями:

Var в формальных переменных процедуры
Здравствуйте, когда я в процедуре ввожу в формальных переменных имя и тип переменной, то перед новыми элементами ставлю var , чтобы они...

Обнуление переменных
Господа, может кто мне пояснить, почему при повторном вызове процедуры, без обнуления переменных выходят страшные числа? В смысле, как...

Рассмотреть программу, написать имена глобальных переменных, локальных переменных, формальных параметров
Program P1; var s:string; procedure P(var s:string) ; var i, j : integer; aux: char; ...

2
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33149 / 21441 / 8223
Регистрация: 22.10.2011
Сообщений: 36,773
Записей в блоге: 9
03.12.2015, 01:11
Они не обнуляются, просто их изменение в теле подпрограммы не передается в вызывающий код. Чтобы передавалось - нужно использовать спецификатор var:
Pascal
1
procedure nom1(m:mas; var b:mas; var z:ms; var q:byte; n:byte);
1
0 / 0 / 0
Регистрация: 03.12.2015
Сообщений: 2
03.12.2015, 01:15  [ТС]
Спасибо за помощь) Такой блин я глупец -_-
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.12.2015, 01:15
Помогаю со студенческими работами здесь

Неожиданное обнуление переменных
Здравствуйте. У меня неожиданно обнуляются переменные. То есть я считываю переменнную, какое-то число шагов ее не трогаю, а затем она...

Обнуление глобальных переменных
Всем здравствуйте, делал я тут программу на Python 3 c использованием PYQT5 и мне нужно было обнулить все глобальные и я это сделал, но...

Обнуление глобальных переменных
Есть юнит который вытягивает некоторую информацию из файла и выводит её пользователю. Но при этом используются глобальные переменные, и...

Обнуление переменных при блокировке
как можно сделать что бы переменные не обнулялись при блокировке телефона?

Не понятное обнуление глобальных переменных
Всем привет. Я тут новенький, так что если что не так, прошу прощение. :-) Суть вопроса в следующем. Поясните пожалуйста почему...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
JWT аутентификация в ASP.NET Core
UnmanagedCoder 18.06.2025
Разрабатывая веб-приложения, я постоянно сталкиваюсь с дилеммой: как обеспечить надежную аутентификацию пользователей без ущерба для производительности и масштабируемости? Классические подходы на. . .
Краткий курс по С#
aaLeXAA 18.06.2025
Здесь вы найдете все необходимые функции чтоб написать програму на C# Задание 1: КЛАСС FORM 1 public partial class Form1 : Form { Spisok listin = new Spisok(); . . .
50 самых полезных примеров кода Python для частых задач
py-thonny 17.06.2025
Эффективность работы разработчика часто измеряется не количеством написаных строк, а скоростью решения задач. Готовые сниппеты значительно ускоряют разработку, помогают избежать типичных ошибок и. . .
C# и продвинутые приемы работы с БД
stackOverflow 17.06.2025
Каждый . NET разработчик рано или поздно сталкивается с ситуацией, когда привычные методы работы с базами данных превращаются в источник бессонных ночей. Я сам неоднократно попадал в такие ситуации,. . .
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг. Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя. Странные серые краски проникают и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru