Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 22.12.2015
Сообщений: 19
1

Упорядочить строки массива по невозрастанию значений первых элементов строк

11.06.2016, 10:55. Показов 1122. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задание: Упорядочить строки массива по невозрастанию значений первых элементов строк.
Делаю это всё в C++ Builder XE8.
Вот что пока сделал, но я всё никак не могу сделать.
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
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
void __fastcall TForm1::Button1Click(TObject *Sender)
{
try
{
    StringGrid1->ColCount=StrToInt(LabeledEdit1->Text);
    StringGrid1->RowCount=StrToInt(LabeledEdit2->Text);
    StringGrid2->ColCount=StrToInt(LabeledEdit1->Text);
    StringGrid2->RowCount=StrToInt(LabeledEdit2->Text);
    }
catch(...)
{
ShowMessage("Вводите только цифры");
}
 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
try
{
int mas[10][10];
int max, index=0,buf=0,z=0,j=0;
for(int j=0; j<StringGrid1->RowCount; j++)
{
    for(int i=0; i<StringGrid1->ColCount; i++)
        {
            mas[j][i]=StrToInt(StringGrid1->Cells[i][j]);
        }
}
for(int j=0; j<StringGrid1->RowCount; j++)
{
    for(int i=0; i<StringGrid1->ColCount; i++)
        {
            StringGrid2->Cells[i][j]=(StringGrid1->Cells[i][j]);
        }
}
max=mas[0][0];
    for( int i=0; i<StringGrid1->ColCount; i++)
    {
        if (mas[i][j]<mas[i][j+1])
        {
        buf=mas[i][j];
        mas[i][j]=mas[i+1][0];
        mas[i+1][j]=buf;
        index=mas[i][j];
        break;
        }
    }
for(int i=0; i<StringGrid1->ColCount; i++)
{
StringGrid2->Cells[i][0]=mas[i][0];
mas[i][j]=StrToInt(StringGrid2->Cells[i][j]);
    if(mas[i][0]>mas[i+1][0])
    {
        z = mas[i][0];
        mas[i][0]=mas[i+1][0];
        mas[i+1][0]=z;
    }
}
LabeledEdit3->Text=IntToStr(max);
    }
catch(...)
{
ShowMessage("Вводите только цифры");
}
 
}
Добавлено через 22 часа 45 минут
Сам сделал. Скину код, если кому надо будет.
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
void __fastcall TForm1::Button2Click(TObject *Sender)
{
try
{
    double mas[100][100];
    double temp;
    for (int i = 0; i < StringGrid1->RowCount; i++)
    {
        for (int j = 0; j < StringGrid1->ColCount; j++)
        {
            for (int i = 0; i < StringGrid1->RowCount; i++)
            {
                mas[i][j]=StrToFloat(StringGrid1->Cells[j][i]);
                if (mas[i][0]>mas[i-1][0])
                {
                    temp=mas[i][0];
                    mas[i][0]=mas[i-1][0];
                    mas[i-1][0]=temp;
                }
            }
        }
    }
    //ShowMessage(max);
    for (int j = 0; j < StringGrid2->ColCount; j++)
    {
        for (int i = 0; i < StringGrid2->RowCount; i++)
        {
 
            StringGrid2->Cells[j][i]=FloatToStr(mas[i][j]) ;//StringGrid1->Cells[j][i];
 
        }
    }
}
catch(...)
{
ShowMessage("Вводите только цифры");
}
 
}
//---------------------------------------------------------------------------
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.06.2016, 10:55
Ответы с готовыми решениями:

Упорядочить столбцы матрицы по невозрастанию значений наименьших элементов столбцов
Помогите пожалуйста Составить программу: Упорядочить столбцы массива по не возрастанию значений...

Упорядочить строки матрицы по возрастанию их первых элементов
Cделал наподобие как на форуме что-то не получается.(запутался что-то):-...

Упорядочить строки в матрице по возрастанию их первых элементов
в очень плохих отношениях с массивами и выводом в стринг рид нужно упорядочить строки в матрице по...

Упорядочить массив по невозрастанию элементов второго столбца
3.Дан двумерный массив, содержащий 4 строки и 4 столбца. Элементами массива являются вещественные...

2
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32989 / 21295 / 8180
Регистрация: 22.10.2011
Сообщений: 36,588
Записей в блоге: 8
11.06.2016, 12:08 2
Цитата Сообщение от Vikel42 Посмотреть сообщение
Сам сделал.
Не то сделал. Ты не упорядочил строки по какому-то признаку, а просто упорядочил данные первого столбца. Все остальные столбцы остались нетронутыми. Вот так упорядочиваются именно строки:

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
class TMyGrid : public TStringGrid
{
public:
    using TStringGrid::MoveRow;
};
 
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    TMyGrid *grid = reinterpret_cast<TMyGrid*>(StringGrid2);
    for (int r = 0; r < StringGrid1->RowCount; r++)
    {
        grid->Rows[r]->CommaText = StringGrid1->Rows[r]->CommaText;
    }
    for (int r = 0; r < grid->RowCount; r++)
    {
        for (int x = grid->RowCount - 1; x > r; x--)
        {
            if (grid->Cells[0][x] > grid->Cells[0][x - 1])
            {
                grid->MoveRow(x - 1, x);
            }
        }
    }
}
, и не надо никаких дополнительных массивов...
0
0 / 0 / 1
Регистрация: 22.12.2015
Сообщений: 19
11.06.2016, 15:08  [ТС] 3
Мой код не работает. Если последний элемент самый большой, то он почему то не ставится на первое место. И ещё не может сортировать отрицательные элементы. Вместо них выдает нули.
Мне по требованию препода надо выводить отсортированные строки в новый стринггрид.
0
11.06.2016, 15:08
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.06.2016, 15:08
Помогаю со студенческими работами здесь

Упорядочить строки массива по не возрастанию значений первых элементов строк
Составить программу обработки матрицы размерности NxM. Выполнить программу для N=3, M=4. В...

Упорядочить строки матрицы по невозрастанию значений сумм элементов строк
Помогите, пожалуйста. Дана действительная матрица размера n•m (n&lt;=8, m&lt;=15). Упорядочить...

Упорядочить строки матрицы по невозрастанию значений наибольших элементов строк
Дана действительная матрица размера n•m (n&lt;=10, m&lt;=10). Упорядочить (переставить) строки матрицы по...

Упорядочить (переставить) строки матрицы по невозрастанию значений наибольших элементов строк
Дана действительная матрица размерности n * m. Упорядочить (переставить) строки матрицы по...


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

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