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

двумерный массив

04.06.2010, 11:55. Показов 1782. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Найти минимальный элемент среди максимальных элементов строк матрицы. Вывести номер строки и столбца для такого элемента(Размерность матрицы задаётся пользователем)

прошу помощи.)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.06.2010, 11:55
Ответы с готовыми решениями:

Сделайте, чтобы двумерный вектор обогнал двумерный массив при заполнении случайными числами
Всем привет! Попробовал сравнить время заполнения векторов в векторе и массивов в массиве...

Как можно вложить двумерный массив в двумерный?
Нужно написать программу перемножения двух матриц размерностью МxМ, элементы которых, матрицы...

Массив: Как скопировать двумерный массив в другой массив?
Как скопировать двумерный массив в другой массив?

Массив: преобразорвать двумерный массив в одномерный и отсортировать его методом пузырька
всем привет. народ помогите с прогой, конкретно с функцией sort (65 строка), она должна двухмерный...

16
46 / 29 / 3
Регистрация: 27.02.2010
Сообщений: 202
04.06.2010, 13:24 2
как-то так...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    x=a[1][1];
    z=a[1][1];
    for (i=1; i<6; i++)
        for (j=1; j<6; j++) 
        {
            if (a[i][j]>x) 
            {
                x=a[i][j];
                k=i;
                l=j;
            } 
            if (a[i][j]<z) 
            {
                z=a[i][j];
                m=i;
                n=j;
            }
    }
    cout<<"максимальный элемент "<< a[k][l] <<"\n";
    cout<<"минимальный элемент "<< a[m][n] <<"\n";
тут совмещенное, ну думаю сможете вычленить необходимое
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
04.06.2010, 17:52 3
о, как!
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
#include <iostream>
#include <iomanip>
#include <set>
#include <algorithm>
#include <iterator>
#include <cstdlib>
#include <ctime>
 
template <typename T>
class Element {
    T _value;
    int _row;
    int _column;
public:
    Element(T v, int r, int c) : _value(v), _row(r), _column(c) {}
    Element() : _value(), _row(-1), _column(-1) {}
    ~Element() {}
    bool operator == (const Element & another) const {
        return _value == another._value;
    }
    bool operator < (const Element & another) const {
        return _value < another._value;
    }
    friend std::ostream & operator << (std::ostream & ost, const Element & e) {
        ost << std::left << std::setw(6) << e._value << std::setw(4) << e._row << e._column;
        return ost;
    }
};
 
int rand_num(){
    return rand() % 100;
}
 
int main(){
    int rows;
    int columns;
    int **matrix;
 
    std::cout << "Rows: ";
    std::cin >> rows;
    std::cout << "Columns: ";
    std::cin >> columns;
 
    srand(time(NULL));
 
    matrix = new int * [ rows ];
    for ( int i = 0; i < rows; ++i ){
        matrix[i] = new int [ columns ];
        std::generate_n(matrix[i], columns, rand_num);
    }
    std::cout << "Matrix:" << std::endl;
    std::cout << std::right;
    for ( int i = 0; i < rows; ++i ){
        for ( int j = 0; j < columns; ++j )
            std::cout << std::setw(2) << std::setfill('0') << matrix[i][j] << ' ';
        std::cout << std::endl;
    }
 
    std::cout << "Maximum elements in ascendant order:" << std::endl;
    std::cout << "(indexes of row and column starts by 0)" << std::endl;
    std::cout << "Value Row Column" << std::endl << "------------------------------" << std::endl;
 
    std::multiset<Element<int> > set;
    for ( int i = 0; i < rows; ++i ){
        int * mxe = (int*)std::max_element(matrix[i], matrix[i] + columns);
        set.insert(Element<int>(*mxe, i, mxe - matrix[i]));
    }
 
    std::cout << std::setfill(' ');
    std::copy(set.begin(), set.end(), std::ostream_iterator<Element<int> >(std::cout, "\n"));
 
    for ( int i = 0; i < rows; ++i )
        delete [] matrix[i];
    delete [] matrix;
 
    return 0;
}
1
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
04.06.2010, 17:56 4
31 строка:
C++
1
return rand() % 100;
2
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
04.06.2010, 18:03 5
neske, Спасибо, поправил. Интересно, почему и так работало?
0
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
04.06.2010, 18:06 6
в Code Blocks не работало)
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
04.06.2010, 18:09 7
Цитата Сообщение от easybudda Посмотреть сообщение
Интересно, почему и так работало?
А вот, почему!
man random
RANDOM(3) BSD Library Functions Manual RANDOM(3)

NAME
random, srandom, srandomdev, initstate, setstate -- better random number
generator; routines for changing generators

LIBRARY
Standard C Library (libc, -lc)

