0 / 0 / 0
Регистрация: 30.08.2009
Сообщений: 11
1

Глобальные переменные

06.09.2009, 12:11. Показов 4008. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
помогите переделать программу надо убрать глобальные переменные у самого не получается=((
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
program lab11;
uses crt;
const
max_array_size=100;
type mas=array[1..max_array_size] of integer;
var a:mas;
    b:mas;
    mas_dimension,i:integer;
    Summ:real;
 
 
 
 
procedure Input(var a:mas);
var i:integer;
begin
  repeat
    writeln('Введите размерность массива ');
    readln(mas_dimension);
    if mas_dimension<=1  then
    writeln('Ошибка ввода .....');
  until mas_dimension>=2;
  if mas_dimension>=max_array_size then
  begin
    writeln('вы превысили допустимый размер массива ...');
    halt;
  end;
  for i:=1 to mas_dimension do
    begin
      writeln('Введите ',i,' член массива ' );
      readln(a[i]);
    end;
  writeln('Введеный массив');
  for i:=1 to mas_dimension do
    begin
      write(' ',a[i]);
    end;
end;
procedure Fibb(var b:mas);
var i:integer;
begin
  writeln;
  writeln('Числа Фиббоначи :');
  for i:=1 to mas_dimension do
  begin
    b[1]:=1;
    b[2]:=2;
    b[i+1]:=b[i]+b[i-1];
    write(' ',b[i]);
  end;
  writeln;
end;
procedure Dicision;
var i:integer;
begin
  summ:=0;
  for i:=1 to mas_dimension do
  begin
    summ:=summ+a[b[i]];
  end;
end;
procedure out;
begin
  writeln('Cумма равна  ',Summ:4:1) ;
  writeln('Работа программы закончена нажмите любую клавишу...');
end;
begin
  Input(a);
  Fibb(b);
  Dicision;
  out;
  readln;
end.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.09.2009, 12:11
Ответы с готовыми решениями:

глобальные переменные
Помогите пожалуйста избавиться от глобальных переменных! Заношу все в процедуры, программа не идет...

Локальные и глобальные переменные.
ОГбьясните пожалуйста чем отличаются Procedure и Function Да и что такое глобальные и локальные...

Глобальные переменные
Написать программу, которая с помощью подпрограммы процедуры находит сумму элементов одномерного...

Глобальные переменные и процедуры
Итак, я решил, что начать изучение этого языка лучше начать с написания чего-то интересного и...

5
1513 / 780 / 103
Регистрация: 22.04.2008
Сообщений: 1,610
06.09.2009, 12:24 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
65
66
67
68
69
70
71
72
73
program lab11;
uses crt;
const
max_array_size=100;
type mas=array[1..max_array_size] of integer;
var a:mas;
    b:mas;
    mas_dimension,i:integer;
    Summ:real;
 
 
 
 
procedure Input(var a:mas;n:interger);
var i:integer;
begin
  repeat
    writeln('Введите размерность массива ');
    readln(n);
    if n<=1  then
    writeln('Ошибка ввода .....');
  until n>=2;
  if n>=max_array_size then
  begin
    writeln('вы превысили допустимый размер массива ...');
    halt;
  end;
  for i:=1 to n do
    begin
      writeln('Введите ',i,' член массива ' );
      readln(a[i]);
    end;
  writeln('Введеный массив');
  for i:=1 to n do
    begin
      write(' ',a[i]);
    end;
end;
procedure Fibb(var b:mas;n:integer);
var i:integer;
begin
  writeln;
  writeln('Числа Фиббоначи :');
  for i:=1 to n do
  begin
    b[1]:=1;
    b[2]:=2;
    b[i+1]:=b[i]+b[i-1];
    write(' ',b[i]);
  end;
  writeln;
end;
procedure Dicision(a,b:mas;n:integer;var sum:real);
var i:integer;
begin
  sum:=0;
  for i:=1 to n do
  begin
    sum:=sum+a[b[i]];
  end;
end;
procedure out(sum:real);
begin
  writeln('Cумма равна  ',Sum:4:1) ;
  writeln('Работа программы закончена нажмите любую клавишу...');
end;
begin
  Input(a,mas_dimension);
  Fibb(b,mas_dimension);
  Dicision(a,b,mas_dimension,summ);
  out(summ);
  readln;
end.
1
36 / 36 / 9
Регистрация: 11.02.2009
Сообщений: 84
06.09.2009, 12:45 3
Цитата Сообщение от Sergei Посмотреть сообщение
b[1]:=1; b[2]:=2;
это лучше вынести перед циклом

Цитата Сообщение от Sergei Посмотреть сообщение
for i:=1 to n do
можно начинать со 2ого элимента
0
0 / 0 / 0
Регистрация: 30.08.2009
Сообщений: 11
06.09.2009, 12:47  [ТС] 4
помойму что то ты не то сделал ...прога перестала работать и глобальные переменные остались..(
0
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
06.09.2009, 12:51 5
Глобальные переменные объявляются до раздела описания подпрограмм и используются ими. Как в приведенном выше примере.
Чтоб этого избежать и не спутаться, лучше сначала опимать подпрограммы, а затем раздел описания переменных, стараясь не повторять имена переменных, используемых как формальные параметры в подпрограммах. Вот пример Вашей программы, как обычно я делаю, поэтому это не обязательно. Поправил по ходу некоторые мелочи.
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
program lab11;
uses crt;
const
max_array_size=100;
type mas=array[1..max_array_size] of integer;
 
procedure Input(var m:mas;var n:integer);
var i:integer;
begin
  repeat
    writeln('Введите размерность массива ');
    readln(n);
    if n<=1  then  writeln('Ошибка ввода .....')
    else if n>=max_array_size then writeln('вы превысили допустимый размер массива ...');
  until (n>=2)and(n<=max_array_size);
  for i:=1 to n do
    begin
      writeln('Введите ',i,' член массива ' );
      readln(m[i]);
    end;
  clrscr;
  writeln('Введеный массив');
  for i:=1 to n do
    begin
      write(' ',m[i]);
    end;
end;
procedure Fibb(var m:mas;n:integer);
var i:integer;
begin
  writeln;
  writeln('Числа Фиббоначи :');
  for i:=1 to n do
  begin
    m[1]:=1;
    m[2]:=2;
    m[i+1]:=m[i]+m[i-1];
    write(' ',m[i]);
  end;
  writeln;
end;
procedure Dicision(m1,m2:mas;n:integer; var sum:integer);
var i:integer;
begin
  sum:=0;
  for i:=1 to n do
  begin
    sum:=sum+m1[m2[i]];
  end;
end;
procedure out(var sum:integer);
begin
  writeln('Cумма равна  ',sum) ;
  writeln('Работа программы закончена нажмите любую клавишу...');
end;
var a:mas;
    b:mas;
    mas_dimension,i:integer;
    Summ:integer;
begin
  Input(a,mas_dimension);
  Fibb(b,mas_dimension);
  Dicision(a,b,mas_dimension,summ);
  out(summ);
  readln;
end.
1
0 / 0 / 1
Регистрация: 22.10.2010
Сообщений: 6
04.12.2010, 12:59 6
хм.. тот же вопрос: избавиться от глобальных переменных в этой проге:
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
uses crt;
const rz=['.',',','?','!',';',':'];
procedure Format(var s:string);
begin
s:=s+' ';
while pos('  ',s)>0 do
delete(s,pos('  ',s),1);
end;
function Kol(s:string):byte;
var m:set of char;
    i,k:byte;
begin
m:=[];
k:=0;
for i:=1 to length(s) do
if not(s[i] in m) then
 begin
  k:=k+1;
  m:=m+[s[i]];
 end;
Kol:=k;
end;
function Max(s:string):string;
var mx:byte;
    s1,s2:string;
begin
mx:=0;
while pos(' ',s)>0 do
 begin
  s1:=copy(s,1,pos(' ',s)-1);
  if Kol(s1)>mx then
    begin
    mx:=Kol(s1);
    s2:=s1;
   end;
  delete(s,1,pos(' ',s));
 end;
Max:=s2;
end;
var s:string;
begin
clrscr;
writeln('Предложение:');
readln(s);
write('Больше всего разных букв в слове ',Max(s));
readln
end.
0
04.12.2010, 12:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.12.2010, 12:59
Помогаю со студенческими работами здесь

Локальные и глобальные переменные
var a,b,c,d:integer; procedure p(x:integer; var a:integer); var c:integer; begin x:=5;...

Модули и глобальные переменные
Писала курсовой проект, зная только задание. Позже выяснилось, что требуется использование модулей...

Глобальные и локальные переменные, одна и та же прога в процедуре Не работает, а просто так работает. Почему?
Здравствуйте, есть программка которая переводит из 2-ной системы в 10-ную. Она работает. А вот...

Внутриблочные переменные не могут иметь те же имена, что и переменные из блока верхнего уровня
program matr; uses crt; const n = 5; m = 5; var

Из локальных в глобальные
Помогите переделать ил локальных в глобальные uses crt; Const Rows=6; ...

Как описываются переменные типа запись? В каких случаях целесообразно использовать переменные типа запись?
1. Как описываются переменные типа запись? 2. В каких случаях целесообразно использовать...


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

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

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