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

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

Восстановить пароль Регистрация
 
Elembivos
0 / 0 / 0
Регистрация: 23.10.2013
Сообщений: 14
21.01.2014, 15:52     Найти в массиве максимальный элемент и заменить все вышестоящие на минимальный из последней строки #1
1. В массиве все элементы, стоящие выше максимального элемента, заменить на минимальный элемент последней строки.

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

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

найти минимальный и максимальный элемент в массиве C++
В целочисленном массиве из 10 элементов найти максимальный элемент и заменить все элементы, значения которых нечетные на полученное значение максималь C++
Дан массив целых чисел. Найти В этом массиве минимальный элемент т и максимальный элемент м. Вывести сумму элементов от минимального до максимального C++
C++ Классы. В массиве чисел размером 6х6 элементов найти максимальный элемент, минимальный элемент и их индексы
C++ Найти в массиве максимальный элемент и минимальный элемент, и поменять их местами
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 1
21.01.2014, 15:59     Найти в массиве максимальный элемент и заменить все вышестоящие на минимальный из последней строки #2
Цитата Сообщение от Elembivos Посмотреть сообщение
В массиве все элементы, стоящие выше максимального элемента, заменить на минимальный элемент последней строки.
Нарисуйте картинку. Или перефразируйте. А то ничего не понятно.
Elembivos
0 / 0 / 0
Регистрация: 23.10.2013
Сообщений: 14
21.01.2014, 16:02  [ТС]     Найти в массиве максимальный элемент и заменить все вышестоящие на минимальный из последней строки #3
вот именно в этом и проблема, что картинки не дано
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2563 / 233
Регистрация: 01.11.2011
Сообщений: 6,337
Завершенные тесты: 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
Вежливость-главное оружие
 Аватар для some_name
219 / 219 / 55
Регистрация: 19.02.2013
Сообщений: 1,419
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
Вежливость-главное оружие
 Аватар для some_name
219 / 219 / 55
Регистрация: 19.02.2013
Сообщений: 1,419
21.01.2014, 18:13     Найти в массиве максимальный элемент и заменить все вышестоящие на минимальный из последней строки #6
Найти в массиве максимальный элемент и заменить все вышестоящие на минимальный из последней строки
Yandex
Объявления
21.01.2014, 18:13     Найти в массиве максимальный элемент и заменить все вышестоящие на минимальный из последней строки
Ответ Создать тему
Опции темы

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