SYNOPSIS
#include <stdlib.h>

long
random(void);

void
srandom(unsigned long seed);
...
тоесть было даже лучше... %)

Добавлено через 1 минуту
Цитата Сообщение от neske Посмотреть сообщение
в Code Blocks не работало)
если бы не это...
1
0 / 0 / 0
Регистрация: 14.05.2010
Сообщений: 21
04.06.2010, 18:31  [ТС] 8
ребят, у меня после ввода размерности матрицы программа вылетает.
что сделать?
0
0 / 0 / 0
Регистрация: 14.05.2010
Сообщений: 21
04.06.2010, 18:59  [ТС] 9
=)
блин, у меня тоже самое, вылетает(
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
04.06.2010, 19:03 10
Blacktender, что вылетает? куда вылетает? на трёх разных ОС проверял, включая винду. за исключением косяка с выводом (к однозначным числам ноль не с той стороны пририсовывался) всё работает. Мало того - в винде мелкомягким компилятором компилил от MSVS 2005. Пишите подробнее по пунктам, что делаете, что происходит. И кстати среду разработки упомянуть не забудьте...
0
0 / 0 / 0
Регистрация: 14.05.2010
Сообщений: 21
04.06.2010, 19:06  [ТС] 11
borland!
компилирует, вылазает окошко (как обычно ) где идет выполнение задачи, ввожу rows и column >enter и всё окошечко исчезает..=(

Добавлено через 22 секунды
раньше такого не было
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
04.06.2010, 19:08 12
День догадок у меня сегодня...

Blacktender, Отсортировать массив по убыванию и по возрастанию - Ваш случай!
А вообще https://www.cyberforum.ru/cpp-... 10807.html прям в шапке висит, чтоб все видели...
0
0 / 0 / 0
Регистрация: 14.05.2010
Сообщений: 21
04.06.2010, 19:21  [ТС] 13
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
#include <iostream>
#include <iomanip>
#include <set>
#include <algorithm>
#include <iterator>
#include <cstdlib>
#include <ctime>
 
template <typename T>
class Element {
    T _value;
    int _row;
    int _column;
public:
    Element(T v, int r, int c) : _value(v), _row(r), _column(c) {}
    Element() : _value(), _row(-1), _column(-1) {}
    ~Element() {}
    bool operator == (const Element & another) const {
        return _value == another._value;
    }
    bool operator < (const Element & another) const {
        return _value < another._value;
    }
    friend std::ostream & operator << (std::ostream & ost, const Element & e) {
        ost << std::left << std::setw(6) << e._value << std::setw(4) << e._row << e._column;
        return ost;
    }
};
 
int rand_num(){
    return rand() % 100;
}
 
int main(){
    int rows;
    int columns;
    int **matrix;
 
    std::cout << "Rows: ";
    std::cin >> rows;
    std::cout << "Columns: ";
    std::cin >> columns;
 
    srand(time(NULL));
 
    matrix = new int * [ rows ];
    for ( int i = 0; i < rows; ++i ){
        matrix = new int [ columns ];
        std::generate_n(matrix, columns, rand_num);
    }
    std::cout << "Matrix:" << std::endl;
    std::cout << std::right;
    for ( int i = 0; i < rows; ++i ){
        for ( int j = 0; j < columns; ++j )
            std::cout << std::setw(2) << std::setfill('0') << matrix[j] << ' ';
        std::cout << std::endl;
    }
 
    std::cout << "Maximum elements in ascendant order:" << std::endl;
    std::cout << "(indexes of row and column starts by 0)" << std::endl;
    std::cout << "Value Row Column" << std::endl << "------------------------------" << std::endl;
 
    std::multiset<Element<int> > set;
    for ( int i = 0; i < rows; ++i ){
        int * mxe = (int*)std::max_element(matrix, matrix + columns);
        set.insert(Element<int>(*mxe, i, mxe - matrix));
    }
 
    std::cout << std::setfill(' ');
    std::copy(set.begin(), set.end(), std::ostream_iterator<Element<int> >(std::cout, "\n"));
 
    for ( int i = 0; i < rows; ++i )
        delete [] matrix;
    delete [] matrix;
 
    return 0;
}
теперь вообще ошибку выдает =( в этой строчке: matrix = new int [ columns ];

([C++ Error] Unit1.cpp(48): E2034 Cannot convert 'int *' to 'int * *')
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
04.06.2010, 19:41 14
Цитата Сообщение от Blacktender Посмотреть сообщение
теперь вообще ошибку выдает =( в этой строчке: matrix = new int [ columns ];
Это Вы как копировали?
Цитата Сообщение от easybudda Посмотреть сообщение
C++
1
2
3
4
matrix = new int * [ rows ]; 
for ( int i = 0; i < rows; ++i ){
  matrix[i] = new int [ columns ];
...
Добавлено через 10 минут
Цитата Сообщение от Blacktender Посмотреть сообщение
C++
1
2
for ( int i = 0; i < rows; ++i )
 delete [] matrix;
Опять косяк! У меня вот, как:
Цитата Сообщение от easybudda Посмотреть сообщение
C++
1
2
for ( int i = 0; i < rows; ++i )
 delete [] matrix[i];
Действительно проблема отсюда скопировать, добавить к заголовкам
C++
1
#include <conio.h>
а перед
C++
1
return 0;
вставить
C++
1
getch();
?
1
0 / 0 / 0
Регистрация: 14.05.2010
Сообщений: 21
04.06.2010, 20:00  [ТС] 15
(((((

set.insert(Element<int>(*mxe, i, mxe - matrix));

[C++ Error] Unit1.cpp(79): E2034 Cannot convert 'int * *' to 'int *'

Добавлено через 5 минут
ну я наверно надоела с этой задачей=(
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
04.06.2010, 20:04 16
Цитата Сообщение от Blacktender Посмотреть сообщение
ну я наверно надоела с этой задачей=(
да, есть немного
вот
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
79
#include <iostream>
#include <iomanip>
#include <set>
#include <algorithm>
#include <iterator>
#include <cstdlib>
#include <ctime>
#include <conio.h>
 
template <typename T>
class Element {
    T _value;
    int _row;
    int _column;
public:
    Element(T v, int r, int c) : _value(v), _row(r), _column(c) {}
    Element() : _value(), _row(-1), _column(-1) {}
    ~Element() {}
    bool operator == (const Element & another) const {
        return _value == another._value;
    }
    bool operator < (const Element & another) const {
        return _value < another._value;
    }
    friend std::ostream & operator << (std::ostream & ost, const Element & e) {
        ost << std::left << std::setw(6) << e._value << std::setw(4) << e._row << e._column;
        return ost;
    }
};
 
int rand_num(){
    return rand() % 100;
}
 
int main(){
    int rows;
    int columns;
    int **matrix;
 
    std::cout << "Rows: ";
    std::cin >> rows;
    std::cout << "Columns: ";
    std::cin >> columns;
 
    srand(time(NULL));
 
    matrix = new int * [ rows ];
    for ( int i = 0; i < rows; ++i ){
        matrix[i] = new int [ columns ];
        std::generate_n(matrix[i], columns, rand_num);
    }
    std::cout << "Matrix:" << std::endl;
    std::cout << std::right;
    for ( int i = 0; i < rows; ++i ){
        for ( int j = 0; j < columns; ++j )
            std::cout << std::setw(2) << std::setfill('0') << matrix[i][j] << ' ';
        std::cout << std::endl;
    }
 
    std::cout << "Maximum elements in ascendant order:" << std::endl;
    std::cout << "(indexes of row and column starts by 0)" << std::endl;
    std::cout << "Value Row Column" << std::endl << "------------------------------" << std::endl;
 
    std::multiset<Element<int> > set;
    for ( int i = 0; i < rows; ++i ){
        int * mxe = (int*)std::max_element(matrix[i], matrix[i] + columns);
        set.insert(Element<int>(*mxe, i, mxe - matrix[i]));
    }
 
    std::cout << std::setfill(' ');
    std::copy(set.begin(), set.end(), std::ostream_iterator<Element<int> >(std::cout, "\n"));
 
    for ( int i = 0; i < rows; ++i )
        delete [] matrix[i];
    delete [] matrix;
 
    getch();
    return 0;
}
мышкой выделяйте копируйте, вставляйте в свой редактор, ничего не меняя сохраняйте, компилируйте, запускайте.
1
0 / 0 / 0
Регистрация: 14.05.2010
Сообщений: 21
04.06.2010, 20:09  [ТС] 17
я так и копировала мышом

Теперь всё идеально работает!!
Очень вам благодарна!!слов нет!!
0
04.06.2010, 20:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.06.2010, 20:09
Помогаю со студенческими работами здесь

Чем отличаются двумерный символьный массив и массив указателей на строки
Двумерный символьный массив и массив указателей на строки. Собственно чем они отличаются? Заранее...

Массив: Как можно задать и вывести симметричный двумерный массив?
как можно задать и вывести симметричный массив

Дан двумерный массив 3х3. Получить одномерный массив из из отрицательных элементов матрицы.
Пожалуйста, помогите решить простым методом задачку, просто не могу понять смысл ее выполнения....

Дан двумерный массив размерностью 4*5. Сформировать одномерный массив
Дан двумерный массив размерностью 4*5, заполненный целыми числами с клавиатуры. Сформировать...


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

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