Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
marselmell
0 / 0 / 0
Регистрация: 07.12.2012
Сообщений: 3
#1

Минимальный массив из кв. матрицы - C++

07.12.2012, 10:54. Просмотров 302. Ответов 1
Метки нет (Все метки)

Создать одномерный массив из минимальных элементов каждой строки данной квадратной матрицы.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.12.2012, 10:54     Минимальный массив из кв. матрицы
Посмотрите здесь:

Минимальный элемент матрицы C++
C++ Найти минимальный элемент матрицы
Найти минимальный элемент матрицы C++
Сформировать одномерный массив Х из положительных элементов матрицы А, найти минимальный элемент массива Х и его номер C++
Максимальный и минимальный элементы матрицы. C++
Решить уравнение p*x2+d*x+r=0, где p - минимальный элемент матрицы A; d –минимальный элемент матрицы B; r - минимальный элемент матрицы C. C++
Поменять местами столбцы матрицы: столбец, содержащий максимальный элемент матрицы, и столбец, содержащий минимальный элемент матрицы. C++
Как найти минимальный элемент матрицы? C++
C++ Найти максимальный и минимальный элементы матрицы
Найти минимальный элемент матрицы C++
C++ Сформировать одномерный массив как столбец матрицы,содержащий минимальный элемент на побочной диагонали
Минимальный из максимальных элементов матрицы в строках C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fNt
0 / 0 / 0
Регистрация: 29.11.2012
Сообщений: 1
07.12.2012, 14:20     Минимальный массив из кв. матрицы #2
Вот как это вышло у меня...пытаюсь вспомнить С++
Попытка номер один
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
73
74
75
76
77
78
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
 
using namespace std;
 
int main()
{
// объявляем переменные
    int x;
    cout<<"Введите размерность матрицы: ";
    cin>>x;
 
// на основе введеного числа формируем квадратную матрицу
    int array[x][x];
// и формируем одномерный массив, где будут минимальные элементы из каждой строки
    int min_array[x];
 
// заполняем матрицу случайными числами от 0 до 9
    srand(time(0));
 
    for (int i=0; i<x; i++)
        {
            for (int j=0; j<x; j++)
                {
                    array[i][j]=rand()%10;
                }
        }
 
// выводим исходную матрицу на экран
cout<<"\nИсходная матрица:\n";
    for (int i=0; i<x; i++)
        {
            for (int j=0; j<x; j++)
                {
                    cout<<array[i][j]<<" ";
                    if (j==x-1) cout<<"\n";
                }
        }
 
// просматримаем исходную матрицу
// и сортируем методом "пузырька"
// по возрастанию в строках
 
    for (int k=0; k<x; k++)
        {
            for (int i=x-1; i>0; i--)
                {
                    for (int j=0; j<i; j++)
                        {
                            if (array[k][j]>array[k][j+1])      //условие сортировки
                            {
                            int tmp=array[k][j];                //сортируем при помощи временной переменной
                            array[k][j]=array[k][j+1];
                            array[k][j+1]=tmp;
                            }
                        }
                }
        }
 
// теперь все нужные нам минимальные элементы
// стоят на 0-х местах в матрице
// перегоняим их в одномерный массив
    for (int i=0; i<x; i++)
        {
            min_array[i]=array[i][0];
        }
 
// выводим одномерный массив минимальных элементов
cout<<"\nОдномерный массив с минимальными элементами строк исходной матрицы:\n";
    for (int i=0; i<x; i++)
        {
            cout<<min_array[i]<<" ";
        }
 
 
    return 0;
}


Добавлено через 1 час 54 минуты
Вот исходник после отпимизации кода.
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
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main()
{//объявляем переменные
    int x;
    cout<<"\nВведите размерность матрицы: ";
    cin>>x;
// на основе введеного числа формируем квадратную матрицу
    int array[x][x];
// и формируем одномерный массив, где будут минимальные элементы из каждой строки
    int min_array[x];
// заполняем матрицу случайными числами от 0 до 9
// и выводим исходную матрицу на экран
    srand(time(0));
    cout<<"\nИсходная матрица:\n";
    for (int i=0; i<x; i++)
        {for (int j=0; j<x; j++)
                {array[i][j]=rand()%10;
                 cout<<array[i][j]<<" ";
                 if (j==x-1) cout<<'\n';
                }
        }
// просматримаем исходную матрицу
// и сортируем методом "пузырька" по возрастанию в строках,
// т.к. после 1 прогона строки - 1-й элемент становится на своё место.
// Т.о. сразу записываем в одномерный массив и выводим тут же на экран
cout<<"\nОдномерный массив с минимальными элементами строк исходной матрицы:\n";
    for (int k=0; k<x; k++)
        {
            for (int i=x-1; i>0; i--)
                {
                    for (int j=0; j<i; j++)
                        {
                            if (array[k][j]>array[k][j+1])      //условие сортировки
                            {
                             int tmp=array[k][j];                //сортируем при помощи временной переменной
                             array[k][j]=array[k][j+1];
                             array[k][j+1]=tmp;
                            }
                        };
                    min_array[k]=array[k][0];
                };
            cout<<min_array[k]<<" ";
        }
    return 0;
}

Только вот никак не получается убрать еще один цикл, всю голову сломал...
Ведь после прогона всей строки - 1-й элемент становится на своё место,
До:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
for (int k=0; k<x; k++)
        {
            for (int i=x-1; i>0; i--)
                {
                    for (int j=0; j<i; j++)
                        {
                            if (array[k][j]>array[k][j+1])
                            {
                             int tmp=array[k][j];
                             array[k][j]=array[k][j+1];
                             array[k][j+1]=tmp;
                            }
                        };
                    min_array[k]=array[k][0];
                };
            cout<<min_array[k]<<" ";
        }

Убираем цикл по i - получаем
После:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
for (int k=0; k<x; k++)
        {
          for (int j=0; j<x-1; j++)
                        {
                            if (array[k][j]>array[k][j+1])
                            {
                             int tmp=array[k][j];
                             array[k][j]=array[k][j+1];
                             array[k][j+1]=tmp;
                            }
                        };
           min_array[k]=array[k][0];
           cout<<min_array[k]<<" ";
        }

что не хватает по одному прогону в строке. Ведь где-то рядом отгадка, но не лезет в голову.
Yandex
Объявления
07.12.2012, 14:20     Минимальный массив из кв. матрицы
Ответ Создать тему
Опции темы

Текущее время: 13:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru