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

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

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

Найти в массиве максимальный элемент и заменить все вышестоящие на минимальный из последней строки - C++

21.01.2014, 15:52. Просмотров 486. Ответов 5
Метки нет (Все метки)

1. В массиве все элементы, стоящие выше максимального элемента, заменить на минимальный элемент последней строки.

2.Обнулить элементы тех строк, в которых встречается более двух нулевых элементов.

Заранее Благодарю.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2014, 15:52     Найти в массиве максимальный элемент и заменить все вышестоящие на минимальный из последней строки
Посмотрите здесь:

В массиве найти максимальный элемент и заменить им все нулевые элементы, с вызовом функции - C++
#include <iostream> using namespace std; void Zamena(double a, int n, double max) { for (int i = 0; i < n; i++) if (a >...

В целочисленном массиве из 10 элементов найти максимальный элемент и заменить все элементы, значения которых нечетные на полученное значение максималь - C++
В целочисленном массиве из 10 элементов найти максимальный элемент и заменить все элементы, значения которых нечетные на полученное...

Найти минимальный и максимальный элемент в массиве - C++
найти минимальный и максимальный элемент в массиве скажите где ошибка в данном скрипте использую dev c++ #include <iostream.h> ...

Классы. В массиве чисел размером 6х6 элементов найти максимальный элемент, минимальный элемент и их индексы - C++
В массиве чисел размером 6х6 элементов найти максимальный элемент, минимальный элемент и их индексы. ...

В двумерном массиве заменить все четные элементы на минимальный элемент матрицы - C++
Задание: В двумерном массиве заменить все четные элементы на минимальный элемент матрицы. Зарание спасибо)

В массиве заменить отрицательные элементы ниже главной диагонали на минимальный элемент строки - C++
Матрица 5х5. Заменить все отрицательные элементы ниже главной диагонали на минимальный элемент соответствующей строки и отобразить этот...

Найти максимальный и минимальный элемент каждого столбца и строки матрицы - C++
Здравствуйте!Дали задание: 1.Создать матрицу размером 5х5. 2.Вывести матрицу на экран. 3.Найти макс и мин элемент каждого столбца и...

В двумерном массиве найти в каждой строке максимальный элемент, затем среди этих чисел выбрать минимальный - C++
1.в двумерном массиве найти в каждой строке максимальный элемент, затем среди этих чисел выбрать минимальный. 2.характеристикой столбца...

Найти минимальный элемент строки в двумерном массиве - C++
как найти минимальный элемент строки в двумерном массиве

В матрице найти максимальный и минимальный элемент,переставить строки в которых они находится - C++
Здравствуйте уважаемые форумчане. Я столкнулся с проблемой вот такой: Разработайте программу обработки массивов. Входные данные введите с...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
5593 / 2627 / 240
Регистрация: 01.11.2011
Сообщений: 6,461
Завершенные тесты: 1
21.01.2014, 15:59     Найти в массиве максимальный элемент и заменить все вышестоящие на минимальный из последней строки #2
Цитата Сообщение от Elembivos Посмотреть сообщение
В массиве все элементы, стоящие выше максимального элемента, заменить на минимальный элемент последней строки.
Нарисуйте картинку. Или перефразируйте. А то ничего не понятно.
Elembivos
0 / 0 / 0
Регистрация: 23.10.2013
Сообщений: 14
21.01.2014, 16:02  [ТС]     Найти в массиве максимальный элемент и заменить все вышестоящие на минимальный из последней строки #3
вот именно в этом и проблема, что картинки не дано
SatanaXIII
Супер-модератор
Эксперт С++
5593 / 2627 / 240
Регистрация: 01.11.2011
Сообщений: 6,461
Завершенные тесты: 1
21.01.2014, 16:36     Найти в массиве максимальный элемент и заменить все вышестоящие на минимальный из последней строки #4
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
#include <iostream.h>
 
int main()
{
srand((unsigned) time(0));
const int n = 5;
int arr[n][n] = { 0 };
 
for( int i=0; i<n; i++ )    //// Заполнили
  for( int j=0; j<n; j++ )    //
    arr[j][i] = rand()%99;  ////
 
 
int min = arr[n-1][0];       //// Нашли минимальный в последней строке
for( int j=1; j<n; j++ )       //
  if( arr[n-1][j] < min )      //
    min = arr[n-1][j];       ////
 
int max = arr[0][0], max_i = 0;  //// Нашли максимальный элемент и его высоту
for( int i=0; i<n; i++ )           //
  for( int j=0; j<n; j++ )         //
    if( arr[i][j] > max )          //
      {                            //
      max = arr[i][j];             //
      max_i = i;                   //
      }                          ////
 
for( int i=0; i<max_i; i++ )  //// Заменили все элементы выше максимального
  for( int j=0; j<n; j++ )        //  на минимальный из последней строки
    arr[i][j] = min;            ////
 
for( int i=0; i<n; i++ )          //// Вывод
  {                                 //
  for( int j=0; j<n; j++ )          //
    {
    cout.width(3);
    cout <<  arr[i][j] << " ";       //
    }
  cout << endl;                     //
  }                               ////
 
cin.ignore();
return 0;
}
some_name
Вежливость-главное оружие
221 / 221 / 55
Регистрация: 19.02.2013
Сообщений: 1,431
21.01.2014, 17:11     Найти в массиве максимальный элемент и заменить все вышестоящие на минимальный из последней строки #5
Вот, как вариант :

Кликните здесь для просмотра всего текста

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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#include "stdafx.h"
#include<iostream>
#include<iomanip>
 
using namespace std;
//создает матрицу размер size
int** matrix_constructor(int size)
{
    int** matrix_new = new int* [size]; 
    for (int i = 0; i < size; i++) matrix_new[i] = new int[size];
    return matrix_new;
}
//удаляем матрицу
void matrix_destructor(int** matrix, int size)
{   
    for (int i = 0; i < size; i++) delete matrix[i];
    delete matrix;  
}
заполняет матрицу : если random_fill == true - случайно, иначе вводит ручками
void matrix_fill(int** matrix, int size, bool random_fill = true)
{
    if(random_fill) 
    {
        srand((unsigned)time(NULL));
        for (int i = 0; i < size; i++)
            for (int j = 0; j < size; j++)
            {
                int temp = matrix[i][j] = rand() % 80 + 10; 
                if(temp > 70) matrix[i][j] = 0;
                else matrix[i][j] = temp;
            }
    }
    else
    {
        for(int i = 0; i < size; i++)
        {
            for(int j = 0; j < size; j++)
            {
                cout<<"Enter {"<<i<<":"<<j<<"}"<<"element"; cin>>matrix[i][j];
            }
            cout<<endl;
        }
    }
}
//печатаем матрицу
void matrix_print(int** matrix, int size)
{
    for (int i = 0; i < size; i++)
    {
        for (int j = 0; j < size; j++) cout<<matrix[i][j]<<" ";     
        cout<<endl;
    }
    cout<<endl;
}
 
void matrix_copy(int** orignal, int** copy, int size)
{
    for (int i = 0; i < size; i++)  
        for (int j = 0; j < size; j++)
            copy[i][j] = orignal[i][j];
}
//первый пункт задания
void matrix_action1(int** matrix, int size)
{   
    int maximal_index[2], //строка и столбец максимального элемента
        minimal_last_row = matrix[size - 1][0], //минимальный элемент последней строки
        maximal = matrix[0][0]; //максимальный элемент матрицы
 
    int** copy = matrix_constructor(size);//делаем 
    matrix_copy(matrix, copy, size);////////копию матрицы
 
    for (int i = 0; i < size; i++)
    {                   
        for (int j = 0; j < size; j++)
        {            
            if(copy[i][j] > maximal)    //если текущий больше максимального
            {
                maximal = copy[i][j];//значит максимальным становится текущий
                maximal_index[0] = i;//строка
                maximal_index[1] = j;//стролбец
            }
            if(i == size - 1)//если мы на последней строке, то ищем минимум
                if(copy[i][j] < minimal_last_row)
                    minimal_last_row = copy[i][j];          
        }       
    }   
 
         //заменяем все элементы до максимального на минимум последней строки
    for (int i = 0; i <= maximal_index[0]; i++) 
        for (int j = 0; j <= (i == maximal_index[0] ? maximal_index[1] : size - 1); j++)        
            copy[i][j] = minimal_last_row;
        
    matrix_print(copy, size);//выводи отредактированную матрицу
    matrix_destructor(copy, size);//удаляем ее
}
 
//второй пункт задания
void matrix_action2(int** matrix, int size)
{
    int counter_temp = 0;//временный счетчик нулей
 
    int** copy = matrix_constructor(size);//делаем копию
    matrix_copy(matrix, copy, size);//матрицы
 
    for (int i = 0; i < size; i++)
    {
        int counter_null = 0;//счетчик нулей в текущей строке
        for (int j = 0; j < size; j++)  
        {           
            if(!copy[i][j]) counter_null++;//если ноль, то увеличиваем счетчик
            if(counter_temp == 2) copy[i - 1][j] = 0;//если временный счетчик равен 2, значик в предыдущей строке было 2 нуля, значит обнуляем все ее элементы
        }
        counter_temp = counter_null;
    }
 
    matrix_print(copy, size);//выводи отредактированную матрицу
    matrix_destructor(copy, size);//удаляем ее
}
 
 
int main()
{
    int size;
    int** matrix;
 
    cout<<"Matrix size : "; cin>>size;
 
    matrix = matrix_constructor(size);
    matrix_fill(matrix, size);
    matrix_print(matrix, size);
    matrix_action1(matrix, size);   
    matrix_action2(matrix, size);   
    matrix_destructor(matrix, size);
 
    getchar(); getchar();
 
    return 0;
}
some_name
Вежливость-главное оружие
221 / 221 / 55
Регистрация: 19.02.2013
Сообщений: 1,431
21.01.2014, 18:13     Найти в массиве максимальный элемент и заменить все вышестоящие на минимальный из последней строки #6
Найти в массиве максимальный элемент и заменить все вышестоящие на минимальный из последней строки
Yandex
Объявления
21.01.2014, 18:13     Найти в массиве максимальный элемент и заменить все вышестоящие на минимальный из последней строки
Ответ Создать тему
Опции темы

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