Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
1 / 1 / 0
Регистрация: 27.05.2013
Сообщений: 16
1

Как правильно организовать цикл для сравнения?

05.06.2013, 19:58. Показов 1314. Ответов 5
Метки нет (Все метки)

Всем привет!!!!!!!
помогите пожалуйста с вопросом. Не могу организовать правильный цикл. Мне нужно сравнивать первую строку
со всей таблицей полностью if (StringGrid1->Cells[i][1] == StringGrid1->Cells[i][j] потом вторую строку
if (StringGrid1->Cells[i][2] == StringGrid1->Cells[i][j] со всей таблицей. Пробовал поставить еще один цикл, но что-то не получается.

вот полный код

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
for ( int i =1; i<= StringGrid1->ColCount -1; i++)
{
for ( int j =1; j<= StringGrid1->RowCount -1; j++)
{
if (StringGrid1->Cells[i][1] == StringGrid1->Cells[i][j])
{
 
if(j==1)
Memo1->Lines->Add("");
Memo1->Text =   "  "+ Memo1->Text +   "   "+  "S" + StrToInt(j);
 
}
}
}
и после этого мне нужно сравнивать if(j==1) переход на следующую строку потом if(j==2) на вторую и так далее.
как это все сделать по циклу? помогите пожалуйста

Добавлено через 3 минуты
мне нужно каждую следующую строку сравнивать со всей таблицей полностью.
0
Заказывайте контрольные, курсовые и дипломы здесь.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.06.2013, 19:58
Ответы с готовыми решениями:

Как правильно организовать цикл для построения графика?
Нужно построить график экспоненты на промежутке с учетом изменения величины шага построения. В...

Как правильно организовать цикл for?
Имеем два числа, например 30 и 42 Нужно в цикле перебрать их например 3 раза по следующему...

Как правильно организовать следующий цикл?
Привет всем. У меня есть список(List) с вопросами и ответами. Каждому вопросу есть несколько...

Подскажите как правильно организовать цикл
Есть бд, необходимо вывести товары на вкладку Каталог. Вывожу товары в таблицу, в 1 строке должно...

5
2 / 2 / 0
Регистрация: 02.07.2009
Сообщений: 52
05.06.2013, 21:49 2
Строку или ячейку ?

Что с чем надо сравнить ?
1
1 / 1 / 0
Регистрация: 27.05.2013
Сообщений: 16
06.06.2013, 16:48  [ТС] 3
мне нужно сравнивать каждую ячейку одной строки со всей таблицей, потом перейти на следующую строку которая
ниже и опять сравнивать со всей таблицей. Программа у меня работает правильно, но только если я все буду делать в ручную сравнивать if (StringGrid1->Cells[i][1] == StringGrid1->Cells[i][j]) , Cells[i][2]==Cells[i][1] , Cells[i][3]==Cells[i][j],
Cells[i][4]==Cells[i][j] и так далее. Это все в ручную писать долго и программу повторять множество раз придется.
я хочу сделать это одним циклом например if ( Cells[i][k]==Cells[i][j] )

вот полный код

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void __fastcall TForm1::Button6Click(TObject *Sender)
{
AnsiString sStr,sSub;
int len,pos;
int j;
int mas[100];
int moshnost = 0;
String Massiv;
 Memo1->Lines->Add("Относительно S1");
 
 for ( int i =1; i<= StringGrid1->ColCount -1; i++)
{
for ( int j =1; j<= StringGrid1->RowCount -1; j++)
{
if (   StrToInt(StringGrid1->Cells[i][1]) == StrToInt(StringGrid1->Cells[i][j])  )
{
 
if(j==1)     //  здесь у меня проверяет встречается ли единица в массиве и разбивает массив на части и потом в memo
Memo1->Lines->Add("");    // мне нужно для 2-и 3-и и тд проверить и разбивать одномерный массив  и потом в memo
Memo1->Text =   "  "+ Memo1->Text +   "   "+  "S" + StrToInt(j);
 
}
}
}
Принцип разбиения простой он работает у меня но только относительно 1-й строки
вот массив 1 2 3 5 1 2 3 6 1 5 6 8 9 6 1 5 8 9 6 6
он разобьет его на порядок разбиения Если в массиве есть 1-ка то разбиваем на другую строку в Memo
1 2 3 5
1 2 3 6 Получили похожие элементы относительно первой строки
1 5 6 8 9 6
1 5 8 9 6 6

Потом когда j==2 будет другой массив например 2 5 8 9 10 9 2 5 6 7 8 9 2 3 5 8 2 1 4 6 9 7 2 3 6 7
он разобьет его на
2 5 8 9 10 9 порядок разбиения Если в массиве есть 2-ка то разбиваем на другую строку в Memo
2 5 6 7 8 9
2 3 5 8 Получили похожие элементы относительно второй строки
2 1 4 6 9 7
2 3 6 7

и т. д

потом относительно 3-й 4-й... думаю все просто должно быть.
0
Практикантроп
4679 / 2599 / 496
Регистрация: 23.09.2011
Сообщений: 5,579
06.06.2013, 17:22 4
Ваши объяснения еще больше запутали; примерно я бы делал так: в двойном цикле по столбцам и строкам выбирал ячейку таблицы, и затем только для нее третий цикл - по строкам таблицы
C++
1
 if (Grid->Rows[index]->CommaText.Pos(cellule))  /*действия при совпадении*/
1
1 / 1 / 0
Регистрация: 27.05.2013
Сообщений: 16
06.06.2013, 17:54  [ТС] 5
спасибо!!!! я вроде разобрался.
у меня такой вопрос возник. мне нужно искать похожие строки в Memo и если любая строка является подстрокой другой строки то мы её удаляем вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
for (int j = 1; j<=Memo1->Lines->Count-1; j++)
{
sStr = Memo1->Lines->Strings[i];
sSub = Memo1->Lines->Strings[j];
len = sSub.Length();
pos = sStr.Pos(sSub);
if ((sStr.SubString(pos,len) == sSub)&& (sStr!="Относительно S1")    )
 
 {
  Memo1->Lines->Delete(j);
 
}
 
}
 
}
Но он полностью по всему memo проверяет а мне нужно в пределах интервала


S1
S1 S3 S6
S1 S8
S1 // Тут нужно отдельно сократить
S1
S1
S1
Относительно S1

S2
S2 S7 S9
S2
S2 // тут тоже отдельно
S2 S5
S2
S2
Относительно S2

S3 S1
S3 S6
S3 И тут
S3
S3
S3
S3
а мой код полностью сокращает он проверяет все строки на совпадения

как можно подогнать правильно код? заранее благодарю.

Добавлено через 14 минут
После сокращения должно получиться вот так в поле Memo
S1 S3 S6
S1 S8

Относительно S1

S2 S7 S9

S2 S5

Относительно S2

S3 S1
S3 S6
S3 И тут
0
1 / 1 / 0
Регистрация: 27.05.2013
Сообщений: 16
06.06.2013, 18:50  [ТС] 6
вот исходник Теперь помогите в мемо сокротить подстроки
например
относительно s1
S1 S5
s4 S8
s
s9 S10
относительно s2
S2 S5 S6
s5 S6
s2
s3 S4
s2

Должен быть результат
относительно s1
S1 S5
s4 S8
s9 S10



относительно s2
S2 S5 S6
s3 S4
0
Вложения
Тип файла: rar bekproga.rar (835.8 Кб, 3 просмотров)
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.06.2013, 18:50

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Как правильно организовать цикл при вычислениях
Имеется формула: Условие первой точки: \varepsilon c1:=15*{10}^{-5} \varepsilon c2:=0...

Как правильно считать строку для сравнения?
как правильно считать строку для сравнения ?

Как правильно писать IF для сравнения строк
Есть у меня текст: tt = int.Parse(comboBox1.Text); ct = int.Parse(comboBox2.Text);...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.