10 / 10 / 5
Регистрация: 30.12.2010
Сообщений: 379

Глобальные и локальные переменные, одна и та же прога в процедуре Не работает, а просто так работает. Почему?

18.10.2011, 23:24. Показов 1840. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, есть программка которая переводит из 2-ной системы в 10-ную. Она работает. А вот поместил я её в процедуру и работать перестала. Я выяснил что это из-зо того что переменные не глобальные, а только для этой процедуры. Странно, помойму этого быть не должно. Помогите пожалуйста разобраться. Вот работающий код:
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;
var
len,q,e,w,r1,r2,otvet:integer;
sislo:string;
bykvi1:array[1..1000] of integer;
bykvi2:array[1..1000] of integer;
 
function power(r1,r2:integer):integer;
var res,r3:integer;
 begin
  r3:=r1;
  r2:=r2-1;
  if r2+1<>0 then begin
  while r2>0 do begin
  r2:=r2-1;
  r1:=r1*r3;
  end;
  end
  else
  begin
  r1:=1;
  end;
  power:=r1;
 end;
begin
 clrscr;
 writeln('is 2noi v 10nuy');
 writeln('vvedi sislo');
 readln(sislo);
 len:=length(sislo);
 for q:=1 to len do begin {zapis sifr v massiv}
  val(copy(sislo,q,1),w,e);
  bykvi1[q]:=w;
 end;
 q:=len;
 w:=0;
 repeat
  w:=w+1;
  q:=q-1;
  otvet:=otvet+bykvi1[w]*power(2,q);
  write(bykvi1[w],'*2','^',q);
  if q<>0 then write('+');
until q=0;
writeln;
writeln (otvet);
readln;
end.
А вот НЕ работающий:
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
uses crt;
procedure aaa;
var
len,q,e,w,r1,r2,otvet:integer;
sislo:string;
bykvi1:array[1..1000] of integer;
bykvi2:array[1..1000] of integer;
 
function power(r1,r2:integer):integer;
var res,r3:integer;
 begin
  r3:=r1;
  r2:=r2-1;
  if r2+1<>0 then begin
  while r2>0 do begin
  r2:=r2-1;
  r1:=r1*r3;
  end;
  end
  else
  begin
  r1:=1;
  end;
  power:=r1;
 end;
begin
 clrscr;
 writeln('is 2noi v 10nuy');
 writeln('vvedi sislo');
 readln(sislo);
 len:=length(sislo);
 for q:=1 to len do begin {zapis sifr v massiv}
  val(copy(sislo,q,1),w,e);
  bykvi1[q]:=w;
 end;
 q:=len;
 w:=0;
 repeat
  w:=w+1;
  q:=q-1;
  otvet:=otvet+bykvi1[w]*power(2,q);
  write(bykvi1[w],'*2','^',q);
  if q<>0 then write('+');
until q=0;
writeln;
writeln (otvet);
readln;
end;
begin
aaa;
end.
Выдает не правильные результаты.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.10.2011, 23:24
Ответы с готовыми решениями:

