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

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

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

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

11.01.2014, 20:52. Просмотров 820. Ответов 11
Метки нет (Все метки)

сообственно нужно написать функцию которая будет занулять элементы между минимальным и максимальным
ну я смог найти места минимального и максимального элемента
но как занулить все между ними ?
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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2014, 20:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Занулить элементы в матрице между min и max (C++):

Найти max и min, если min левее max, то среднее арифметическое между ними - C++
#include &lt;iostream.h&gt; #include &lt;stdio.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; void main() { int n,a; int...

Вывести элементы, находящиеся между min и max - C++
помогите написать приложение на С вывести элементы массива целых чисел, которые находится между max и min показать в ВС

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

В матрице найти элементы min и max и найти в каких индексах они находятся (столбец и строка) - C++
Задание: Дан массив 20x5. В нем найти элементы min и max и найти в каких индексах они находятся. (столбец и строка). Вроде реализовал....

Составить матрицу, элементы которой равны разности между min и max элементов матрицы А, расположенных в закрашенной области - C++
Здравствуйте, есть такая задача: Задана матрица А вещественных чисел размера N*N (N&lt;=20, задаётся как параметр). Построить по ней матрицу...

Добавить в конец массива элементы, расположенные между min и max элементами исходного массива, исключая нули - C++
добавить в конец массива элементы, расположенные между минимальными и максимальными элементами исходного массива, исключая нулевые

11
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
11.01.2014, 20:53 #2
Цитата Сообщение от stray911 Посмотреть сообщение
ну я смог найти места минимального и максимального элемента
но как занулить все между ними ?
Что значит "между ними в матрице"? Это значит занулить строки между ними? Столбцы? Подматрицу? Или что?
0
stray911
1 / 1 / 0
Регистрация: 05.11.2013
Сообщений: 23
11.01.2014, 20:54  [ТС] #3
Цитата Сообщение от Dani Посмотреть сообщение
Что значит "между ними в матрице"? Это значит занулить строки между ними? Столбцы? Подматрицу? Или что?
занулить все элементы между ними
вот как взучит задание
2. Створити функцію , яка у масиві обнуляє елементи, що знаходяться між максимумом та мінімумом.
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
11.01.2014, 20:56 #4
Цитата Сообщение от stray911 Посмотреть сообщение
занулить все элементы между ними
вот как взучит задание
Все элементы между ними - это какие?
0
stray911
1 / 1 / 0
Регистрация: 05.11.2013
Сообщений: 23
11.01.2014, 20:57  [ТС] #5
Цитата Сообщение от Dani Посмотреть сообщение
Все элементы между ними - это какие?
ну к примеру матрица

7 4 5
6 8 5
7 6 9

должно быть

7 4 0
0 0 0
0 0 9
0
Arkaniy
106 / 106 / 6
Регистрация: 29.08.2012
Сообщений: 453
11.01.2014, 20:57 #6
Я так подозреваю, что речь идет об одномерном массиве.
0
stray911
1 / 1 / 0
Регистрация: 05.11.2013
Сообщений: 23
11.01.2014, 20:59  [ТС] #7
Цитата Сообщение от Arkaniy Посмотреть сообщение
Я так подозреваю, что речь идет об одномерном массиве.
я так думаю что, да
передалать в одномерный?
но вроде как суть от этого не меняется
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
11.01.2014, 21:04 #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;
0
Arkaniy
106 / 106 / 6
Регистрация: 29.08.2012
Сообщений: 453
11.01.2014, 21:06 #9
В двумерном массиве понятие между тем-то и тем-то можно растолковать по разному. В одномерном же всё предельно ясно.
В коде функция findMin расписана раза в 4 больше, чем findMах. Вот тут что-то неладное.

При нахождении минимума достаточно объявить 1 переменную min и инициализировать её значением хотя бы на 1 больше от максимально возможного. Дальше в цикле сравнивать с каждым элементом.
С максимумом тоже самое, только всё наоборот.
0
stray911
1 / 1 / 0
Регистрация: 05.11.2013
Сообщений: 23
11.01.2014, 21:06  [ТС] #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;
можешь написать фунцию которая бы это сделала?
0
Dani
1393 / 637 / 57
Регистрация: 11.08.2011
Сообщений: 2,282
Записей в блоге: 2
Завершенные тесты: 1
11.01.2014, 21:07 #11
Цитата Сообщение от stray911 Посмотреть сообщение
ну я смог найти места минимального и максимального элемента
Цитата Сообщение от stray911 Посмотреть сообщение
можешь написать фунцию которая бы это сделала?
Это не должно составить тебе труда.
0
stray911
1 / 1 / 0
Регистрация: 05.11.2013
Сообщений: 23
11.01.2014, 21:40  [ТС] #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
вынес из цикда, все впорядке
0
11.01.2014, 21:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.01.2014, 21:40
Привет! Вот еще темы с ответами:

Max и min в матрице - C++
С клавиатуры вводится массив целых чисел. Подсчитать сумму элементов над главной диагональю. Вывести номера строк, на пересечении...

В матрице 3 х 3 найти max и min значения - C++
На практике задали 2 задачи по C++ вот сижу вообще не понимаю что, куда хотя пол года назад решал их ) Кому не сложно помогите: 1. В...

Поменять max и min элемент в матрице - C++
Ребят, помогите, не могу додуматься, как это делается... Нам дана матрица, допустим 3x3 или NxM, как сделать сравнивать все элементы...

Нахождение max и min в матрице . и поменять их местами - C++
Доброго времени суток столкнулась с этой программой в лоб в лоб . И ни как не могу вывести матрицу с этими указателями, я в них запуталась...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

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