Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2007, 23:07   #1
mishel
Пользователь
 
Регистрация: 24.01.2007
Сообщений: 15
Вопрос помогите плиз!

У меня такая проблема: в программе есть массив (boolean), но при некотором условии один из элементов этого массива должен стать true, однако как я ни пробовал, все-равно все значения false. Краткие наброски листинга я привожу ниже:


var
massiv: array [1..10, 1..10] of boolean;
i: integer;

begin
if i:=1 then
massiv[1,1]:= true;
................

Я останавливал программу на некотором этапе и просматривал значения массива, так они не меняются, я не могу понять почему.
ПОМОГИТЕ, ПОЖАЛУЙСТА!
mishel вне форума Ответить с цитированием
Старый 27.02.2007, 23:28   #2
wiskas
Пользователь
 
Аватар для wiskas
 
Регистрация: 21.02.2007
Сообщений: 26
По умолчанию

чето ты не то делаешь в другой части программы. вот я тока что в это не поверил, но решил проверить - кусок программы:

massiv: array [1..10, 1..10] of boolean;

procedure TForm1.Button1Click(Sender: TObject);
begin
if massiv[1,1]=false then label1.Caption:='false';
if massiv[1,1]=true then label1.Caption:='true';
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if massiv[1,1]=true then massiv[1,1]:=false
else massiv[1,1]:=true;
end;

при нажатии на кнопки оно все меняется, выкинь, если не жалко, програмынй код сюда и ктота резберется.
wiskas вне форума Ответить с цитированием
Старый 27.02.2007, 23:35   #3
ЧИЖ
Форумчанин
 
Аватар для ЧИЖ
 
Регистрация: 24.02.2007
Сообщений: 104
Стрелка

пробовал у себя вот так:
Код:
var
a:array[1..10,1..10] of boolean;
i,j:integer;
begin
readln(j);
for i:=1 to 10 do if i=j then a[i,i]:=true;
for i:=1 to 10 do begin
for j:=1 to 10 do write(a[i,j],'  ');
writeln;
end;
readln;
end.
все прокатывает (указанный элемент массива равен true)
Разберемся.......
ЧИЖ вне форума Ответить с цитированием
Старый 27.02.2007, 23:40   #4
SteelRat
Брэйнфакер Про
Пользователь
 
Аватар для SteelRat
 
Регистрация: 21.02.2007
Сообщений: 51
По умолчанию

Цитата:
Сообщение от mishel Посмотреть сообщение
У меня такая проблема: в программе есть массив (boolean), но при некотором условии один из элементов этого массива должен стать true, однако как я ни пробовал, все-равно все значения false. Краткие наброски листинга я привожу ниже:


var
massiv: array [1..10, 1..10] of boolean;
i: integer;

begin
if i:=1 then
massiv[1,1]:= true;
................

Я останавливал программу на некотором этапе и просматривал значения массива, так они не меняются, я не могу понять почему.
ПОМОГИТЕ, ПОЖАЛУЙСТА!
На выделеное обрати внимание.
SteelRat вне форума Ответить с цитированием
Старый 27.02.2007, 23:44   #5
wiskas
Пользователь
 
Аватар для wiskas
 
Регистрация: 21.02.2007
Сообщений: 26
По умолчанию

ну тогда у него должно с ошибкой вылитать
wiskas вне форума Ответить с цитированием
Старый 27.02.2007, 23:46   #6
SteelRat
Брэйнфакер Про
Пользователь
 
Аватар для SteelRat
 
Регистрация: 21.02.2007
Сообщений: 51
По умолчанию

Понятия не имею =)
SteelRat вне форума Ответить с цитированием
Старый 28.02.2007, 00:12   #7
wiskas
Пользователь
 
Аватар для wiskas
 
Регистрация: 21.02.2007
Сообщений: 26
По умолчанию

var
massiv: array [1..10, 1..10] of boolean;
i: integer;

begin
if i=1 then // а было i : =1
massiv[1,1]:= true;
................

он имел ввиду что ты допустил синтаксическую ошибку, в твоем коде только это видно, больше ничего нету неправильного
wiskas вне форума Ответить с цитированием
Старый 28.02.2007, 18:10   #8
Time
Пользователь
 
Регистрация: 09.02.2007
Сообщений: 32
По умолчанию

Цитата:
У меня такая проблема: в программе есть массив (boolean), но при некотором условии один из элементов этого массива должен стать true, однако как я ни пробовал, все-равно все значения false. Краткие наброски листинга я привожу ниже:


var
massiv: array [1..10, 1..10] of boolean;
i: integer;

begin
if i:=1 then
massiv[1,1]:= true;
................

Я останавливал программу на некотором этапе и просматривал значения массива, так они не меняются, я не могу понять почему.
ПОМОГИТЕ, ПОЖАЛУЙСТА!
Пусть там даже нет этой синтактической ошибки...
Раз у тебя в программе этот элемент массива изменяестя, только при i=1, значит перед этим i никогда не становится 1, логично...?
Цитата:
Краткие наброски листинга я привожу ниже:
Уж очень краткие... Полностью выложи лучше, тогда посмотрим, а так чё гадать то...
Time have not meaning, mind - this is main...
Time вне форума Ответить с цитированием
Старый 03.03.2007, 09:00   #9
Шеллер Алексей
 
Регистрация: 09.01.2007
Сообщений: 8
По умолчанию

Цитата:
Сообщение от ЧИЖ Посмотреть сообщение
пробовал у себя вот так:
Код:
var
a:array[1..10,1..10] of boolean;
i,j:integer;
begin
readln(j);
for i:=1 to 10 do if i=j then a[i,i]:=true;
for i:=1 to 10 do begin
for j:=1 to 10 do write(a[i,j],'  ');
writeln;
end;
readln;
end.
все прокатывает (указанный элемент массива равен true)
Попробуй сделать дамп переменных (конкретнее, переменной j) она у тебя начинает изменяться только в 3-м цикле, а до этого ее значение не определено (или нуль, никак не могу этот момент запомпнить ), и в первом цикле ты сравниваешь текущее значение i c j = 0, а т.к. начальное значение i ты задал равным 1, то и присваивания в операторе if не происходит. По-моему так.
Шеллер Алексей вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите плиз Victoria Паскаль, Turbo Pascal, PascalABC.NET 1 23.05.2008 22:48
помогите плиз Лузерина Фриланс 5 04.03.2008 23:47
Помогите плиз! Moel БД в Delphi 1 11.08.2007 23:29