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

Занулить элементы в матрице между min и max - C++

Восстановить пароль Регистрация
 
stray911
1 / 1 / 0
Регистрация: 05.11.2013
Сообщений: 23
11.01.2014, 20:52     Занулить элементы в матрице между min и max #1
сообственно нужно написать функцию которая будет занулять элементы между минимальным и максимальным
ну я смог найти места минимального и максимального элемента
но как занулить все между ними ?
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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#include <iostream>
#include <time.h>
using namespace std;
 
void RandMat(int **matrix, int n, int m)
{
    for(int i=0;i<n;i++){
        for(int j=0;j<m;j++)
        {
            matrix[i][j]=rand()%100;
        }
    }
}
void output(int *mas, int n)
{
    cout<<endl<<endl;
    for(int i=0;i<n;i++)
        cout<<mas[i]<<" ";
    cout<<endl;
    
}
void output(int **matrix, int n, int m)
{
    cout<<endl<<endl;
    for(int i=0;i<n;i++, cout<<endl)
        for(int j=0;j<m;j++)
            cout<<matrix[i][j]<<" ";
    cout<<endl;
    
}
 
void findMin(int **matrix, int n, int m)
{
    
    
    int min =0;
    int max =0;
    int imin =-1;
    int jmin =-1;
    int imax =-1;
    int jmax =-1;
    min = matrix[0][0];
    max = matrix[0][0];
    
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            if (matrix[i][j] <= min)
            {
                min = matrix[i][j];
                imin = i;
                jmin = j;
            }
            if (matrix[i][j] >= max)
            {
                max = matrix[i][j];
                imax = i;
                jmax = j;
                
            }
        }
    }
    cout << "min = " << min << " pos = " << imin << " " << jmin  << endl << "max = " << max << " pos = " << imax << " " << jmax<< endl;
    
    for (int i=matrix[imin][jmin]; i<matrix[imax][jmax]; i++) // чую чтото неладное тут
        for (int j=matrix[imin][jmin]; j<matrix[imax][jmax]; j++)
    {
        matrix[i][j]=0;
        cout<<matrix[i][j]<<'\t';
    }
}
 
int findMax(int *mass, int n)
{
    int max=mass[0];
    for(int i=0;i<n;i++)
        if(max<mass[i])
            max=mass[i];
    return max;
}
 
 
 