Глобальные и локальные переменные
Здравствуйте подскажите почему метод getBuy() возвращает ноль?? public class MainActivity extends WorkService { public int buy; ...

Глобальные и локальные переменные
Более того, при попытке обратиться к переменной сначала на чтение, потом на запись, мы получим ошибку: def func3(): print(z) ...

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

5
Почетный модератор
 Аватар для Puporev
64312 / 47609 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
19.10.2011, 12:40
Цитата Сообщение от Илья01 Посмотреть сообщение
Выдает не правильные результаты.
Я на нескольких числах проверил, результат правильный, такой же что и в первой программе. Покажите что вводите при неверном результате.
0
10 / 10 / 5
Регистрация: 30.12.2010
Сообщений: 379
19.10.2011, 16:24  [ТС]
В первой программе ввожу 15 выдает 7
Во второй ввожу 15 выдает 4611

Добавлено через 1 минуту
А может дело в версии tp? Я проверял на tp7.1 и tp school pak 1.3
0
Почетный модератор
 Аватар для Puporev
64312 / 47609 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
19.10.2011, 16:52
Чтобы быстрее запустил обе программы в Паскаль АВС. Как говорится, найди 10 отличий.
Миниатюры
Глобальные и локальные переменные, одна и та же прога в процедуре Не работает, а просто так работает. Почему?   Глобальные и локальные переменные, одна и та же прога в процедуре Не работает, а просто так работает. Почему?  
1
10 / 10 / 5
Регистрация: 30.12.2010
Сообщений: 379
19.10.2011, 19:31  [ТС]
Puporev, я не знаю в чем у вас дело, но у меня такого нет( А вы только с ABC запускали? На простом tp пробовали?
0
Почетный модератор
 Аватар для Puporev
64312 / 47609 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
19.10.2011, 19:50
Нет, попробую, но думаю будет тоже...

Добавлено через 4 минуты
Да, в ТП вторая работает неверно.

Добавлено через 3 минуты
Лень полностью разбираться, программа плохо написана
Перекинь переменные в глобальные
Pascal
1
2
3
4
5
6
var
len,q,e,w,r1,r2,otvet:integer;
sislo:string;
bykvi1:array[1..1000] of integer;
bykvi2:array[1..1000] of integer;
procedure aaa;
Добавлено через 4 минуты
Так пока напиши.
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
uses crt;
procedure aaa(sislo:string;var otvet:integer);
var len,q,w,e:integer;
    bykvi1:array[1..1000] of integer;
    bykvi2:array[1..1000] of integer;
function power(r1,r2:integer):integer;
var res,r3:integer;
 begin
  r3:=r1;
  r2:=r2-1;
  if r2+1<>0 then begin
  while r2>0 do begin
  r2:=r2-1;
  r1:=r1*r3;
  end;
  end
  else
  begin
  r1:=1;
  end;
  power:=r1;
end;
begin
 clrscr;
 writeln('is 2noi v 10nuy');
 writeln('vvedi sislo');
 readln(sislo);
 len:=length(sislo);
 for q:=1 to len do begin {zapis sifr v massiv}
  val(copy(sislo,q,1),w,e);
  bykvi1[q]:=w;
 end;
 q:=len;
 w:=0;
 repeat
  w:=w+1;
  q:=q-1;
  otvet:=otvet+bykvi1[w]*power(2,q);
  write(bykvi1[w],'*2','^',q);
  if q<>0 then write('+');
until q=0;
writeln;
writeln (otvet);
readln;
end;
var r:integer;
    s:string;
begin
aaa(s,r);
end.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.10.2011, 19:50
Помогаю со студенческими работами здесь

Глобальные переменные vs Локальные
Имеется программа, за цикл, выполняет пересчет всех элементов матрицы. Есть нужда сделать динамический глобальный массив. Как повлияет...

Глобальные и локальные переменные
def func3(): print(z) z = 20 z = 10 func3() Но ведь мы присвоили глобальной переменной z значение 10. То инструкция...

глобальные и локальные переменные
Как лучше реализовывать для достижения минимального кода/ максимального быстродействия? 1 вариант: например в main() есть локальная...

Глобальные и локальные переменные!
Какой будет ответ?

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


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

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

Новые блоги и статьи
POCO, ACE, Loki и другие продвинутые C++ библиотеки
NullReferenced 13.05.2025
В C++ разработки существует такое обилие библиотек, что порой кажется, будто ты заблудился в дремучем лесу. И среди этого многообразия POCO (Portable Components) – как маяк для тех, кто ищет. . .
Паттерны проектирования GoF на C#
UnmanagedCoder 13.05.2025
Вы наверняка сталкивались с ситуациями, когда код разрастается до неприличных размеров, а его поддержка становится настоящим испытанием. Именно в такие моменты на помощь приходят паттерны Gang of. . .
Создаем CLI приложение на Python с Prompt Toolkit
py-thonny 13.05.2025
Современные командные интерфейсы давно перестали быть черно-белыми текстовыми программами, которые многие помнят по старым операционным системам. CLI сегодня – это мощные, интуитивные и даже. . .
Конвейеры ETL с Apache Airflow и Python
AI_Generated 13.05.2025
ETL-конвейеры – это набор процессов, отвечающих за извлечение данных из различных источников (Extract), их преобразование в нужный формат (Transform) и загрузку в целевое хранилище (Load). . . .
Выполнение асинхронных задач в Python с asyncio
py-thonny 12.05.2025
Современный мир программирования похож на оживлённый мегаполис – тысячи процессов одновременно требуют внимания, ресурсов и времени. В этих джунглях операций возникают ситуации, когда программа. . .
Работа с gRPC сервисами на C#
UnmanagedCoder 12.05.2025
gRPC (Google Remote Procedure Call) — открытый высокопроизводительный RPC-фреймворк, изначально разработанный компанией Google. Он отличается от традиционых REST-сервисов как минимум тем, что. . .
CQRS (Command Query Responsibility Segregation) на Java
Javaican 12.05.2025
CQRS — Command Query Responsibility Segregation, или разделение ответственности команд и запросов. Суть этого архитектурного паттерна проста: операции чтения данных (запросы) отделяются от операций. . .
Шаблоны и приёмы реализации DDD на C#
stackOverflow 12.05.2025
Когда я впервые погрузился в мир Domain-Driven Design, мне показалось, что это очередная модная методология, которая скоро канет в лету. Однако годы практики убедили меня в обратном. DDD — не просто. . .
Исследование рантаймов контейнеров Docker, containerd и rkt
Mr. Docker 11.05.2025
Когда мы говорим о контейнерных рантаймах, мы обсуждаем программные компоненты, отвечающие за исполнение контейнеризованных приложений. Это тот слой, который берет образ контейнера и превращает его в. . .
Micronaut и GraalVM - будущее микросервисов на Java?
Javaican 11.05.2025
Облачные вычисления безжалостно обнажили ахиллесову пяту Java — прожорливость к ресурсам и медлительный старт приложений. Традиционные фреймворки, годами радовавшие корпоративных разработчиков своей. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru