Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.01.2008, 20:09
Dastik Dastik вне форума
Прохожий
 
Регистрация: 07.01.2008
Сообщения: 1
Репутация: 10
По умолчанию Проблема с циклом For

Добрый вечер господа.
Есть код:

var i,j,s,ss:integer;
arr:array[0..4,0..4]of integer;
begin
for i:=0 to 4 do
for j:=0 to 4 do
arr[i,j]:=StrToInt(StringGrid1.Cells[j,i]);//Заполняем массив
{счетчики i,j идут соответственно от нуля к четырем}
ss:=0;
s:=0;
for i:=0 to 4 do //А вот здесь они считаются от ПЯТИ к НУЛЮ!
begin
for j:=0 to 4 do //И здесь тоже.
if arr[i,j]=arr[i,j+1] then
ss:=ss+1;
if ss>s then
s:=ss;
ss:=0;
end;

Программирую на Дельфи уже достаточно давно, а такого еще ни разу не
видел.
Что подскажите?
Ответить с цитированием
  #2  
Старый 07.01.2008, 23:22
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Цитата:
//А вот здесь они считаются от ПЯТИ к НУЛЮ!
Хмм... Неясно !
Не могут они считаться в обратную сторому! Может проблема в чем-то другом?
Проверь все остальное!

Цитата:
if arr[i,j]=arr[i,j+1] then
А что ты будешь делать если у тя j будет равно 4 - какой будет результат arr[i,j+1].
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз

Последний раз редактировалось Yurk@, 07.01.2008 в 23:25.
Ответить с цитированием
  #3  
Старый 07.01.2008, 23:51
Аватар для Oleg
Oleg Oleg вне форума
Активный
 
Регистрация: 29.11.2007
Адрес: Оренбургская обл., Россия
Сообщения: 261
Репутация: 15
По умолчанию

Может два витка цикла совпадают и получается новое значение. Непонятно...
Ответить с цитированием
  #4  
Старый 07.01.2008, 23:57
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
По умолчанию

Два витка не могут совпадать!
for i:=0 to 4 do
Переменная каждый раз обнуляется!
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз

Последний раз редактировалось Yurk@, 08.01.2008 в 00:01.
Ответить с цитированием
  #5  
Старый 08.01.2008, 00:11
Аватар для Oleg
Oleg Oleg вне форума
Активный
 
Регистрация: 29.11.2007
Адрес: Оренбургская обл., Россия
Сообщения: 261
Репутация: 15
Сообщение

Ну это я знаю, из-за чего же тогда, пытаюсь тоже решить. А вдруг ?
Ответить с цитированием
  #6  
Старый 08.01.2008, 00:29
Аватар для Oleg
Oleg Oleg вне форума
Активный
 
Регистрация: 29.11.2007
Адрес: Оренбургская обл., Россия
Сообщения: 261
Репутация: 15
Восклицание Подойдет ?

Это так(никакой 5 не вылезает) ?
Код:
var i,j,s,ss:integer;
arr:array[0..4,0..4]of integer;
begin
for i:=0 to 4 do begin
for j:=0 to 4 do begin
arr[i,j]:=StrToInt(StringGrid1.Cells[j,i]);//Заполняем массив
ss:=0;
s:=0;
end;
end;
for i:=0 to 4 do begin
for j:=0 to 4 do begin
if arr[i,j]=arr[i,j+1] then
ss:=ss+1;
if ss>s then
s:=ss;
ss:=0;
end;
end;
end;

Последний раз редактировалось Oleg, 08.01.2008 в 00:31.
Ответить с цитированием
  #7  
Старый 08.01.2008, 00:51
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
Подмигивание

Я тя немножко дополню:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
i,j,s,ss:integer;
arr:array[0..4,0..4]of integer;

begin
ss:=0;
s:=0;
for i:=0 to 4 do
for j:=0 to 4 do
begin
if Length(StringGrid1.Cells[i,j])<>0 then //проверка на наличие текста в ячейке (не исключено что его там нет)
arr[i,j]:=StrToInt(StringGrid1.Cells[i,j]);
end;

for i:=0 to 4 do
for j:=0 to 4 do
begin
if arr[i,j]=arr[i,j+1] then
ss:=ss+1;
if ss>s then
s:=ss;
ss:=0;
end;
end;
Кста, Oleg все верно сказал!
Поддерживаю!
НИКАКОГО 5 там нет !
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз

Последний раз редактировалось Yurk@, 08.01.2008 в 00:53.
Ответить с цитированием
  #8  
Старый 09.01.2008, 05:41
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Dastik отключи оптимизацию для этого куска кода.
Ответить с цитированием
  #9  
Старый 09.01.2008, 11:13
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

Цитата:
Сообщение от Yurk@
Не могут они считаться в обратную сторому!
Неправда.
Код:
for i:=4 downto 0 do
...
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #10  
Старый 09.01.2008, 20:28
Аватар для Yurk@
Yurk@ Yurk@ вне форума
Специалист
 
Регистрация: 07.09.2007
Адрес: Украина, г. Днепропетровск
Сообщения: 892
Версия Delphi: 7 + ОгнеПтица
Репутация: выкл
Хорошо

Цитата:
Сообщение от The Shadow
Неправда.
Код:
for i:=4 downto 0 do

Абсолютно с тобой согласен!
Но у него код выглядит иначе!
Код:
for i:=0 to 4 do //при таком коде обратно он считать не будет
__________________
Поживу - увижу, Доживу - узнаю, Выживу - учту.
[P.S.]->Выражая благодарность за помощь - Вы получаете шанс на помощь в следующий раз
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:25.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025