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

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

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

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

11.01.2014, 20:52. Просмотров 795. Ответов 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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2014, 20:52     Занулить элементы в матрице между min и max
Посмотрите здесь:

Вывести элементы, находящиеся между 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++
добавить в конец массива элементы, расположенные между минимальными и максимальными элементами исходного массива, исключая нулевые

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

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dani
1300 / 637 / 56
Регистрация: 11.08.2011
Сообщений: 2,280
Записей в блоге: 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
1300 / 637 / 56
Регистрация: 11.08.2011
Сообщений: 2,280
Записей в блоге: 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
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
1300 / 637 / 56
Регистрация: 11.08.2011
Сообщений: 2,280
Записей в блоге: 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
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
1300 / 637 / 56
Регистрация: 11.08.2011
Сообщений: 2,280
Записей в блоге: 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
Еще ссылки по теме:

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

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

Найти в матрице А max элемент, все элементы в столбце до max умножить на 2 - C++
Всем доброго вечера. Возникла проблема с задачей, прошу помочь. В матрице А найти max элемент, все элемент, расположенные в столбце до...

Не получается удалить столбец с max и min элементом в матрице - C++
Не получается удалить столбец с max и min элементом в матрице!!! int main() { randomize(10); int n,min=0,max=0,k,p;...

Поменять местами max и min четных строк в квадратной матрице - C++
Дана квадратная матрица. Размерность вводится. Поменять местами max и min четных строк. #include &lt;iostream&gt; #include &lt;iomanip&gt; ...


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

Или воспользуйтесь поиском по форуму:
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
Ответ Создать тему
Опции темы

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