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

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

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

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

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

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

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

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

В двумерном массиве найти в каждой строке максимальный элемент, затем среди этих чисел выбрать минимальный C++
Найти минимальный и максимальный элемент в массиве C++
В целочисленном массиве из 10 элементов найти максимальный элемент и заменить все элементы, значения которых нечетные на полученное значение максималь C++
C++ В матрице найти максимальный и минимальный элемент,переставить строки в которых они находится
C++ Найти в массиве минимальный и максимальный элементы. Вывести в порядке возрастания все целые числа из интервала
C++ Найти минимальный элемент строки в двумерном массиве
C++ Найти максимальный и минимальный элемент каждого столбца и строки матрицы
В двумерном массиве заменить все четные элементы на минимальный элемент матрицы C++
В массиве заменить отрицательные элементы ниже главной диагонали на минимальный элемент строки C++
В массиве из 10 целых чисел заменить все элементы, стоящие на четных местах, на минимальный элемент C++
C++ Для каждой строки матрицы определить минимальный элемент, среди которых найти максимальный
C++ В массиве найти максимальный элемент и заменить им все нулевые элементы, с вызовом функции

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5549 / 2583 / 235
Регистрация: 01.11.2011
Сообщений: 6,391
Завершенные тесты: 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 / 2583 / 235
Регистрация: 01.11.2011
Сообщений: 6,391
Завершенные тесты: 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
220 / 220 / 55
Регистрация: 19.02.2013
Сообщений: 1,430
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
220 / 220 / 55
Регистрация: 19.02.2013
Сообщений: 1,430
21.01.2014, 18:13     Найти в массиве максимальный элемент и заменить все вышестоящие на минимальный из последней строки #6
Найти в массиве максимальный элемент и заменить все вышестоящие на минимальный из последней строки
Yandex
Объявления
21.01.2014, 18:13     Найти в массиве максимальный элемент и заменить все вышестоящие на минимальный из последней строки
Ответ Создать тему
Опции темы

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