Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 14.12.2012
Сообщений: 25

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

08.04.2013, 20:35. Показов 2068. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста, надо упорядочить каждую строку матрицы по возрастанию абсолютных величин ПУЗЫРЬКОВЫМ методом.
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
#include "stdafx.h"
#include <iostream>
#include <time.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_CTYPE,"Russian");
    int m, n;
    cout << "Введите количество строк от 1 до 10: \n";
    cin >> m;
    if (m>=1 && m<=10) cout<<"\n";
    else {cout<<"Так нельзя\n"; return 0;}
    cout << "Введите количество столбцов от 1 до 10: \n";
    cin >> n;
    if (n>=1 && n<=10) cout<<"\n";
    else {cout<<"Так нельзя\n"; return 0;}
    int **arr = new int *[m];
    for (int i = 0; i<m; i++)
    {
            arr[i] = new int[n];
            for (int j = 0; j<n; j++)
            {
                arr[i][j] = (rand()%99)-50;
                printf("%4i", arr[i][j]); 
            }
            cout << endl; 
    }
    cout<<"\n";
}
Заранее благодарен.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.04.2013, 20:35
Ответы с готовыми решениями:

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

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

Упорядочить каждую строку матрицы по возрастанию
Здравствуйте. Через пару часов лабу сдавать, а я уже сколько суток не могу догадаться как делать одно задание. Вот: Упорядочить каждую...

14
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
09.04.2013, 14:36
Nikkun,

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
// obr.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include <iostream>
#include <time.h>
#include <math.h>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_CTYPE,"Russian");
    int m, n;
    cout << "Введите количество строк от 1 до 10: \n";
    cin >> m;
    if (m>=1 && m<=10) cout<<"\n";
    else {cout<<"Так нельзя\n"; return 0;}
    cout << "Введите количество столбцов от 1 до 10: \n";
    cin >> n;
    if (n>=1 && n<=10) cout<<"\n";
    else {cout<<"Так нельзя\n"; return 0;}
    int **arr = new int *[m];
 
    for (int i = 0; i<m; i++)
    {
            arr[i] = new int[n];
            for (int j = 0; j<n; j++)
            {
                arr[i][j] = (rand()%99)-50;
                printf("%4i", arr[i][j]); 
            }
            cout << endl; 
    }
 
    for(int i = 0; i<m; i++)
        for(int j = 0; j<n-1; j++)
            for(int k = j + 1; k < n; k++)
            {
                if(abs(arr[i][j]) > abs(arr[i][k]))
                {
                    int t;
                    t = arr[i][j];
                    arr[i][j] = arr[i][k];
                    arr[i][k] = t;
                }
            }
 
 
    cout << endl << endl;
    for (int i = 0; i<m; i++)
    {
            for (int j = 0; j<n; j++)
            {
                printf("%4i", arr[i][j]); 
            }
            cout << endl; 
    }
    cout<<"\n";
}
1
0 / 0 / 0
Регистрация: 14.12.2012
Сообщений: 25
09.04.2013, 17:28  [ТС]
Спасибо большое, а не подскажите как сделать методом вставки?
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
#include "stdafx.h"
#include <iostream>
#include <time.h>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_CTYPE,"Russian");
    int m, n;
    cout << "Введите количество строк от 1 до 10: \n";
    cin >> m;
    if (m>=1 && m<=10) cout<<"\n";
    else {cout<<"Так нельзя\n"; return 0;}
    cout << "Введите количество столбцов от 1 до 10: \n";
    cin >> n;
    if (n>=1 && n<=10) cout<<"\n";
    else {cout<<"Так нельзя\n"; return 0;}
    int **arr = new int *[m];
 
    for (int i = 0; i<m; i++)
    {
            arr[i] = new int[n];
            for (int j = 0; j<n; j++)
            {
                arr[i][j] = (rand()%99)-50;
                printf("%4i", arr[i][j]); 
            }
            cout << endl; 
    }
    int shift=0;
    int comparison=0;
    printf ("Метод пузырька:");
    for(int i = 0; i<m; i++)
        for(int j = 0; j<n-1; j++)
            for(int k = j + 1; k < n; k++)
            {
                if(abs(arr[i][j]) > abs(arr[i][k]))
                {
                    int t;
                    t = arr[i][j];
                    arr[i][j] = arr[i][k];
                    arr[i][k] = t;
                    shift++;
                }
                comparison++;
            }
 
 
    cout << endl << endl;
    for (int i = 0; i<m; i++)
    {
            for (int j = 0; j<n; j++)
            {
                printf("%4i", arr[i][j]); 
            }
            cout << endl; 
    }
    cout<<"\n";
    printf ("-------------------------------------------------------------\n");
    printf ("| Метод сортировки | Кол-во перестановок | Кол-во сравнений |\n");
    printf ("-------------------------------------------------------------\n");
    printf ("| Пузырьковый      | %19i | %16i |\n", shift, comparison);
}
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
09.04.2013, 18:54
Nikkun, вот вам функция

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
template< class T >
void insertSort(T** a, int str, int stb) 
{
    T tmp;
    for(int i = 0, j, k; i < str; ++i)
        for(k = 1; k < stb; ++k)
        {
            tmp = a[i][k]; 
            for(j = k - 1; j >= 0 && abs(tmp) < abs(a[i][j]); --j) 
                a[i][j + 1] = a[i][j];    
            a[i][j + 1] = tmp;   
        }
}
1
0 / 0 / 0
Регистрация: 14.12.2012
Сообщений: 25
09.04.2013, 21:29  [ТС]
template< class T > , я не понимаю что это и что с ним надо делать , поясните пожалуйста.
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
09.04.2013, 21:35
Nikkun, так пойдет?