int main()
{
    setlocale(0,"rus");
    srand(time(NULL));
    int m,n;
    cout<<"Введите кол-во строк: ";
    cin>>m;
    cout<<"Введите кол-во столбцов: ";
    cin>>n;
    int **matrix = new int*[n];
    for(int i=0;i<n;i++)
        matrix[i] = new int[m];
 
    RandMat(matrix, n,m);
    output(matrix, n,m);
    findMin(matrix, n,m);
    
    
    for(int i=0;i<n;i++)
        delete [] matrix[i];
    delete [] matrix;
    cin.get();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2014, 20:52     Занулить элементы в матрице между min и max
Посмотрите здесь:

C++ Вывести элементы, находящиеся между min и max
C++ Max и min в матрице
C++ Добавить в конец массива элементы, расположенные между min и max элементами исходного массива, исключая нули
Составить матрицу, элементы которой равны разности между min и max элементов матрицы А, расположенных в закрашенной области C++
C++ Нахождение max и min в матрице . и поменять их местами
C++ В матрице найти элементы min и max и найти в каких индексах они находятся (столбец и строка)
Поменять местами max и min четных строк в квадратной матрице C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
11.01.2014, 20:53     Занулить элементы в матрице между min и max #2
Цитата Сообщение от stray911 Посмотреть сообщение
ну я смог найти места минимального и максимального элемента
но как занулить все между ними ?
Что значит "между ними в матрице"? Это значит занулить строки между ними? Столбцы? Подматрицу? Или что?
stray911
1 / 1 / 0
Регистрация: 05.11.2013
Сообщений: 23
11.01.2014, 20:54  [ТС]     Занулить элементы в матрице между min и max #3
Цитата Сообщение от Dani Посмотреть сообщение
Что значит "между ними в матрице"? Это значит занулить строки между ними? Столбцы? Подматрицу? Или что?
занулить все элементы между ними
вот как взучит задание
2. Створити функцію , яка у масиві обнуляє елементи, що знаходяться між максимумом та мінімумом.
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
11.01.2014, 20:56     Занулить элементы в матрице между min и max #4
Цитата Сообщение от stray911 Посмотреть сообщение
занулить все элементы между ними
вот как взучит задание
Все элементы между ними - это какие?
stray911
1 / 1 / 0
Регистрация: 05.11.2013
Сообщений: 23
11.01.2014, 20:57  [ТС]     Занулить элементы в матрице между min и max #5
Цитата Сообщение от Dani Посмотреть сообщение
Все элементы между ними - это какие?
ну к примеру матрица

7 4 5
6 8 5
7 6 9

должно быть

7 4 0
0 0 0
0 0 9
Arkaniy
 Аватар для Arkaniy
106 / 106 / 6
Регистрация: 29.08.2012
Сообщений: 453
11.01.2014, 20:57     Занулить элементы в матрице между min и max #6
Я так подозреваю, что речь идет об одномерном массиве.
stray911
1 / 1 / 0
Регистрация: 05.11.2013
Сообщений: 23
11.01.2014, 20:59  [ТС]     Занулить элементы в матрице между min и max #7
Цитата Сообщение от Arkaniy Посмотреть сообщение
Я так подозреваю, что речь идет об одномерном массиве.
я так думаю что, да
передалать в одномерный?
но вроде как суть от этого не меняется
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
11.01.2014, 21:04     Занулить элементы в матрице между min и max #8
Цитата Сообщение от stray911 Посмотреть сообщение
но вроде как суть от этого не меняется
всё поменяется. Тогда можно легко заменить на 0 все элементы между min и max так:
(пусть a - позиция минимума, b - позиция максимума):
C++
1
for(int i=std::min(a, b)+1; i<std::max(a, b); ++i) array[i] = 0;
Arkaniy
 Аватар для Arkaniy
106 / 106 / 6
Регистрация: 29.08.2012
Сообщений: 453
11.01.2014, 21:06     Занулить элементы в матрице между min и max #9
В двумерном массиве понятие между тем-то и тем-то можно растолковать по разному. В одномерном же всё предельно ясно.
В коде функция findMin расписана раза в 4 больше, чем findMах. Вот тут что-то неладное.

При нахождении минимума достаточно объявить 1 переменную min и инициализировать её значением хотя бы на 1 больше от максимально возможного. Дальше в цикле сравнивать с каждым элементом.
С максимумом тоже самое, только всё наоборот.
stray911
1 / 1 / 0
Регистрация: 05.11.2013
Сообщений: 23
11.01.2014, 21:06  [ТС]     Занулить элементы в матрице между min и max #10
Цитата Сообщение от Dani Посмотреть сообщение
всё поменяется. Тогда можно легко заменить на 0 все элементы между min и max так:
(пусть a - позиция минимума, b - позиция максимума):
C++
1
for(int i=std::min(a, b)+1; i<std::max(a, b); ++i) array[i] = 0;
можешь написать фунцию которая бы это сделала?
Dani
1263 / 621 / 50
Регистрация: 11.08.2011
Сообщений: 2,236
Записей в блоге: 2
Завершенные тесты: 1
11.01.2014, 21:07     Занулить элементы в матрице между min и max #11
Цитата Сообщение от stray911 Посмотреть сообщение
ну я смог найти места минимального и максимального элемента
Цитата Сообщение от stray911 Посмотреть сообщение
можешь написать фунцию которая бы это сделала?
Это не должно составить тебе труда.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2014, 21:40     Занулить элементы в матрице между min и max
Еще ссылки по теме:

В матрице 3 х 3 найти max и min значения C++
Вывести элементы массива, находящихся между его min и max. Перегрузка функций для int и double C++
Не получается удалить столбец с max и min элементом в матрице C++
Найти в матрице А max элемент, все элементы в столбце до max умножить на 2 C++
Поменять max и min элемент в матрице C++

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

Или воспользуйтесь поиском по форуму:
stray911
1 / 1 / 0
Регистрация: 05.11.2013
Сообщений: 23
11.01.2014, 21:40  [ТС]     Занулить элементы в матрице между min и max #12
Цитата Сообщение от Arkaniy Посмотреть сообщение
В двумерном массиве понятие между тем-то и тем-то можно растолковать по разному. В одномерном же всё предельно ясно.
В коде функция findMin расписана раза в 4 больше, чем findMах. Вот тут что-то неладное.

При нахождении минимума достаточно объявить 1 переменную min и инициализировать её значением хотя бы на 1 больше от максимально возможного. Дальше в цикле сравнивать с каждым элементом.
С максимумом тоже самое, только всё наоборот.
то названия старые остались, findMin из изначальной вообще ничего не осталось, я в ней пытался написать нахождение мин макс и зануление сразу

Добавлено через 53 секунды
Цитата Сообщение от Dani Посмотреть сообщение
Это не должно составить тебе труда.
спасибо немного прояснилось)

Добавлено через 19 минут
Цитата Сообщение от Dani Посмотреть сообщение
Это не должно составить тебе труда.
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
#include <iostream>
//#include <conio.h>
using namespace std;
 
void function1(int *mas, int n)
{
 
    
  
    int imin=0;
    for(int i=1;i<n;i++)
    {
        if (mas[imin]>mas[i])
            imin=i;
    }
    cout<<"min="<<mas[imin]<<"\tindex="<<imin<<endl;
    
    int imax=0;
    for(int i=1;i<n;i++)
    {
        if (mas[imax]<mas[i])
            imax=i;
    }
    cout<<"max="<<mas[imax]<<"\tindex="<<imax<<endl;
    
    if (imin<imax)
    for(int i=mas[imin]+1; i<mas[imax]; ++i)
    {
        mas[i] = 0;
        cout<<mas[i];
    }
}
 
int main()
{
   srand(time(NULL));
    const int n=5;
    int mas[n];
    
    for(int i=0;i<n;i++)
    {
        mas[i]=rand()%15;
        cout<<mas[i]<<" ";
    }
    cout<<endl;
 
    
 
    function1(mas, n);
    
    
    cin.get();
    return 0;
}
спасай не работает точнее не делает что нужно

Добавлено через 12 минут
все понял
просто не там был cout
вынес из цикда, все впорядке
Yandex
Объявления
11.01.2014, 21:40     Занулить элементы в матрице между min и max
Ответ Создать тему
Опции темы

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