C++
1
2
3
4
5
6
7
8
9
10
11
12
void insertSort(int **a, int str, int stb) 
{
    int tmp;
    for(int i = 0, j, k; i < str; ++i)
        for(k = 1; k < stb; ++k)
        {
            tmp = a[i][k]; 
            for(j = k - 1; j >= 0 && abs(tmp) < abs(a[i][j]); --j) 
                a[i][j + 1] = a[i][j];    
            a[i][j + 1] = tmp;   
        }
}
Добавлено через 1 минуту
Nikkun, а вообще, это шаблон, я он позволяет функции работать не только с целыми типа, но и вещественными, строковыми, и все благодарю шаблону)
1
0 / 0 / 0
Регистрация: 14.12.2012
Сообщений: 25
09.04.2013, 22:05  [ТС]
А как вывести значения сортировки в функции main ?
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
09.04.2013, 22:10
Nikkun, матрица итак уже будет отсортирована, просто выведите ее и все)
1
0 / 0 / 0
Регистрация: 14.12.2012
Сообщений: 25
10.04.2013, 16:41  [ТС]
Блин, что то я не понимаю как это сделать...

Добавлено через 26 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void insertSort(int **a, int str, int stb) 
{
    int tmp;
    for(int i = 0, j, k; i < str; ++i)
        for(k = 1; k < stb; ++k)
        {
            tmp = a[i][k]; 
            for(j = k - 1; j >= 0 && abs(tmp) < abs(a[i][j]); --j) 
                a[i][j + 1] = a[i][j];    
            a[i][j + 1] = tmp;   
        }
for(int i = 0, j, k; i < str; ++i)
for(k = 1; k < stb; ++k)
{
{
cout<<a[i][k];
cout<<" ";
}
cout<<"\n";
}
          
}
Добавлено через 41 минуту
А всё, разобрался, спасибо большое)
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
10.04.2013, 16:45
Nikkun, старайтесь еще и код оформлять, читать легче будет, соответственно и разбираться
1
0 / 0 / 0
Регистрация: 14.12.2012
Сообщений: 25
12.04.2013, 19:20  [ТС]
А не подскажете как сделать сортировку методом отбора?
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
12.04.2013, 21:04
Nikkun, вот

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
68
69
#include <iostream>
#include <time.h>
#include <math.h>
using namespace std;
 
template <typename T>
void select(T** arr, int str, int stb){
    int i, j, z;
    bool exchange;
    T t;
 
    for(int k = 0; k < str; ++k){
        for(i = 0; i < stb-1; ++i){
            exchange = false;
            z = i;
            t = arr[k][i];
            for(j = i + 1; j < stb; ++j){
                if(abs(arr[k][j]) < abs(t)){
                    z = j;
                    t = arr[k][j];
                    exchange = true;
                }
            }
            if(exchange){
                arr[k][z] = arr[k][i];
                arr[k][i] = t;
            }
        }
    }
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_CTYPE,"Russian");
    int m, n;
    cout << "Введите количество строк от 1 до 10: \n";
    cin >> m;
    if (m>=1 && m<=10) cout<<"\n";
    else {cout<<"Так нельзя\n"; return 0;}
    cout << "Введите количество столбцов от 1 до 10: \n";
    cin >> n;
    if (n>=1 && n<=10) cout<<"\n";
    else {cout<<"Так нельзя\n"; return 0;}
    int **arr = new int *[m];
 
    for (int i = 0; i<m; i++)
    {
            arr[i] = new int[n];
            for (int j = 0; j<n; j++)
            {
                arr[i][j] = (rand()%99)-50;
                printf("%4i", arr[i][j]); 
            }
            cout << endl; 
    }
 
    select(arr, n, m);
 
    cout << endl << endl;
    for (int i = 0; i<m; i++)
    {
            for (int j = 0; j<n; j++)
            {
                printf("%4i", arr[i][j]); 
            }
            cout << endl; 
    }
    cout<<"\n";
}
1
0 / 0 / 0
Регистрация: 14.12.2012
Сообщений: 25
14.04.2013, 20:13  [ТС]
Мне уже неловко вас просить, а не поможете с быстрой сортировкой?
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,028
Записей в блоге: 1
14.04.2013, 23:42
Алгоритмы сортировок
0
381 / 352 / 113
Регистрация: 17.05.2012
Сообщений: 1,049
15.04.2013, 18:43
Nikkun,

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
68
69
#include <iostream>
#include <time.h>
#include <math.h>
using namespace std;
 
void quick(int* a, int n) {
   int i = 0, j = n;        // поставить указатели на исходные места
   int temp, p;
 
   p = a[ n>>1 ];        // центральный элемент
 
   //p=n/2;
   // процедура разделения
   do {
      while ( abs(a[i]) < abs(p) ) i++;
      while ( abs(a[j]) > abs(p) ) j--;
 
      if (i <= j) {
         temp = a[i]; a[i] = a[j]; a[j] = temp;
         i++; j--;
      }
   } while ( i<=j );
 
   // рекурсивные вызовы, если есть, что сортировать
   if ( j > 0 ) quick(a, j);
   if ( n > i ) quick(a+i, n-i);
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_CTYPE,"Russian");
    int m, n;
    cout << "Введите количество строк от 1 до 10: \n";
    cin >> m;
    if (m>=1 && m<=10) cout<<"\n";
    else {cout<<"Так нельзя\n"; return 0;}
    cout << "Введите количество столбцов от 1 до 10: \n";
    cin >> n;
    if (n>=1 && n<=10) cout<<"\n";
    else {cout<<"Так нельзя\n"; return 0;}
    int **arr = new int *[m];
 
    for (int i = 0; i<m; i++)
    {
            arr[i] = new int[n];
            for (int j = 0; j<n; j++)
            {
                arr[i][j] = (rand()%99)-50;
                printf("%4i", arr[i][j]); 
            }
            cout << endl; 
    }
 
    for (int v=0; v<n; v++)
    {
        quick(arr[v], n-1);
    }
 
    cout << endl << endl;
    for (int i = 0; i<m; i++)
    {
            for (int j = 0; j<n; j++)
            {
                printf("%4i", arr[i][j]); 
            }
            cout << endl; 
    }
    cout<<"\n";
}
Добавлено через 40 минут
Nikkun, и вот сортировка Шелла

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
68
69
70
71
72
#include <iostream>
#include <time.h>
#include <math.h>
using namespace std;
 
void InsertSort(int arr[], unsigned len, unsigned step) 
{
   unsigned i, j;
   int key;
   for (i = step; i < len; i += step) 
   {
      key = arr[i];
      j = i;
      while ((j > 0) && (abs(arr[j-step]) > abs(key)))
      {
         arr[j] = arr[j-step];
         j -= step;
      }
      arr[j] = key;
   }
 }
 
void ShellSort(int arr[], unsigned len)
{
   unsigned step = len / 2;
   while (step)
   {
      InsertSort(arr, len, step--);
   }
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_CTYPE,"Russian");
    int m, n;
    cout << "Введите количество строк от 1 до 10: \n";
    cin >> m;
    if (m>=1 && m<=10) cout<<"\n";
    else {cout<<"Так нельзя\n"; return 0;}
    cout << "Введите количество столбцов от 1 до 10: \n";
    cin >> n;
    if (n>=1 && n<=10) cout<<"\n";
    else {cout<<"Так нельзя\n"; return 0;}
    int **arr = new int *[m];
 
    for (int i = 0; i<m; i++)
    {
            arr[i] = new int[n];
            for (int j = 0; j<n; j++)
            {
                arr[i][j] = (rand()%99)-50;
                printf("%4i", arr[i][j]); 
            }
            cout << endl; 
    }
 
    for (int v=0; v<n; v++)
    {
        ShellSort(arr[v], n);
    }
 
    cout << endl << endl;
    for (int i = 0; i<m; i++)
    {
            for (int j = 0; j<n; j++)
            {
                printf("%4i", arr[i][j]); 
            }
            cout << endl; 
    }
    cout<<"\n";
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.04.2013, 18:43
Помогаю со студенческими работами здесь

Упорядочить каждую строку матрицы по возрастанию
Задана матрица А ,порядка 6 на 6.упорядочить каждую строку матрици в возрастном порядке.Определить максимальное значение и их кординаты в...

Упорядочить каждую строку матрицы по возрастанию элементов
Разработать программу, которая вводит целочисленную матрицу из n строк и m столбцов. Упорядочить каждую строку по возрастанию элементов....

Упорядочить каждую строку матрицы в данной программе по возрастанию ее элементов
Упорядочить каждую строку матрицы в данной программе по возрастанию ее элементов. Например дана матрица 2 1 9 -&gt; а результат...

Упорядочить элементы предпоследней строки матрицы по возрастанию абсолютных значений
program c5; uses crt; var i,j,m,n:integer; a:array of real; x:array of real; s,p,tmp,y:real; Begin ...

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru